Advertisement
YanuarHamzah

API DANAMON - Swagger - 20190701

Jul 1st, 2019
1,630
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 93.14 KB | None | 0 0
  1. openapi: 3.0.0
  2. servers:
  3. # Added by API Auto Mocking Plugin
  4. - description: SwaggerHub API Auto Mocking
  5. url: https://virtserver.swaggerhub.com/YanuarHamzah/API_DANAMON/D_0_1
  6. - description: SwaggerHub API Auto Mocking
  7. url: https://virtserver.swaggerhub.com/YanuarHamzah/testYH/D_0_1
  8. info:
  9. description: This is a draft API for BTN Project. You can find out more about this on JIRA / Trello
  10. version: "D.0.1"
  11. title: API DANAMON PROJECT
  12. contact:
  13. email: yanuar.hamzah@invisee.com
  14. license:
  15. name: Apache 2.0
  16. url: 'http://www.apache.sSshorg/licenses/LICENSE-2.0.html'
  17.  
  18.  
  19. paths:
  20. /package/category:
  21. post:
  22. tags:
  23. - PRODUCT LIST
  24. summary: show category of product (in Fund Package)
  25. operationId: postPackageCategory
  26. description: |
  27.  
  28. Body Request :
  29.  
  30. 1. token = token valid from login
  31.  
  32. Response :
  33.  
  34. Showing product category from lookup_line with token valid.
  35.  
  36. 1. id = lookup_line.lookup_id
  37.  
  38. 2. code = lookup_line.code
  39.  
  40. 3. categoryName = lookup_line.value
  41.  
  42.  
  43. lookup_line join with lookup_header (lookup_line.category_id = lookup_header.category_id = 20). And retrive data with lookup_line.publish_status = t.
  44.  
  45. requestBody:
  46. content:
  47. application/json:
  48. schema:
  49. $ref: '#/components/schemas/paramGetListProduct'
  50.  
  51. responses:
  52. '200':
  53. description: load success
  54. content:
  55. application/json:
  56. schema:
  57. $ref: '#/components/schemas/responseProductCategory'
  58. '500':
  59. description: internal server error
  60.  
  61. /package/list:
  62. post:
  63. tags:
  64. - PRODUCT LIST
  65. summary: show list of product (in Fund Package)
  66. operationId: postPackageList
  67. description: |
  68.  
  69. Body Request :
  70.  
  71. 1. token = token valid from login
  72.  
  73. 2. agent =
  74.  
  75. Response :
  76.  
  77. Showing fund package list where fund_packages.fund_package_status = APP and token customer is valid.
  78.  
  79. 1. type_code = lookup_line.code (join lookup_line.lookup_id = fund_package_category.pkg_category_id) ;
  80.  
  81. 2. package_type = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id)
  82.  
  83. 3. last_nav_date = ut_product_fund_prices.price_date (join fund_package_products.fund_packages_id = fund_packages. fund_packages_id; ambil ut_product_id ; join ut_product_fund_prices.products_id = ut_products.products_id). limit 1 / TOP 1 && order by created date desc
  84.  
  85. 4. image = fund_packages.package_image (join fundpackage id)
  86.  
  87. 5. last_nav = ut_product_fund_prices.bid_price (mengacu join point 3)
  88.  
  89. 6. code = fund_packages.package_code
  90.  
  91. 7. perf_oneyear
  92.  
  93. 8. name = fund_packages.fund_package_name
  94.  
  95. 9. id = fund_packages.fund_package_id
  96.  
  97. 10. total_fund =
  98.  
  99. 11. recommended =
  100.  
  101. 12. prospectus_file = ut_products.prospectus_file (fund_package_products.ut_products_id = ut_products.product_id)
  102.  
  103. 13. fact_sheet_file = ut_products.fund_fact_sheet_key (fund_package_products.ut_products_id = ut_products.product_id)
  104.  
  105. requestBody:
  106. content:
  107. application/json:
  108. schema:
  109. $ref: '#/components/schemas/paramGetListProduct'
  110.  
  111. responses:
  112. '200':
  113. description: load success
  114. content:
  115. application/json:
  116. schema:
  117. $ref: '#/components/schemas/responseProductList'
  118. '500':
  119. description: internal server error
  120.  
  121. /package/detail:
  122. post:
  123. tags:
  124. - PRODUCT LIST
  125. summary: show product detail (fund package detail) where fund_packages.package_code = body_request.code and and token customer is valid.
  126.  
  127. operationId: postPackageListDetail
  128. description: |
  129.  
  130. Body Request :
  131.  
  132. 1. token = token valid from login
  133.  
  134. 2. Code = code compare to fund_packages.package_code
  135.  
  136.  
  137. Response :
  138.  
  139. Showing fund package list detail where fund_packages.package_code = bodyRequest.Code
  140.  
  141. 1. perf_oneyear
  142.  
  143. 2.last_nav_date = ut_product_fund_prices.price_date (join fund_package_products.fund_packages_id = fund_packages. fund_packages_id; ambil ut_product_id ; join ut_product_fund_prices.products_id = ut_products.products_id). limit 1 / TOP 1 && order by created date DESC
  144.  
  145. 3. last_nav = ut_product_fund_prices.bid_price (mengacu join point 2)
  146.  
  147. 4. prospectus_file = ut_products.prospectus_file (fund_package_products.ut_products_id = ut_products.product_id)
  148.  
  149. 5. fact_sheet_file = ut_products.fund_fact_sheet_key (fund_package_products.ut_products_id = ut_products.product_id)
  150.  
  151. 6. description = fund_packages.package_desc
  152.  
  153. 7. minimal_subscribe = fund_packages.min_subscription_amount
  154.  
  155. 8. minimal_topup = fund_packages.min_topup_amount
  156.  
  157. 9. transaction_cut_off = fund_packages.transaction_cut_off
  158.  
  159. 10. settlement_cut_off = fund_packages.settlement_cut_off
  160.  
  161. 11. settlement_period = fund_packages.settlement_period
  162.  
  163. 12. image = fund_packages.package_image (join fundpackage id)
  164.  
  165. 13. code = fund_packages.package_code
  166.  
  167. 14. package_type = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id; fund_packages.fund_packages_id = fund_package_category.fund_packages_id)
  168.  
  169. 15. risk_level = score.score_code (join score.score_id = ut_products.risk_profile_id ; join ut_products.product_id = fund_package_products.ut_products_id)
  170.  
  171. 16. name = fund_packages.fund_package_name
  172.  
  173. 17. effective_date = fund_packages.effective_date
  174.  
  175. 18. bank_name = bank.bank_name (join bank.bank_id = fund_escrow_account.bank_id; join fund_escrow_account.fund_packages_id = fund_packages.fund_packages_id)
  176.  
  177. 19. currency = fund_packages.currency
  178.  
  179. 20. bank_logo = bank.image_key (join bank.bank_id = fund_escrow_account.bank_id; join fund_escrow_account.fund_packages_id = fund_packages.fund_packages_id)
  180.  
  181. 21. type_code = lookup_line.code (join lookup_line.lookup_id = fund_package_category.pkg_category_id; fund_packages.fund_packages_id = fund_package_category.fund_packages_id)
  182.  
  183. requestBody:
  184. content:
  185. application/json:
  186. schema:
  187. $ref: '#/components/schemas/paramGetListProductDetail'
  188.  
  189. responses:
  190. '200':
  191. description: load success
  192. content:
  193. application/json:
  194. schema:
  195. $ref: '#/components/schemas/responseProductDetail'
  196. '500':
  197. description: internal server error
  198.  
  199. /package/NAV:
  200. post:
  201. tags:
  202. - PRODUCT LIST
  203. summary: show product all nav where fund_packages.package_code = body_request.code order by ut_product_fund_prices.price_date.
  204.  
  205. operationId: postPackageNAV
  206. description: |
  207.  
  208. Body Request :
  209.  
  210. 1. token = token valid from login
  211.  
  212. 2. Code = code compare to fund_packages.package_code
  213.  
  214. Response :
  215.  
  216. Showing nav where fund_packages.package_code = bodyRequest.code; fund_package_products.fund_package_product_id = ut_products.product_id; ut_product_fund_prices.products_id = ut_products.product_id); oder by ut_product_fund_prices.ut_product_fund_prices_id asc
  217.  
  218. 1. price_date = ut_product_fund_prices.price_date
  219.  
  220. 2. nav = ut_product_fund_prices.bid_price
  221.  
  222.  
  223. requestBody:
  224. content:
  225. application/json:
  226. schema:
  227. $ref: '#/components/schemas/paramGetListProductDetail'
  228.  
  229. responses:
  230. '200':
  231. description: load success
  232. content:
  233. application/json:
  234. schema:
  235. $ref: '#/components/schemas/responseProductNAV'
  236. '500':
  237. description: internal server error
  238.  
  239. /package/subscription_fee:
  240. post:
  241. tags:
  242. - PRODUCT LIST
  243. summary: show product fee for subscription where fund_packages.package_code = body_request.code.
  244.  
  245. operationId: postPackageSubsFee
  246. description: |
  247.  
  248. Body Request :
  249.  
  250. 1. token = token valid from login
  251.  
  252. 2. Code = bodyRequest.code compare to fund_packages.package_code
  253.  
  254. Response :
  255.  
  256. Showing fee subs where fund_packages.package_code = bodyRequest.code ; fund_packages_id in fund_packages_agent (join with agent.id from point 1; fund_package_fee_setup = fund_packages.fund_package_id; fund_package_fee_setup.transaction_type_id = 1) order by fund_package_fee_setup.package_fee_id asc;
  257.  
  258. 1. fee = fund_package_fee_setup.fee_amount
  259.  
  260. 2. amount_start = fund_package_fee_setup.amount_min
  261.  
  262. 3. amount_end = fund_package_fee_setup.amount_max
  263.  
  264.  
  265. requestBody:
  266. content:
  267. application/json:
  268. schema:
  269. $ref: '#/components/schemas/paramGetListProductDetail'
  270.  
  271. responses:
  272. '200':
  273. description: load success
  274. content:
  275. application/json:
  276. schema:
  277. $ref: '#/components/schemas/responseSubsFee'
  278. '500':
  279. description: internal server error
  280.  
  281. /package/redemption_fee:
  282. post:
  283. tags:
  284. - PRODUCT LIST
  285. summary: show product fee for redemption where fund_packages.package_code = body_request.code.
  286.  
  287. operationId: postPackageRedeemFee
  288. description: |
  289.  
  290. Body Request :
  291.  
  292. 1. token = token valid from login
  293.  
  294. 2. Code = bodyRequest.code compare to fund_packages.package_code
  295.  
  296.  
  297. Response :
  298.  
  299. Showing fee subs where fund_packages.package_code = bodyRequest.code ; fund_packages_id in fund_packages_agent (join with agent.id from point 1; fund_package_fee_setup = fund_packages.fund_package_id; fund_package_fee_setup.transaction_type_id = 2) order by fund_package_fee_setup.package_fee_id asc;
  300.  
  301. 1. fee = fund_package_fee_setup.fee_amount
  302.  
  303. 2. amount_start = fund_package_fee_setup.amount_min
  304.  
  305. 3. amount_end = fund_package_fee_setup.amount_max
  306.  
  307.  
  308. requestBody:
  309. content:
  310. application/json:
  311. schema:
  312. $ref: '#/components/schemas/paramGetListProductDetail'
  313.  
  314. responses:
  315. '200':
  316. description: load success
  317. content:
  318. application/json:
  319. schema:
  320. $ref: '#/components/schemas/responseRedeemFee'
  321. '500':
  322. description: internal server error
  323.  
  324. /package/switching_fee:
  325. post:
  326. tags:
  327. - PRODUCT LIST
  328. summary: show product fee for switching where fund_packages.package_code = body_request.code.
  329.  
  330. operationId: postPackageSwitchFee
  331. description: |
  332.  
  333. Body Request :
  334.  
  335. 1. token = token valid from login
  336.  
  337. 2. Code = bodyRequest.code compare to fund_packages.package_code
  338.  
  339.  
  340. Response :
  341.  
  342. Showing fee subs where fund_packages.package_code = bodyRequest.code ; fund_packages_id in fund_packages_agent (join with agent.id from point 1; fund_package_fee_setup = fund_packages.fund_package_id; fund_package_fee_setup.transaction_type_id = 20) order by fund_package_fee_setup.package_fee_id asc;
  343.  
  344. 1. fee = fund_package_fee_setup.fee_amount
  345.  
  346. 2. amount_start = fund_package_fee_setup.amount_min
  347.  
  348. 3. amount_end = fund_package_fee_setup.amount_max
  349.  
  350.  
  351. requestBody:
  352. content:
  353. application/json:
  354. schema:
  355. $ref: '#/components/schemas/paramGetListProductDetail'
  356.  
  357. responses:
  358. '200':
  359. description: load success
  360. content:
  361. application/json:
  362. schema:
  363. $ref: '#/components/schemas/responseSwitchFee'
  364. '500':
  365. description: internal server error
  366.  
  367. /package/getSwitchProduct:
  368. post:
  369. tags:
  370. - PRODUCT LIST
  371. summary: show product can be switched.
  372.  
  373. operationId: postPackageSwitchAllowed
  374. description: |
  375.  
  376. Create New Table for :
  377.  
  378. switching_mapping :
  379.  
  380. - id;int8
  381. - created_by;varchar
  382. - created_date;timestamp
  383. - product_in_id;int8
  384. - product_out_id;int8
  385. - row_status;bool
  386. - updated_by;varchar
  387. - updated_date;timestamp
  388.  
  389.  
  390. Body Request :
  391.  
  392. 1. token = token valid from login
  393.  
  394. 2. Code = bodyRequest.code compare to fund_packages.package_code
  395.  
  396.  
  397. Response :
  398.  
  399. Showing product can be switched from package from with criteria --> switching_mapping.product_out_id = fund_packages.fund_package_id (join bodyRequest.code = fund_packages.code)
  400.  
  401. 1. packageId = fund_packages.fund_package_id (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
  402. 2. name = fund_packages.fund_package_name (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
  403. 3. packageType = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id; fund_packages.fund_packages_id = fund_package_category.fund_packages_id)
  404. 4. currency = fund_packages.currency (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
  405. 5. prospectus_file = ut_products.prospectus_file (fund_package_products.ut_products_id = ut_products.product_id; bodyRequest.code = fund_packages.code)
  406. 6. fact_sheet_file = ut_products.fund_fact_sheet_key (fund_package_products.ut_products_id = ut_products.product_id; bodyRequest.code = fund_packages.code)
  407.  
  408.  
  409. requestBody:
  410. content:
  411. application/json:
  412. schema:
  413. $ref: '#/components/schemas/paramGetListProductDetail'
  414.  
  415. responses:
  416. '200':
  417. description: load success
  418. content:
  419. application/json:
  420. schema:
  421. $ref: '#/components/schemas/responseSwitchProduct'
  422. '500':
  423. description: internal server error
  424.  
  425.  
  426. /customer/getSettlementAccounts:
  427. post:
  428. tags:
  429. - CUSTOMER
  430. summary: show settlement account based on valid customer token
  431.  
  432. operationId: postSettlementAccount
  433. description: |
  434.  
  435. Body Request :
  436.  
  437. 1. token = token valid from login
  438.  
  439. Response :
  440.  
  441. showing data for settlement account from token valid compare with kyc id from token valid.
  442.  
  443. Version 1
  444. Response :
  445.  
  446. showing data for settlement account (from table settlement_account) from token valid compare with kyc id from token valid.
  447. (settlement_accounts.kycs_id = kyc.customer_id)
  448.  
  449. 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  450.  
  451. 2. packageCode = fund_packages.package_code (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  452.  
  453. 3. stlAccountName = settlement_accounts.settlement_account_name
  454.  
  455. 4. stlAccountNo = settlement_accounts.settlement_account_no
  456.  
  457. 5. bankName = bank.bank_name (join settlement_accounts.bank_id_id = bank.bank_id)
  458.  
  459. 6. settlementAccountId = settlement_accounts.settlement_account_id
  460.  
  461. 7. currency = settlement_accounts.currency
  462.  
  463.  
  464. Version 2
  465. Response : (not used)
  466.  
  467. showing data for settlement account (from table settlement_account) from token valid compare with kyc id from token valid.
  468. (settlement_accounts.kycs_id = kyc.customer_id)
  469.  
  470. 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  471.  
  472. 2. packageId = fund_packages.fund_package_id (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  473.  
  474. 3. stlAccountName = settlement_accounts.settlement_account_name
  475.  
  476. 4. stlAccountNo = settlement_accounts.settlement_account_no
  477.  
  478. 5. bankName = bank.bank_name (join settlement_accounts.bank_id_id = bank.bank_id)
  479.  
  480. 6. settlementAccountId = settlement_accounts.settlement_account_id
  481.  
  482. 7. currency = settlement_accounts.currency
  483.  
  484. requestBody:
  485. content:
  486. application/json:
  487. schema:
  488. $ref: '#/components/schemas/paramGetSettlementAcc'
  489.  
  490. responses:
  491. '200':
  492. description: load success
  493. content:
  494. application/json:
  495. schema:
  496. $ref: '#/components/schemas/responseGetSettlementAcc'
  497. '500':
  498. description: internal server error
  499.  
  500. /customer/getInvestmentAccounts:
  501. post:
  502. tags:
  503. - CUSTOMER
  504. summary: show investment account based on valid customer token
  505.  
  506. operationId: getInvestmentAccount
  507. description: |
  508.  
  509. Body Request :
  510.  
  511. 1. token = token valid from login
  512.  
  513. Version 1
  514. Response :
  515.  
  516. showing data for investment account (from table investment_account) from token valid compare with kyc id from token valid.
  517. (investment_accounts.kycs_id = kyc.customer_id)
  518.  
  519. 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  520.  
  521. 2. packageType = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id; investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  522.  
  523. 3. currency = fund_packages.currency (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  524.  
  525. 4. totalUnit = customer_balance.current_unit (join investment_accounts.at_investment_account_id = customer_balance.at_investment_account_id; join costumer_balance.fund_packages_id = fund_packages.fund_package_id; join fund_packages.fund_package_id = fund_package_products.fund_packages_id; join fund_package_products.ut_products_id = ut_products.product_id;) oder by created_date desc; limit 1
  526.  
  527. 5. investmentAccountId = investment_accounts.investment_account_no
  528.  
  529. 6. packageCode = fund_packages.package_code (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  530.  
  531. 7. packageId = fund_packages.fund_package_id (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  532.  
  533. Versi 2
  534. Response : (not used)
  535.  
  536. showing data for investment account (from table investment_account_grouping) from token valid compare with kyc id from token valid.
  537. (investment_account_grouping.kycs_id = kyc.customer_id;) join with investment_accounts (investment_accounts.inv_acc_group_id = investment_account_grouping.id)
  538.  
  539. 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  540.  
  541. 2. packageType = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id; investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  542.  
  543. 3. currency = settlement_accounts.currency (join settlement_accounts.settlement_account_id = investment_accounts = settlement_accounts.settlement_accounts_id)
  544.  
  545. 4. totalUnit = customer_balance.current_unit (join investment_accounts.at_investment_account_id = customer_balance.at_investment_account_id; join costumer_balance.fund_packages_id = fund_packages.fund_package_id; join fund_packages.fund_package_id = fund_package_products.fund_packages_id; join fund_package_products.ut_products_id = ut_products.product_id;) oder by created_date desc; limit 1
  546.  
  547. 5. investmentAccountId = investment_accounts.investment_account_no
  548.  
  549. 6. packageCode = fund_packages.package_code (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  550.  
  551. 7. packageId = fund_packages.fund_package_id (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  552.  
  553.  
  554. requestBody:
  555. content:
  556. application/json:
  557. schema:
  558. $ref: '#/components/schemas/paramGetInvtAcc'
  559.  
  560. responses:
  561. '200':
  562. description: load success
  563. content:
  564. application/json:
  565. schema:
  566. $ref: '#/components/schemas/responseGetInvestmentAcc'
  567. '500':
  568. description: internal server error
  569.  
  570. /customer/profile_view:
  571. post:
  572. tags:
  573. - CUSTOMER
  574. summary: show detail customer information
  575.  
  576. operationId: postProfileView
  577. description: |
  578.  
  579. Body Request :
  580.  
  581. 1. token = token valid from login
  582.  
  583. Response :
  584.  
  585. showing data for kyc table from token valid compare with kyc.customer_id from token valid.
  586.  
  587. 1. customer_id = kyc.portalcif
  588.  
  589. 2. customer_risk_profile.code = score.score_code (join kyc.risk_profile_id = score.score_id)
  590.  
  591. 3. customer_risk_profile.value = score.score_name (join kyc.risk_profile_id = score.score_id)
  592.  
  593. 4. customer_document.id_card_image = customer_document.file_key
  594.  
  595. (
  596.  
  597. join kyc.acc=ount_id = _user.id
  598.  
  599. join customer_document.user_id = _user.id
  600.  
  601. where customer_document.document_type = DocTyp01 and customer_document.row_status = t
  602.  
  603. order by customer_document.created_on desc
  604.  
  605. )
  606.  
  607. 5. customer_document.signature_image = customer_document.file_key
  608.  
  609. (
  610.  
  611. join kyc.account_id = _user.id
  612.  
  613. join customer_document.user_id = _user.id
  614.  
  615. where customer_document.document_type = DocTyp03 and customer_document.row_status = t
  616.  
  617. order by customer_document.created_on desc
  618.  
  619. )
  620.  
  621. 6. customer_status = _user.user_status (join kyc.account_id = _user.id)
  622.  
  623. 7. customer_data.general.last_name = kyc.last_name
  624.  
  625. 8. customer_data.general.phone_number = = kyc.mobile_number
  626.  
  627. 9. customer_data.general.first_name = kyc.first_name
  628.  
  629. 10. kyc.settlement_account_no = settlement_accounts.settlement_account_no (join kyc.customer_id = settlement_accounts.kycs_id)
  630.  
  631. 11. kyc.id_number = kyc.id_number
  632.  
  633. 12. kyc.total_asset = kyc.total_asset
  634.  
  635. 13. kyc.occupation = kyc.occupation
  636.  
  637. 14. kyc.gender = kyc.gender
  638.  
  639. 15. kyc.id_expiration = kyc.id_expiration_date
  640.  
  641. 16. kyc.birth_date = kyc.birth_date
  642.  
  643. 17. kyc.income_source = kyc.source_of_income
  644.  
  645. 18. kyc.birth_place = kyc.birth_place
  646.  
  647. 19. kyc.investment_purpose = kyc.investment_purpose
  648.  
  649. 20. kyc.education_background = kyc.education_background
  650.  
  651. 21. kyc.business_nature = kyc.nature_of_business
  652.  
  653. 22. kyc.mailing.country = kyc.mailing_country
  654.  
  655. 23. kyc.mailing.address = kyc.mailing_address
  656.  
  657. 24. kyc.mailing.province = kyc.mailing_province
  658.  
  659. 25. kyc.mailing.city = kyc.mailing_city
  660.  
  661. 26. kyc.mailing.phone = kyc.legal_phone_number
  662.  
  663. 27. kyc.mailing.postal_code = kyc.mailing_postal_code
  664.  
  665. 28. kyc.mother_maiden_name = kyc.mother_maiden_name
  666.  
  667. 29. kyc.religion = kyc.religion
  668.  
  669. 30. kyc. marital_status = kyc.marital_status
  670.  
  671. 31. kyc.nationality = kyc.nationality
  672.  
  673. 32. kyc.investment_experience = kyc.investment_experience
  674.  
  675. 33. kyc.settlement_bank = bank.bank_code
  676.  
  677. (
  678.  
  679. join kyc.customer_id = settlement_accounts.kycs_id
  680.  
  681. join settlement_accounts.bank_id_id = bank.bank_id
  682.  
  683. )
  684.  
  685. 34. kyc.legal.country = kyc.legal_country
  686.  
  687. 35. kyc.legal.province = SELECT kyc.legal_province
  688.  
  689. 36. kyc.legal.city = kyc.legal_city
  690.  
  691. 37. kyc.legal.phone = kyc.legal_phone_number
  692.  
  693. 38. kyc.legal.postal_code = kyc.legal_postal_code
  694.  
  695. 39. kyc.settlement_account_name = settlement_accounts.settlement_account_name (join kyc.customer_id = settlement_accounts.kycs_id)
  696.  
  697. 40. kyc.statement_type
  698.  
  699. 41. risk_profile.question = question.question_name
  700.  
  701. (
  702. join customer_answer.kycs_id = kyc.customer_id
  703.  
  704. join question.question_id = customer_answer.question_id
  705.  
  706. joint answer.answer_id = customer_answer.question_id
  707.  
  708. where question.questionaires_id = 6
  709. )
  710.  
  711. 42. risk_profile.answer = answer.answer_name
  712.  
  713. (
  714. join customer_answer.kycs_id = kyc.customer_id
  715.  
  716. join question.question_id = customer_answer.question_id
  717.  
  718. joint answer.answer_id = customer_answer.question_id
  719.  
  720. where question.questionaires_id = 6
  721. )
  722.  
  723. 42. fatca.question = question.question_name
  724.  
  725. (
  726. join customer_answer.kycs_id = kyc.customer_id
  727.  
  728. join question.question_id = customer_answer.question_id
  729.  
  730. joint answer.answer_id = customer_answer.question_id
  731.  
  732. where question.questionaires_id = 2
  733. )
  734.  
  735. 43. fatca.answer = = answer.answer_name
  736. (
  737. join customer_answer.kycs_id = kyc.customer_id
  738.  
  739. join question.question_id = customer_answer.question_id
  740.  
  741. joint answer.answer_id = customer_answer.question_id
  742.  
  743. where question.questionaires_id = 2
  744. )
  745.  
  746. requestBody:
  747. content:
  748. application/json:
  749. schema:
  750. $ref: '#/components/schemas/paramGetCustomerProfile'
  751.  
  752. responses:
  753. '200':
  754. description: load success
  755. content:
  756. application/json:
  757. schema:
  758. $ref: '#/components/schemas/responseGetCustomerProfile'
  759. '500':
  760. description: internal server error
  761.  
  762. /customer/getInvestmentPurposeList:
  763. post:
  764. tags:
  765. - CUSTOMER
  766. summary: show investment purpose.
  767.  
  768. operationId: postInvestmentPurpose
  769. description: |
  770. to show data investment purposes from table look up line
  771. where lookup_header.category = 'INVESTMENT_PURPOSE'
  772. order by lookup_id
  773.  
  774. Response :
  775. - code : lookup_line.code (join with lookup_line.category_id = lookup_header.category_id)
  776. - value : lookup_line.code
  777.  
  778. requestBody:
  779. content:
  780. application/json:
  781. schema:
  782. $ref: '#/components/schemas/paramGetInvestmentPurpose'
  783.  
  784. responses:
  785. '200':
  786. description: load success
  787. content:
  788. application/json:
  789. schema:
  790. $ref: '#/components/schemas/responseGetInvestmentPurpose'
  791. '500':
  792. description: internal server error
  793.  
  794. /otp/requestOtp:
  795. post:
  796. tags:
  797. - OTP
  798. summary: send otp to customer
  799.  
  800. operationId: postSendOTP
  801. description: |
  802.  
  803. Body Request from widget frontend :
  804.  
  805. 1. token = token valid from login
  806.  
  807. 2. sessionId
  808.  
  809. 3. language = ind / eng
  810.  
  811.  
  812. Mapping to API Avantrade :
  813.  
  814. API URI = /api/SendOTP (POST)
  815.  
  816. body request to API Danamon:
  817.  
  818. 1. sendotp --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> sessionid:value|language:value
  819.  
  820. 2. timestamp --> yyyyMMddHHmm
  821.  
  822. 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  823.  
  824. 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  825.  
  826. example:
  827.  
  828. {
  829.  
  830.  
  831. "sendotp" : "sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|language:id",
  832.  
  833. "timestamp":"201828091520",
  834.  
  835. "sequencenumber":"60140001132894152011",
  836.  
  837. "referencenumber":"20182809152060140001132894152011"
  838.  
  839.  
  840. }
  841.  
  842.  
  843. Response Code :
  844.  
  845. 0 ==> if response APIAvantrade code 000000
  846. 1 ==> if response APIAvantrade code 200001, 200002, 200005, 200004, 200007, 100001, 10000, 100003
  847. 99 ==> General Error / other error from list above
  848.  
  849. requestBody:
  850. content:
  851. application/json:
  852. schema:
  853. $ref: '#/components/schemas/paramRequetOtp'
  854.  
  855. responses:
  856. '200':
  857. description: load success
  858. content:
  859. application/json:
  860. schema:
  861. $ref: '#/components/schemas/responseRequestOTP'
  862. '500':
  863. description: internal server error
  864.  
  865. /general/download:
  866. post:
  867. tags:
  868. - GENERAL FUNCTION
  869. summary: download document from key on table attach_file
  870.  
  871. operationId: postDownloadFile
  872. description: |
  873.  
  874. Body Request :
  875.  
  876. 1. token = token signature
  877.  
  878. 2. key = code compare to fund_packages.package_code
  879.  
  880.  
  881. Response :
  882.  
  883. binary file
  884.  
  885. requestBody:
  886. content:
  887. application/json:
  888. schema:
  889. $ref: '#/components/schemas/paramDownloadFile'
  890.  
  891. responses:
  892. '200':
  893. description: load success
  894. content:
  895. application/json:
  896. schema:
  897. $ref: '#/components/schemas/responseDownloadFile'
  898. '500':
  899. description: internal server error
  900.  
  901. /otp/checkOtp:
  902. post:
  903. tags:
  904. - OTP
  905. summary: validate otp
  906.  
  907. operationId: postValidateOTP
  908. description: |
  909.  
  910. Body Request from widget frontend :
  911.  
  912. 1. token = token valid from login
  913.  
  914. 2. sessionId
  915.  
  916. 3. language = ind / eng
  917.  
  918. 4. otp
  919.  
  920. Mapping to API Avantrade :
  921.  
  922. API URI = /api/VerifyOTP (POST)
  923.  
  924. body request :
  925.  
  926. 1. verifyotp --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ;
  927. Data --> sessionid:value|otpvalue:value|language:value
  928.  
  929. example : sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|otpvalue:12345678|language:id
  930.  
  931. 2. timestamp --> yyyyMMddHHmm
  932.  
  933. 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  934.  
  935. 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  936.  
  937. example:
  938.  
  939. {
  940.  
  941.  
  942. "verifyotp" : "sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|otpvalue:12345678|language:id",
  943.  
  944. "timestamp":"201828091520",
  945.  
  946. "sequencenumber":"60140001132894152011",
  947.  
  948. "referencenumber":"20182809152060140001132894152011"
  949.  
  950.  
  951. }
  952.  
  953.  
  954. Response Code :
  955.  
  956. 0 ==> if response APIAvantrade code 000000
  957. 1 ==> if response APIAvantrade code 200001, 200002, 200003, 200004, 100001, 100002, 100003
  958. 99 ==> General Error / other error from list above
  959.  
  960. requestBody:
  961. content:
  962. application/json:
  963. schema:
  964. $ref: '#/components/schemas/paramValidateOtp'
  965.  
  966. responses:
  967. '200':
  968. description: load success
  969. content:
  970. application/json:
  971. schema:
  972. $ref: '#/components/schemas/responseValidateOTP'
  973. '500':
  974. description: internal server error
  975.  
  976. /transaction/validateCutOffTransaction:
  977. post:
  978. tags:
  979. - TRX
  980. summary: validate for cut off validation
  981. operationId: postValidateTrx
  982. description: |
  983.  
  984. Flow :
  985.  
  986. getDate(now) and compare to fund_packages.transaction_cut_off (select from fund_packages where package_code = bodyRequest.code)
  987.  
  988. Case 1 :
  989.  
  990. getDate(now) < fund_packages.transaction_cut_off
  991.  
  992. responseCode = 000000
  993.  
  994. responseMessage = Transaction Allowed
  995.  
  996. Case 2 :
  997.  
  998. getDate(now) < fund_packages.transaction_cut_off
  999.  
  1000. responseCode = 000001
  1001.  
  1002. responseMessage = "Transaksi telah melampaui cut off time, dan akan diproses pada hari kerja berikutnya"
  1003.  
  1004. Body Request :
  1005.  
  1006. 1. code = code compare to fund_packages.package_code
  1007.  
  1008. 2. token = token valid from login
  1009.  
  1010. requestBody:
  1011. content:
  1012. application/json:
  1013. schema:
  1014. $ref: '#/components/schemas/paramValidateTrx'
  1015.  
  1016. responses:
  1017. '200':
  1018. description: load success
  1019. content:
  1020. application/json:
  1021. schema:
  1022. $ref: '#/components/schemas/responseValidateTrx'
  1023. '500':
  1024. description: internal server error
  1025.  
  1026. /transaction/validateRiskProfile:
  1027. post:
  1028. tags:
  1029. - TRX
  1030. summary: validate for risk profile
  1031. operationId: postValidateRiskProfile
  1032. description: |
  1033.  
  1034. Body Request :
  1035.  
  1036. 1. token = token valid from login
  1037.  
  1038. get riskprofile expired date from kyc data / token valid customer. (join from kyc.risk_profile_id = score.questionaires_id).
  1039.  
  1040. Case 1:
  1041.  
  1042. - getDate(now) < score.effective_date_from
  1043. - getDate(now) > score.effective_date_to
  1044.  
  1045. responsecode = 000001
  1046.  
  1047. responseMessage = "Data profil risiko Anda sudah tidak berlaku, silakan kunjungi Cabang Danamon terdekat untuk melakukan pengkinian data"
  1048.  
  1049. Case 2:
  1050.  
  1051. - getDate(now) >= score.effective_date_from
  1052. - getDate(now) <= score.effective_date_to
  1053.  
  1054. responsecode = 000000
  1055.  
  1056. responseMessage = "Risk Profil Valid"
  1057.  
  1058. requestBody:
  1059. content:
  1060. application/json:
  1061. schema:
  1062. $ref: '#/components/schemas/paramValidateRiskProfile'
  1063.  
  1064. responses:
  1065. '200':
  1066. description: load success
  1067. content:
  1068. application/json:
  1069. schema:
  1070. $ref: '#/components/schemas/responseValidateRiskProfile'
  1071. '500':
  1072. description: internal server error
  1073.  
  1074. /transaction/validateRiskProfileToProduct:
  1075. post:
  1076. tags:
  1077. - TRX
  1078. summary: validate for risk profile
  1079. operationId: postValidateRiskProfileToProduct
  1080. description: |
  1081.  
  1082. Body Request :
  1083.  
  1084. 1. token = token valid from login
  1085.  
  1086. 2. code = code compare to fund_packages.package_code
  1087.  
  1088. - profileScoreCust = get kyc.risk_profile_score (compare with token valid customer)
  1089. - profileScoreProd = get score.max_score ( join fund_packages.risk_profile_id = score.score_id; fund_packages.package_code = bodyRequest.packageCode)
  1090.  
  1091. Case 1 :
  1092.  
  1093. profileScoreProd <= profileScoreCust
  1094.  
  1095. responseCode = 000000
  1096.  
  1097. responseMessage = Transaction Allowed
  1098.  
  1099. Case 2 :
  1100.  
  1101. profileScoreProd > profileScoreCust
  1102.  
  1103. responseCode = 000001
  1104.  
  1105. responseMessage = "Maaf, Anda tidak dapat melanjutkan transaksi karena Risk Profile product yang anda pilih melebihi dari Risk Profile Anda."
  1106.  
  1107.  
  1108. requestBody:
  1109. content:
  1110. application/json:
  1111. schema:
  1112. $ref: '#/components/schemas/paramValidateRiskProfile2'
  1113.  
  1114. responses:
  1115. '200':
  1116. description: load success
  1117. content:
  1118. application/json:
  1119. schema:
  1120. $ref: '#/components/schemas/responseValidateRiskProfile2'
  1121. '500':
  1122. description: internal server error
  1123.  
  1124. /transaction/validateLimitSubscription:
  1125. post:
  1126. tags:
  1127. - TRX
  1128. summary: validate for limit subscription
  1129. operationId: postValidateLimitSubscription
  1130. description: |
  1131.  
  1132. Body Request :
  1133.  
  1134. 1. code = code compare to fund_packages.package_code
  1135.  
  1136. 2. token = token valid from login
  1137.  
  1138. 3. Amount = amount of transaction to compare min and max in table fund_packages
  1139.  
  1140. get data min_subcription from table fund_packages (fund_packages.min_subscription_amount where fund_packages.package_code)
  1141.  
  1142. If requestBody.Amount < fund_packages.min_subscription_amount
  1143. Case 1 :
  1144.  
  1145. requestBody.Amount >= fund_packages.min_subscription_amount
  1146.  
  1147. responseCode = 0
  1148.  
  1149. responseMessage = Transaction Allowed
  1150.  
  1151. Case 2 :
  1152.  
  1153. requestBody.Amount < fund_packages.min_subscription_amount
  1154.  
  1155. responseCode = 1
  1156.  
  1157. responseMessage = "Minimum transaksi adalah fund_packages.currency<<space>> fund_packages.min_subscription_amount"
  1158.  
  1159. requestBody:
  1160. content:
  1161. application/json:
  1162. schema:
  1163. $ref: '#/components/schemas/paramValidateLimitProduct'
  1164.  
  1165. responses:
  1166. '200':
  1167. description: load success
  1168. content:
  1169. application/json:
  1170. schema:
  1171. type: array
  1172. items:
  1173. $ref: '#/components/schemas/responseValidateLimitProduct'
  1174. '500':
  1175. description: internal server error
  1176.  
  1177. /transaction/subscription:
  1178. post:
  1179. tags:
  1180. - TRX
  1181. summary: Subscription
  1182.  
  1183. operationId: trxSubs
  1184. description: |
  1185.  
  1186. Mapping to API Avantrade :
  1187.  
  1188. API URI = avantradeapi/services/transaction/subscription (POST)
  1189.  
  1190. body request :
  1191.  
  1192. 1. productId = body request fundpackageId (ut_products.at_product_id; join with fund_packages_products.ut_products_id ; join with fund_package_product_id)
  1193.  
  1194. 2. transactionAmount = transactionAmount
  1195.  
  1196. 3. feeAmount = 0
  1197.  
  1198. 4. feeRate = find for fee in fund_package_fee_setup.fee_amount (with range from fund_package_fee_setup.amount_min between fund_package_fee_setup.amount_max with fund_package_fee_setup.transaction_type_id = 1/3)
  1199.  
  1200. 5. transactionDate = dd-MMM-yyyy
  1201.  
  1202. 6. settlementAccountId = settlement_accounts.at_settlement_account_id (from bodyRequest.settlementAccountId ; join with bodyRequest.settlementAccountId = settlement_accounts.settlement_account_id; should be verified with token join to kyc.customer_id = settlement_accounts.kycs_id)
  1203.  
  1204. 7. fundSourceId = kyc.source_of_income (from token compare to kyc.customer_id)
  1205.  
  1206. 8. customerId = kyc.at_customer_id
  1207.  
  1208. 9. investmentAccountId = investment_accounts.at_investment_account_id (from token at body request compare to kyc.customer_id join with investment_accounts.kycs_id && packageId at body request compare investment_accounts.fund_paackages_id)
  1209.  
  1210. 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
  1211.  
  1212. 11. transactionNumber = generate by system (like in invisee SyymmddXXXXX)
  1213.  
  1214. 12. transactionId = fiiled with empty string
  1215.  
  1216. errorCode :
  1217.  
  1218. 000011 --> Failed, minimum subscription amount 500000
  1219.  
  1220. 000011 --> Failed, maximum subscription amount 2000000000
  1221.  
  1222. 000011 --> Failed, Transaction Passed Transaction Cut Off Time
  1223.  
  1224. requestBody:
  1225. content:
  1226. application/json:
  1227. schema:
  1228. $ref: '#/components/schemas/paramSubs'
  1229.  
  1230. responses:
  1231. '200':
  1232. description: load success
  1233. content:
  1234. application/json:
  1235. schema:
  1236. type: array
  1237. items:
  1238. $ref: '#/components/schemas/responseSubs'
  1239. '500':
  1240. description: internal server error
  1241.  
  1242. /transaction/AT_Subcription:
  1243. post:
  1244. tags:
  1245. - TRX
  1246. summary: Subscription
  1247.  
  1248. operationId: trxSubsAuditTrail
  1249. description: |
  1250. Mapping to API Danamon :
  1251.  
  1252. API URI = /AuditLog (POST)
  1253.  
  1254. body request to API Danamon:
  1255.  
  1256. 1. auditlog --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> Data = sessionid;trxid;language;headervalue;detailvalue
  1257.  
  1258. Explanation :
  1259.  
  1260. NF = Notif Flag
  1261.  
  1262. headervalue =
  1263. - ref_no (20) = transaction_number_from_middle_office; NF = 1
  1264.  
  1265. - dscp (300) = empty string; NF = 0
  1266.  
  1267. - amt(19) = bodyRequest.transactionAmount; NF = 1
  1268.  
  1269. - ccy (5) = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
  1270.  
  1271. - unit(1) = 0 (hardcoded); NF = 0
  1272.  
  1273. - source (100) = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 0
  1274.  
  1275. - destination (100)= fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
  1276.  
  1277. - status(5) = true / false (based on bodyReuqest.responseCodeSubs; true = responseCodeSubs value : "000000" ; true = responseCodeSubs != "000000"); NF = 0
  1278.  
  1279. - reason(1000) = bodyRequest.responseInfoSubs; NF = 0
  1280.  
  1281. - template_cd (10) = TC35642_01 ( bodyReuqest.responseCodeSubs = "000000") / TC35642_02 ( bodyReuqest.responseCodeSubs != "000000"); NF = 1
  1282.  
  1283. - formattemplate (50) = __child_trx_hist_det (hardcoded); NF = 1
  1284.  
  1285. detailvalue =
  1286. - productname = fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
  1287.  
  1288. - productcode = fund_packages.fund_package_id (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
  1289.  
  1290. - producttype = lookup_line.value (join lookup_line.lookup_id = fund_package_category.pkg_category_id; join lookup_line.lookup_id = fund_package_category.fund_package_id; fund_package_id.package_code = bodyRequest.code); NF = 0
  1291.  
  1292. - fundmanager = investment_managers.full_name (join investment_managers.inv_manager_id = ut_products.investment_managers_id ; join ut_products.product_id.fund_package_product_id = fund_packages.fund_package_id ; where fund_packages.package_code = bodyRequest.code); NF = 0
  1293.  
  1294. - ccy (5) = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
  1295.  
  1296. - charge = feeRate = find for fee in fund_package_fee_setup.fee_amount (with range from fund_package_fee_setup.amount_min between fund_package_fee_setup.amount_max with fund_package_fee_setup.transaction_type_id = 1/3; join fund_package_fee_setup = fund_packages.fund_package_id; where fund_packages.fund_package_code = bodyRequest.code); NF = 0
  1297.  
  1298. - amount = bodyRequest.transactionAmount (formating to ==> using dot (.) as thousand separator and using comma (,) as decimal point ); NF = 1
  1299.  
  1300. - sourceacct = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 1
  1301.  
  1302. - tncflag = Ya (hardcoded); NF = 0
  1303.  
  1304. - tncriskflag = Ya (hardcoded); NF = 0
  1305.  
  1306. - trxreason = kyc.investment_purpose(from table kyc compare to valid token); NF = 0
  1307.  
  1308. - trxdate = bodyRequest.trxDate (format : dd/MM/yyyy hh:mm:ss tt); NF = 1
  1309.  
  1310. - purpose = Pembelian Reksadana (hardcoded); NF = 1
  1311.  
  1312. 2. timestamp --> yyyyMMddHHmm
  1313.  
  1314. 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  1315.  
  1316. 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
  1317.  
  1318.  
  1319. Sample Body Request:
  1320.  
  1321. {
  1322.  
  1323. "auditlog" : "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364;113564201;id;ref_no=12345678901234567890=1|dscp==0|amt=100000.12=1|ccy=IDR=1|unit=0=0|source=007072008391=0|destination=Manulife Obligasi Negara Indonesia II=0|status=true=0|reason=test=0|template_cd=TC35642_01=1|formattemplate=__child_trx_hist_det=1;productname=Manulife Obligasi Negara Indonesia II=1|productcode=12=0|producttype=Reksa Dana Saham=0|fundmanager=PT. Manulife Aset Manajemen Indonesia=0|ccy=IDR=1|charge=1,00=0|amount=100.000,00=1|sourceacct=007072008390=1|tncflag=Ya=0|tncriskflag=Ya=0|trxreason=Invest=0|trxdate=01/01/2019 11:15:22 AM=1|purpose=Pembelian Reksadana=1",
  1324.  
  1325. "timestamp":"201828091520",
  1326.  
  1327. "sequencenumber":"60140001132894152011",
  1328.  
  1329. "referencenumber":"20182809152060140001132894152011"
  1330.  
  1331.  
  1332. }
  1333.  
  1334. requestBody:
  1335. content:
  1336. application/json:
  1337. schema:
  1338. $ref: '#/components/schemas/paramSubsAT'
  1339.  
  1340. responses:
  1341. '200':
  1342. description: load success
  1343. content:
  1344. application/json:
  1345. schema:
  1346. type: array
  1347. items:
  1348. $ref: '#/components/schemas/responseSubsAT'
  1349. '500':
  1350. description: internal server error
  1351.  
  1352. /transaction/redemption:
  1353. post:
  1354. tags:
  1355. - TRX
  1356. summary: Redemption
  1357.  
  1358. operationId: trxRedeem
  1359. description: |
  1360.  
  1361. Mapping to API Avantrade :
  1362.  
  1363. API URI = avantradeapi/services/transaction/redemption (POST)
  1364.  
  1365. body request :
  1366.  
  1367. 1. productId = ut_products.at_product_id (join with ut_products.product_id= ut_products; join with fund_packages_products.ut_products_id = fund_packages.fund_package_id ; join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
  1368. 2. transactionAmount = 0
  1369. 3. feeAmount = 0
  1370. 4. feeRate = find for fee in fund_package_fee_setup.fee_amount (with range from fund_package_fee_setup.amount_min between fund_package_fee_setup.amount_max with fund_package_fee_setup.transaction_type_id = 2
  1371. 5. transactionDate = dd-MMM-yyyy
  1372. 6. settlementAccountId = settlement_accounts.at_settlement_account_id (from bodyRequest.settlementAccountId ; join with bodyRequest.settlementAccountId = settlement_accounts.settlement_account_id; should be verified with token join to kyc.customer_id = settlement_accounts.kycs_id)
  1373. 7. fundSourceId = kyc.source_of_income (from token compare to kyc.customer_id)
  1374. 8. customerId = kyc.at_customer_id
  1375. 9. investmentAccountId = investment_accounts.at_investment_account_id (from token at body request compare to kyc.customer_id join with investment_accounts.kycs_id && packageId at body request compare investment_accounts.fund_paackages_id).
  1376. 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
  1377. 11. transactionNumber = generate by system (like in invisee RyymmddXXXXX)
  1378. 12. redemptionUnit = unit from body request if redemptionType <> ALL.
  1379. 13. redemptionType = body request.redemptType (ALL / null)
  1380.  
  1381. Logic :
  1382.  
  1383. 1. tempVar bodyRequestUnit= body unit
  1384.  
  1385. 2. cari data response menggunakan looping angka dicompare dengan reponse sequnece; bandingkan dengan bodyRequestUnit ; bodyRequestUnit != 0
  1386.  
  1387. Lakukan looping dengan sampai bodyRequestUnit = 0
  1388.  
  1389. a. Apakah bodyRequestUnit= >= remainUnit
  1390. a.1 bodyRequestUnit= bodyRequestUnit-remainUnit
  1391. a.2 get fund_package_fee_setup.fee_amount (dengan kriteria = getDate(now)-response.transactionDate)
  1392.  
  1393. b. Apakah bodyRequestUnit= < remainUnit
  1394. b.1 get fund_package_fee_setup.fee_amount (dengan kriteria : getDate(now)-response.transactionDate).
  1395. subTotal = subTotal + (remainUnit[x] * fund_package_fee_setup.fee_amount)
  1396. b.2 bodyRequestUnit= bodyRequestUnit-bodyRequestUnit
  1397.  
  1398. End Loop
  1399.  
  1400. 3. tempVar = subTotal / body unit
  1401.  
  1402. 4. Create Trx redeem
  1403.  
  1404. requestBody:
  1405. content:
  1406. application/json:
  1407. schema:
  1408. $ref: '#/components/schemas/paramRedeem'
  1409.  
  1410. responses:
  1411. '200':
  1412. description: load success
  1413. content:
  1414. application/json:
  1415. schema:
  1416. type: array
  1417. items:
  1418. $ref: '#/components/schemas/responseRedeem'
  1419. '500':
  1420. description: internal server error
  1421.  
  1422. /transaction/switching:
  1423. post:
  1424. tags:
  1425. - TRX
  1426. summary: Switching
  1427.  
  1428. operationId: trxSwitch
  1429. description: |
  1430.  
  1431. Mapping to API Avantrade :
  1432.  
  1433. API URI = avantradeapi/services/transaction/switching (POST)
  1434.  
  1435. body request :
  1436.  
  1437. 1. customerId = kyc.at_customer_id
  1438. 2. transactionDate = dd-MMM-yyyy
  1439. 3. investmentAccountId = investment_accounts.at_investment_account_id (from token at body request compare to kyc.customer_id join with investment_accounts.kycs_id && packageId at body request compare investment_accounts.fund_paackages_id)
  1440. 4. fromProductId = ut_products.at_product_id (join with fund_packages_products.ut_products_id ; join with fund_package_product_id;join with investment_accounts.fund_packages_id)
  1441. 5. toProductId = ut_products.at_product_id ( join with fund_packages_products.ut_products_id ; join with fund_package_product_id)
  1442. 6. switchingUnit = body request.unit
  1443. 7. feeRate = find for fee in fund_package_fee_setup.fee_amount (with range from fund_package_fee_setup.amount_min between fund_package_fee_setup.amount_max with fund_package_fee_setup.transaction_type_id = 203)
  1444. 8. feeAmount = 0
  1445.  
  1446. 9. settlementAccountId = settlement_accounts.at_settlement_account_id (from bodyRequest.settlementAccountId ; join with bodyRequest.settlementAccountId = settlement_accounts.settlement_account_id; should be verified with token join to kyc.customer_id = settlement_accounts.kycs_id)
  1447.  
  1448. 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
  1449. 11. transactionNumberFrom = generate by middle office (SOxxxxxxxx)
  1450. 12. transactionNumberTo = generate by middle office (SIxxxxxxxx)
  1451. 13. switchingType = body request.switchType (0 = All; -1 = Partial Amount; 1 = Partial Unit)
  1452.  
  1453. Logic :
  1454.  
  1455. 1. tempVar bodyRequestUnit= body unit
  1456.  
  1457. 2. cari data response menggunakan looping angka dicompare dengan reponse sequnece; bandingkan dengan bodyRequestUnit ; bodyRequestUnit != 0
  1458.  
  1459. Lakukan looping dengan sampai bodyRequestUnit = 0
  1460.  
  1461. a. Apakah bodyRequestUnit= >= remainUnit
  1462. a.1 bodyRequestUnit= bodyRequestUnit-remainUnit
  1463. a.2 get fund_package_fee_setup.fee_amount (dengan kriteria = getDate(now)-response.transactionDate)
  1464.  
  1465. b. Apakah bodyRequestUnit= < remainUnit
  1466. b.1 get fund_package_fee_setup.fee_amount (dengan kriteria : getDate(now)-response.transactionDate).
  1467. subTotal = subTotal + (remainUnit[x] * fund_package_fee_setup.fee_amount)
  1468. b.2 bodyRequestUnit= bodyRequestUnit-bodyRequestUnit
  1469.  
  1470. End Loop
  1471.  
  1472. 3. tempVar = subTotal / body unit
  1473.  
  1474. 4. Create Trx Switching
  1475.  
  1476. requestBody:
  1477. content:
  1478. application/json:
  1479. schema:
  1480. $ref: '#/components/schemas/paramSwitch'
  1481.  
  1482. responses:
  1483. '200':
  1484. description: load success
  1485. content:
  1486. application/json:
  1487. schema:
  1488. type: array
  1489. items:
  1490. $ref: '#/components/schemas/responseSwitch'
  1491. '500':
  1492. description: internal server error
  1493.  
  1494. /ManualSync/updateSwitchProductList:
  1495. get:
  1496. tags:
  1497. - MANUAL SYNC
  1498. summary: sync white list of product list
  1499. operationId: syncHoliday
  1500. description: |
  1501. Sync switching list insert into switching_mapping
  1502.  
  1503. API Avantrade :
  1504.  
  1505. avantradeapi/services/foundation/switchProduct
  1506.  
  1507. Mapping :
  1508. - product_in_id = fund_packages.fund_package_id (join with fund_package_products.ut_products_id = response.atProductIn)
  1509. - at_product_id_in = response.atProductInd
  1510. - product_out_id = fund_packages.fund_package_id (join with fund_package_products.ut_products_id = response.atProductOut)
  1511. - row_status = t
  1512. - at_product_id_out = response.atProductOut
  1513.  
  1514. parameters:
  1515. - in: query
  1516. name: token
  1517. description: pass valid token for inquiry
  1518. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  1519. required: true
  1520. schema:
  1521. type: string
  1522.  
  1523. responses:
  1524. '200':
  1525. description: Customer list successfully loaded
  1526. content:
  1527. application/json:
  1528. schema:
  1529. $ref: '#/components/schemas/responseSwitchSync'
  1530. '400':
  1531. description: failed to load
  1532.  
  1533. components:
  1534. schemas:
  1535. paramGetListProduct:
  1536. type: object
  1537. required:
  1538. - token
  1539. properties:
  1540. token:
  1541. type: string
  1542. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  1543.  
  1544.  
  1545. responseProductList:
  1546. type: object
  1547. required:
  1548. - code
  1549. - info
  1550. - data
  1551. - ReferrenceNumber
  1552. properties:
  1553. code:
  1554. type: string
  1555. example: "000000"
  1556. info:
  1557. type: string
  1558. example: "Package list successfully loaded"
  1559. data:
  1560. type: array
  1561. items:
  1562. $ref: '#/components/schemas/responseProductListDetail'
  1563. ReferenceNumber:
  1564. type: string
  1565. example: "<<based on param header from middleware>>"
  1566.  
  1567. responseProductListDetail:
  1568. type: object
  1569. required:
  1570. - type_code
  1571. - package_type
  1572. - package_list
  1573. properties:
  1574. type_code:
  1575. type: string
  1576. example: "MM"
  1577. package_type:
  1578. type: string
  1579. example: "Reksa Dana Pasar Uang"
  1580. package_list:
  1581. type: array
  1582. items:
  1583. $ref: '#/components/schemas/responseProductListDetail2'
  1584.  
  1585. responseProductListDetail2:
  1586. type: object
  1587. required:
  1588. - last_nav_date
  1589. - image
  1590. - last_nav
  1591. - code
  1592. - perf_oneyear
  1593. - name
  1594. - id
  1595. - total_fund
  1596. - recommended
  1597. - prospectus_file
  1598. - fact_sheet_file
  1599. properties:
  1600. last_nav_date:
  1601. type: string
  1602. format: date
  1603. example: "2015-04-20"
  1604. image:
  1605. type: string
  1606. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1607. last_nav:
  1608. type: string
  1609. example: 12467.0
  1610. code:
  1611. type: integer
  1612. format: int32
  1613. example: 14
  1614. perf_oneyear:
  1615. type: string
  1616. example: 0.027443547057853963
  1617. name:
  1618. type: string
  1619. example: "SAHAM DANA"
  1620. id:
  1621. type: integer
  1622. format: int32
  1623. example: 185
  1624. total_fund:
  1625. type: integer
  1626. format: int32
  1627. example: 1
  1628. recommended:
  1629. type: boolean
  1630. example: false
  1631. prospectus_file:
  1632. type: string
  1633. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1634. fact_sheet_file:
  1635. type: string
  1636. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1637.  
  1638. responseProductCategory:
  1639. type: object
  1640. required:
  1641. - code
  1642. - info
  1643. - data
  1644. - ReferrenceNumber
  1645. properties:
  1646. code:
  1647. type: string
  1648. example: "000000"
  1649. info:
  1650. type: string
  1651. example: "Package category successfully loaded"
  1652. data:
  1653. type: array
  1654. items:
  1655. $ref: '#/components/schemas/responseProductCategoryDetail'
  1656. ReferenceNumber:
  1657. type: string
  1658. example: "<<based on param header from middleware>>"
  1659.  
  1660. responseProductCategoryDetail:
  1661. type: object
  1662. required:
  1663. - id
  1664. - code
  1665. - category_name
  1666. properties:
  1667. id:
  1668. type: integer
  1669. format: int32
  1670. example: 96
  1671. code:
  1672. type: string
  1673. example: "BAL"
  1674. category_name:
  1675. type: string
  1676. example: "Reksa Dana Campuran"
  1677.  
  1678. paramGetListProductDetail:
  1679. type: object
  1680. required:
  1681. - token
  1682. - code
  1683. properties:
  1684. code:
  1685. type: string
  1686. example: "MANDIRI118"
  1687. token:
  1688. type: string
  1689. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  1690.  
  1691. responseProductDetail:
  1692. type: object
  1693. required:
  1694. - code
  1695. - info
  1696. - data
  1697. - ReferenceNumber
  1698. properties:
  1699. code:
  1700. type: string
  1701. example: "000000"
  1702. info:
  1703. type: string
  1704. example: "Package detail successfully loaded"
  1705. data:
  1706. type: array
  1707. items:
  1708. $ref: '#/components/schemas/responseProductDetailing'
  1709. ReferenceNumber:
  1710. type: string
  1711. example: "<<based on param header from middleware>>"
  1712.  
  1713. responseProductDetailing:
  1714. type: object
  1715. required:
  1716. - perf_oneyear
  1717. - last_nav_date
  1718. - last_nav
  1719. - prospectus_file
  1720. - fact_sheet_file
  1721. - description
  1722. - minimal_subscribe
  1723. - minimal_topup
  1724. - transaction_cut_off
  1725. - settlement_cut_off
  1726. - settlement_period
  1727. - image
  1728. - code
  1729. - package_type
  1730. - risk_level
  1731. - name
  1732. - effective_date
  1733. - bank_name
  1734. - currency
  1735. - bank_logo
  1736. - type_code
  1737. properties:
  1738. perf_oneyear:
  1739. type: string
  1740. example: 0.027443547057853963
  1741. last_nav_date:
  1742. type: string
  1743. format: date
  1744. example: "2015-04-20"
  1745. last_nav:
  1746. type: string
  1747. example: 12467.0
  1748. prospectus_file:
  1749. type: string
  1750. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1751. fact_sheet_file:
  1752. type: string
  1753. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1754. description:
  1755. type: string
  1756. example: "Packages ini merupakan packages dari MI Danareksa"
  1757. minimal_subscribe:
  1758. type: string
  1759. example: 1000000.0
  1760. minimal_topup:
  1761. type: string
  1762. example: 1000000.0
  1763. transaction_cut_off:
  1764. type: string
  1765. example: "13:00:00"
  1766. settlement_cut_off:
  1767. type: string
  1768. example: "15:00:00"
  1769. settlement_period:
  1770. type: integer
  1771. format: int32
  1772. example: 1
  1773. image:
  1774. type: string
  1775. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  1776. code:
  1777. type: integer
  1778. format: int32
  1779. example: 14
  1780. package_type:
  1781. type: string
  1782. example: "Reksa Dana Pasar Uang"
  1783. risk_level:
  1784. type: string
  1785. example: "CON"
  1786. name:
  1787. type: string
  1788. example: "SAHAM DANA"
  1789. effective_date:
  1790. type: string
  1791. format: date
  1792. example: "2015-04-01"
  1793. bank_name:
  1794. type: string
  1795. example: "BANK CIMB NIAGA, PT, TBK"
  1796. currency:
  1797. type: string
  1798. example: "IDR"
  1799. bank_logo:
  1800. type: string
  1801. example: null
  1802. type_code:
  1803. type: string
  1804. example: "MM"
  1805.  
  1806. responseProductNAV:
  1807. type: object
  1808. required:
  1809. - code
  1810. - info
  1811. - data
  1812. - ReferenceNumber
  1813. properties:
  1814. code:
  1815. type: string
  1816. example: "000000"
  1817. info:
  1818. type: string
  1819. example: "Package detail NAV successfully loaded"
  1820. data:
  1821. type: array
  1822. items:
  1823. $ref: '#/components/schemas/responseProductNAVDetail'
  1824. ReferenceNumber:
  1825. type: string
  1826. example: "<<based on param header from middleware>>"
  1827.  
  1828. responseProductNAVDetail:
  1829. type: object
  1830. required:
  1831. - price_date
  1832. - nav
  1833. properties:
  1834. price_date:
  1835. type: string
  1836. format: date
  1837. example: "2019-04-11"
  1838. nav:
  1839. type: string
  1840. format: date
  1841. example: 2577.9482
  1842.  
  1843. responseSubsFee:
  1844. type: object
  1845. required:
  1846. - code
  1847. - info
  1848. - data
  1849. - ReferenceNumber
  1850. properties:
  1851. code:
  1852. type: string
  1853. example: "000000"
  1854. info:
  1855. type: string
  1856. example: "Package subscription fee successfully loaded"
  1857. data:
  1858. type: array
  1859. items:
  1860. $ref: '#/components/schemas/responseSubsFeeDetail'
  1861. ReferenceNumber:
  1862. type: string
  1863. example: "<<based on param header from middleware>>"
  1864.  
  1865. responseSubsFeeDetail:
  1866. type: object
  1867. required:
  1868. - fee
  1869. - amount_start
  1870. - amount_end
  1871. properties:
  1872. fee:
  1873. type: string
  1874. example: 0.0033
  1875. amount_start:
  1876. type: integer
  1877. format: int32
  1878. example: 0
  1879. amount_end:
  1880. type: integer
  1881. format: int32
  1882. example: 5000000
  1883.  
  1884. responseRedeemFee:
  1885. type: object
  1886. required:
  1887. - code
  1888. - info
  1889. - data
  1890. - ReferenceNumber
  1891. properties:
  1892. code:
  1893. type: string
  1894. example: "000000"
  1895. info:
  1896. type: string
  1897. example: "Package redemption fee successfully loaded"
  1898. data:
  1899. type: array
  1900. items:
  1901. $ref: '#/components/schemas/responseRedeemFeeDetail'
  1902. ReferenceNumber:
  1903. type: string
  1904. example: "<<based on param header from middleware>>"
  1905.  
  1906.  
  1907. responseRedeemFeeDetail:
  1908. type: object
  1909. required:
  1910. - fee
  1911. - period_start
  1912. - period_end
  1913. properties:
  1914. fee:
  1915. type: string
  1916. example: 0.0033
  1917. period_start:
  1918. type: integer
  1919. format: int32
  1920. example: 0
  1921. period_end:
  1922. type: integer
  1923. format: int32
  1924. example: 30
  1925.  
  1926. responseSwitchFee:
  1927. type: object
  1928. required:
  1929. - code
  1930. - info
  1931. - data
  1932. - ReferenceNumber
  1933. properties:
  1934. code:
  1935. type: string
  1936. example: "000000"
  1937. info:
  1938. type: string
  1939. example: "Package switching fee successfully loaded"
  1940. data:
  1941. type: array
  1942. items:
  1943. $ref: '#/components/schemas/responseRedeemFeeDetail'
  1944. ReferenceNumber:
  1945. type: string
  1946. example: "<<based on param header from middleware>>"
  1947.  
  1948. paramGetSettlementAcc:
  1949. type: object
  1950. required:
  1951. - token
  1952. - code
  1953. properties:
  1954. token:
  1955. type: string
  1956. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  1957. code:
  1958. type: string
  1959. example: SYAR118
  1960.  
  1961. responseGetSettlementAcc:
  1962. type: object
  1963. required:
  1964. - code
  1965. - info
  1966. - data
  1967. - ReferenceNumber
  1968. properties:
  1969. code:
  1970. type: string
  1971. example: "000000"
  1972. info:
  1973. type: string
  1974. example: "Settlement Accounts successfully loaded"
  1975. data:
  1976. type: array
  1977. items:
  1978. $ref: '#/components/schemas/responseGetSettlementAccData'
  1979. ReferenceNumber:
  1980. type: string
  1981. example: "<<based on param header from middleware>>"
  1982.  
  1983. responseGetSettlementAccData:
  1984. type: object
  1985. required:
  1986. - packageName
  1987. - packageId
  1988. - stlAccountName
  1989. - stlAccountNo
  1990. - bankName
  1991. - settlementAccountId
  1992. - currency
  1993. properties:
  1994. packageName:
  1995. type: string
  1996. example: "BNP PARIBAS PESONA"
  1997. packageId:
  1998. type: integer
  1999. format: int32
  2000. example: 18
  2001. stlAccountName:
  2002. type: string
  2003. example: 003525976761
  2004. stlAccountNo:
  2005. type: string
  2006. example: 003525976761
  2007. bankName:
  2008. type: string
  2009. example: "Bank Danamon Indonesia"
  2010. settlementAccountId:
  2011. type: string
  2012. example: 3829
  2013. currency:
  2014. type: string
  2015. example: IDR
  2016.  
  2017. paramGetInvtAcc:
  2018. type: object
  2019. required:
  2020. - token
  2021. properties:
  2022. token:
  2023. type: string
  2024. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2025.  
  2026. responseGetInvestmentAcc:
  2027. type: object
  2028. required:
  2029. - code
  2030. - info
  2031. - data
  2032. - ReferenceNumber
  2033. properties:
  2034. code:
  2035. type: string
  2036. example: "000000"
  2037. info:
  2038. type: string
  2039. example: "Settlement Accounts successfully loaded"
  2040. data:
  2041. type: array
  2042. items:
  2043. $ref: '#/components/schemas/responseGetInvestmentAccData'
  2044. ReferenceNumber:
  2045. type: string
  2046. example: "<<based on param header from middleware>>"
  2047.  
  2048. responseGetInvestmentAccData:
  2049. type: object
  2050. required:
  2051. - packageName
  2052. - packageCode
  2053. - packageType
  2054. - packageId
  2055. - currency
  2056. - totalUnit
  2057. - investmentAccountId
  2058. properties:
  2059. packageName:
  2060. type: string
  2061. example: "BNP PARIBAS PESONA"
  2062. packageCode:
  2063. type: string
  2064. example: "BNPPP"
  2065. packageId:
  2066. type: string
  2067. example: "18"
  2068. packageType:
  2069. type: string
  2070. example: "Reksa Dana Pasar Uang"
  2071. currency:
  2072. type: string
  2073. example: "IDR"
  2074. totalUnit:
  2075. type: string
  2076. example: 61374.7954
  2077. investmentAccountId:
  2078. type: string
  2079. example: "INV00000929292001"
  2080. paramRequetOtp:
  2081. type: object
  2082. required:
  2083. - token
  2084. - sessionid
  2085. - language
  2086. properties:
  2087. language:
  2088. type: string
  2089. example: "id"
  2090. sessionId:
  2091. type: string
  2092. example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
  2093. token:
  2094. type: string
  2095. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2096.  
  2097.  
  2098. responseRequestOTP:
  2099. type: object
  2100. required:
  2101. - code
  2102. - info
  2103. - resultAvantrade
  2104. - ReferenceNumber
  2105. properties:
  2106. code:
  2107. type: string
  2108. example: "000000"
  2109. info:
  2110. type: string
  2111. example: "Request OTP Success"
  2112. resultAvantrade:
  2113. type: array
  2114. items:
  2115. $ref: '#/components/schemas/responseRequestOTPAvan'
  2116. ReferenceNumber:
  2117. type: string
  2118. example: "<<based on param header from middleware>>"
  2119.  
  2120. responseRequestOTPAvan:
  2121. type: object
  2122. required:
  2123. - errorcode
  2124. - errormsg
  2125. - result
  2126. properties:
  2127. errorcode:
  2128. type: string
  2129. example: 000000
  2130. errormsg:
  2131. type: string
  2132. example: "SUCCESS"
  2133. result:
  2134. $ref: '#/components/schemas/responseRequestOTPAvan2'
  2135.  
  2136. responseRequestOTPAvan2:
  2137. type: object
  2138. required:
  2139. - issent
  2140. properties:
  2141. issent:
  2142. type: boolean
  2143. example: true
  2144.  
  2145. paramValidateOtp:
  2146. type: object
  2147. required:
  2148. - signature
  2149. - sessionid
  2150. - language
  2151. - otp
  2152. properties:
  2153. language:
  2154. type: string
  2155. example: "id"
  2156. otp:
  2157. type: integer
  2158. format: int32
  2159. example: 12345678
  2160. sessionId:
  2161. type: string
  2162. example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
  2163. token:
  2164. type: string
  2165. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2166.  
  2167. responseValidateOTP:
  2168. type: object
  2169. required:
  2170. - code
  2171. - info
  2172. - resultAvantrade
  2173. - ReferenceNumber
  2174. properties:
  2175. code:
  2176. type: string
  2177. example: "000000"
  2178. info:
  2179. type: string
  2180. example: "Validate OTP Success"
  2181. resultAvantrade:
  2182. type: array
  2183. items:
  2184. $ref: '#/components/schemas/responseValidateOTPAvan'
  2185. ReferenceNumber:
  2186. type: string
  2187. example: "<<based on param header from middleware>>"
  2188.  
  2189. responseValidateOTPAvan:
  2190. type: object
  2191. required:
  2192. - errorcode
  2193. - errormsg
  2194. - result
  2195. properties:
  2196. errorcode:
  2197. type: string
  2198. example: 000000
  2199. errormsg:
  2200. type: string
  2201. example: "SUCCESS"
  2202. result:
  2203. type: array
  2204. items:
  2205. $ref: '#/components/schemas/responseValidateOTPAvan2'
  2206.  
  2207. responseValidateOTPAvan2:
  2208. type: object
  2209. required:
  2210. - isvalid
  2211. properties:
  2212. issent:
  2213. type: boolean
  2214. example: true
  2215.  
  2216. paramSubs:
  2217. type: object
  2218. required:
  2219. - code
  2220. - token
  2221. - transactionAmount
  2222. - settlementAccountId
  2223. - sessionId
  2224. - language
  2225. properties:
  2226. code:
  2227. type: string
  2228. example: MANDIRI118
  2229. token:
  2230. type: string
  2231. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2232. transactionAmount:
  2233. type: integer
  2234. format: int32
  2235. example: 5000000
  2236. settlementAccountId:
  2237. type: integer
  2238. format: int32
  2239. example: 3829
  2240. sessionId:
  2241. type: string
  2242. example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
  2243. lanuage:
  2244. type: string
  2245. example: "ID"
  2246.  
  2247. responseSubs:
  2248. type: object
  2249. required:
  2250. - code
  2251. - info
  2252. - resultAvantrade
  2253. - ReferenceNumber
  2254. properties:
  2255. code:
  2256. type: string
  2257. example: 000000
  2258. info:
  2259. type: string
  2260. example: "Subscription success"
  2261. resultAvantrade:
  2262. type: array
  2263. items:
  2264. $ref: '#/components/schemas/responseSubsAvan'
  2265. ReferenceNumber:
  2266. type: string
  2267. example: "<<based on param header from middleware>>"
  2268.  
  2269. paramSubsAT:
  2270. type: object
  2271. required:
  2272. - code
  2273. - token
  2274. - transactionAmount
  2275. - settlementAccountId
  2276. - sessionId
  2277. - language
  2278. - responseCodeSubs
  2279. - responceInfoSubs
  2280. - trxDate
  2281. properties:
  2282. code:
  2283. type: string
  2284. example: MANDIRI118
  2285. token:
  2286. type: string
  2287. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2288. transactionAmount:
  2289. type: integer
  2290. format: int32
  2291. example: 5000000
  2292. settlementAccountId:
  2293. type: integer
  2294. format: int32
  2295. example: 3829
  2296. sessionId:
  2297. type: string
  2298. example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
  2299. language:
  2300. type: string
  2301. example: "ID"
  2302. responseCodeSubs:
  2303. type: string
  2304. example: "000011"
  2305. responceInfoSubs:
  2306. type: string
  2307. example: "Failed, minimum subscription amount 500000"
  2308. trxDate:
  2309. type: string
  2310. example: "01/01/2019 11:15:22 AM"
  2311.  
  2312. responseSubsAT:
  2313. type: object
  2314. required:
  2315. - code
  2316. - info
  2317. - resultDOB
  2318. - ReferenceNumber
  2319. properties:
  2320. code:
  2321. type: string
  2322. example: 000000
  2323. info:
  2324. type: string
  2325. example: "Subscription success"
  2326. resultDOB:
  2327. type: array
  2328. items:
  2329. $ref: '#/components/schemas/responseSubsATAvan'
  2330. ReferenceNumber:
  2331. type: string
  2332. example: "<<based on param header from middleware>>"
  2333.  
  2334. responseSubsATAvan:
  2335. type: object
  2336. required:
  2337. - error code
  2338. - errorMsg
  2339. properties:
  2340. error code:
  2341. type: string
  2342. example: 000000
  2343. errorMsg:
  2344. type: string
  2345. example: "SUCCESS"
  2346.  
  2347. responseSubsAvan:
  2348. type: object
  2349. required:
  2350. - errorcode
  2351. - errormsg
  2352. - result
  2353. properties:
  2354. errorcode:
  2355. type: string
  2356. example: 000000
  2357. errormsg:
  2358. type: string
  2359. example: "SUCCESS"
  2360. result:
  2361. type: string
  2362. example: ""
  2363.  
  2364. paramRedeem:
  2365. type: object
  2366. required:
  2367. - invAccId
  2368. - unit
  2369. - redeemType
  2370. - settlementAccountId
  2371. - token
  2372. properties:
  2373. invAccId:
  2374. type: string
  2375. example: "INV00000929292001"
  2376. unit:
  2377. type: string
  2378. example: 700
  2379. redeemType:
  2380. type: integer
  2381. format: int32
  2382. example: 1
  2383. settlementAccountId:
  2384. type: integer
  2385. format: int32
  2386. example: 3829
  2387. token:
  2388. type: string
  2389. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2390.  
  2391. responseRedeem:
  2392. type: object
  2393. required:
  2394. - code
  2395. - info
  2396. - resultAvantrade
  2397. - ReferenceNumber
  2398. properties:
  2399. code:
  2400. type: string
  2401. example: 000000
  2402. info:
  2403. type: string
  2404. example: "Redemption success"
  2405. resultAvantrade:
  2406. type: array
  2407. items:
  2408. $ref: '#/components/schemas/responseRedeemAvan'
  2409. ReferenceNumber:
  2410. type: string
  2411. example: "<<based on param header from middleware>>"
  2412.  
  2413. responseRedeemAvan:
  2414. type: object
  2415. required:
  2416. - errorcode
  2417. - errormsg
  2418. - result
  2419. properties:
  2420. errorcode:
  2421. type: string
  2422. example: 000000
  2423. errormsg:
  2424. type: string
  2425. example: "SUCCESS"
  2426. result:
  2427. type: string
  2428. example: ""
  2429.  
  2430. paramSwitch:
  2431. type: object
  2432. required:
  2433. - invAccId
  2434. - fundpackageId
  2435. - unit
  2436. - switchType
  2437. - token
  2438. properties:
  2439. invAccId:
  2440. type: string
  2441. example: "INV00000929292001"
  2442. fundpackageId:
  2443. type: string
  2444. example: 18
  2445. unit:
  2446. type: string
  2447. example: 700
  2448. switchType:
  2449. type: integer
  2450. format: int32
  2451. example: 1
  2452. token:
  2453. type: string
  2454. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2455.  
  2456. responseSwitch:
  2457. type: object
  2458. required:
  2459. - code
  2460. - info
  2461. - resultAvantrade
  2462. - ReferenceNumber
  2463. properties:
  2464. code:
  2465. type: string
  2466. example: 000000
  2467. info:
  2468. type: string
  2469. example: "Switching success"
  2470. resultAvantrade:
  2471. type: array
  2472. items:
  2473. $ref: '#/components/schemas/responseSwitchAvan'
  2474. ReferenceNumber:
  2475. type: string
  2476. example: "<<based on param header from middleware>>"
  2477.  
  2478. responseSwitchAvan:
  2479. type: object
  2480. required:
  2481. - errorcode
  2482. - errormsg
  2483. - result
  2484. properties:
  2485. errorcode:
  2486. type: string
  2487. example: 000000
  2488. errormsg:
  2489. type: string
  2490. example: "SUCCESS"
  2491. result:
  2492. type: string
  2493. example: ""
  2494.  
  2495. responseSwitchProduct:
  2496. type: object
  2497. required:
  2498. - code
  2499. - info
  2500. - data
  2501. - ReferenceNumber
  2502. properties:
  2503. code:
  2504. type: string
  2505. example: "000000"
  2506. info:
  2507. type: string
  2508. example: "List product switch successfully loaded"
  2509. data:
  2510. type: array
  2511. items:
  2512. $ref: '#/components/schemas/responseSwitchProductData'
  2513. ReferenceNumber:
  2514. type: string
  2515. example: "<<based on param header from middleware>>"
  2516.  
  2517. responseSwitchProductData:
  2518. type: object
  2519. required:
  2520. - packageId
  2521. - name
  2522. - packageType
  2523. - currency
  2524. - prospectus_file
  2525. - fact_sheet_file
  2526. properties:
  2527. packageId:
  2528. type: string
  2529. example: 144
  2530. name:
  2531. type: string
  2532. example: BNP Pasar Minggu
  2533. packageType:
  2534. type: string
  2535. example: "Reksa Dana Pasar Uang"
  2536. currency:
  2537. type: string
  2538. example: "IDR"
  2539. prospectus_file:
  2540. type: string
  2541. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  2542. fact_sheet_file:
  2543. type: string
  2544. example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
  2545.  
  2546.  
  2547. responseSwitchSync:
  2548. type: object
  2549. required:
  2550. - code
  2551. - info
  2552. properties:
  2553. code:
  2554. type: integer
  2555. format: int32
  2556. example: 0
  2557. info:
  2558. type: string
  2559. example: 'sync switch product success!<br>'
  2560.  
  2561. paramValidateTrx:
  2562. type: object
  2563. required:
  2564. - code
  2565. - token
  2566. properties:
  2567. code:
  2568. type: string
  2569. example: "FUNNY12"
  2570. token:
  2571. type: string
  2572. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  2573.  
  2574. responseValidateTrx:
  2575. type: object
  2576. required:
  2577. - code
  2578. - info
  2579. - ReferenceNumber
  2580. properties:
  2581. code:
  2582. type: string
  2583. example: "000001"
  2584. info:
  2585. type: string
  2586. example: "Transaksi telah melampaui cut off time, dan akan diproses pada hari kerja berikutnya"
  2587. ReferenceNumber:
  2588. type: string
  2589. example: "<<based on param header from middleware>>"
  2590.  
  2591. paramValidateRiskProfile:
  2592. type: object
  2593. required:
  2594. - token
  2595. properties:
  2596. token:
  2597. type: string
  2598. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  2599.  
  2600. responseValidateRiskProfile:
  2601. type: object
  2602. required:
  2603. - code
  2604. - info
  2605. - ReferenceNumber
  2606. properties:
  2607. code:
  2608. type: string
  2609. example: "000001"
  2610. info:
  2611. type: string
  2612. example: "Data profil risiko Anda sudah tidak berlaku, silakan kunjungi Cabang Danamon terdekat untuk melakukan pengkinian data"
  2613. ReferenceNumber:
  2614. type: string
  2615. example: "<<based on param header from middleware>>"
  2616.  
  2617. paramValidateRiskProfile2:
  2618. type: object
  2619. required:
  2620. - token
  2621. - code
  2622. properties:
  2623. token:
  2624. type: string
  2625. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  2626. code:
  2627. type: string
  2628. example: "FUNNY12"
  2629.  
  2630. responseValidateRiskProfile2:
  2631. type: object
  2632. required:
  2633. - code
  2634. - info
  2635. - ReferenceNumber
  2636. properties:
  2637. code:
  2638. type: string
  2639. example: "000001"
  2640. info:
  2641. type: string
  2642. example: Maaf, Anda tidak dapat melanjutkan transaksi karena Risk Profile product yang anda pilih melebihi dari Risk Profile Anda.""
  2643. ReferenceNumber:
  2644. type: string
  2645. example: "<<based on param header from middleware>>"
  2646.  
  2647. paramValidateLimitProduct:
  2648. type: object
  2649. required:
  2650. - token
  2651. - code
  2652. - amount
  2653. properties:
  2654. code:
  2655. type: string
  2656. example: "FUNNY12"
  2657. token:
  2658. type: string
  2659. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2660. Amount:
  2661. type: integer
  2662. format: int32
  2663. example: 50000
  2664. responseValidateLimitProduct:
  2665. type: object
  2666. required:
  2667. - code
  2668. - info
  2669. - ReferenceNumber
  2670. properties:
  2671. code:
  2672. type: integer
  2673. format: int32
  2674. example: 1
  2675. info:
  2676. type: string
  2677. example: "Minimum transaksi adalah fund_packages.currency<<space>> fund_packages.min_subscription_amount"
  2678. ReferenceNumber:
  2679. type: string
  2680. example: "<<based on param header from middleware>>"
  2681.  
  2682. paramDownloadFile:
  2683. type: object
  2684. required:
  2685. - token
  2686. - key
  2687. properties:
  2688. key:
  2689. type: string
  2690. example: "c03c8067-b141-4825-ae37-b68853f48ece"
  2691. token:
  2692. type: string
  2693. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  2694.  
  2695. responseDownloadFile:
  2696. type: object
  2697. required:
  2698. - binnary file
  2699. properties:
  2700. file:
  2701. type: string
  2702. example: "<<binnary file>>"
  2703.  
  2704. paramGetCustomerProfile:
  2705. type: object
  2706. required:
  2707. - token
  2708. properties:
  2709. token:
  2710. type: string
  2711. example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
  2712.  
  2713. responseGetCustomerProfile:
  2714. type: object
  2715. required:
  2716. - customer_id
  2717. - customer_risk_profile.code
  2718. - customer_risk_profile.value
  2719. - customer_document.id_card_image
  2720. - customer_document.signature_image
  2721. - customer_status
  2722. - customer_data.general.last_name
  2723. - customer_data.general.phone_number
  2724. - customer_data.general.first_name
  2725. - kyc.settlement_account_no
  2726. - kyc.id_number
  2727. - kyc.total_asset
  2728. - kyc.occupation
  2729. - kyc.gender
  2730. - kyc.id_expiration
  2731. - kyc.birth_date
  2732. - kyc.income_source
  2733. - kyc.birth_place
  2734. - kyc.investment_purpose
  2735. - kyc.education_background
  2736. - kyc.business_nature
  2737. - kyc.mailing.country
  2738. - kyc.mailing.address
  2739. - kyc.mailing.province
  2740. - kyc.mailing.city
  2741. - kyc.mailing.phone
  2742. - kyc.mailing.postal_code
  2743. - kyc.mother_maiden_name
  2744. - kyc.religion
  2745. - kyc. marital_status
  2746. - kyc.nationality
  2747. - kyc.investment_experience
  2748. - kyc.settlement_bank
  2749. - kyc.legal.country
  2750. - kyc.legal.province
  2751. - kyc.legal.city
  2752. - kyc.legal.phone
  2753. - kyc.legal.postal_code
  2754. - kyc.settlement_account_name
  2755. - kyc.statement_type
  2756. - risk_profile.question
  2757. - risk_profile.answer
  2758. - fatca.question
  2759. - fatca.answer
  2760.  
  2761. properties:
  2762. code:
  2763. type: string
  2764. example: "000000"
  2765. info:
  2766. type: string
  2767. example: "Customer profile successfully loaded"
  2768. data:
  2769. $ref: '#/components/schemas/responseGetCustomerProfile2'
  2770. ReferenceNumber:
  2771. type: string
  2772. example: "<<based on param header from middleware>>"
  2773.  
  2774. responseGetCustomerProfile2:
  2775. type: object
  2776. properties:
  2777. customer_id:
  2778. type: integer
  2779. format: int32
  2780. example: C1703000000
  2781. customer_risk_profile:
  2782. $ref: '#/components/schemas/responseGetCustomerProfile3'
  2783. customer_document:
  2784. $ref: '#/components/schemas/responseGetCustomerProfile4'
  2785. customer_status:
  2786. type: string
  2787. example: ACT
  2788. customer_data:
  2789. $ref: '#/components/schemas/responseGetCustomerProfile5'
  2790. kyc:
  2791. $ref: '#/components/schemas/responseGetCustomerProfile6'
  2792.  
  2793.  
  2794. responseGetCustomerProfile3:
  2795. type: object
  2796. properties:
  2797. code:
  2798. type: string
  2799. example: CON
  2800. value:
  2801. type: string
  2802. example: Conservative
  2803.  
  2804. responseGetCustomerProfile4:
  2805. type: object
  2806. properties:
  2807. id_card_image:
  2808. type: string
  2809. example: ""
  2810. signature_image:
  2811. type: string
  2812. example: ""
  2813.  
  2814. responseGetCustomerProfile5:
  2815. type: object
  2816. properties:
  2817. general:
  2818. $ref: '#/components/schemas/responseGetCustomerProfile5.1'
  2819.  
  2820. responseGetCustomerProfile5.1:
  2821. type: object
  2822. properties:
  2823. last_name:
  2824. type: string
  2825. example: "Dermawan 2"
  2826. phone_number:
  2827. type: string
  2828. example: "62-81234567890"
  2829. first_name:
  2830. type: string
  2831. example: "Leo T"
  2832.  
  2833. responseGetCustomerProfile6:
  2834. type: object
  2835. properties:
  2836. settlement_account_no:
  2837. type: string
  2838. example: "1234560"
  2839. id_number:
  2840. type: string
  2841. example: "12345678909"
  2842. total_asset:
  2843. type: string
  2844. example: "TA01"
  2845. occupation:
  2846. type: string
  2847. example: "8"
  2848. gender:
  2849. type: string
  2850. example: "ML"
  2851. id_expiration:
  2852. type: string
  2853. example: "2099-12-31T00:00:00,0Z"
  2854. birth_date:
  2855. type: string
  2856. example: "694112400000"
  2857. income_source:
  2858. type: string
  2859. example: "OTH"
  2860. birth_place:
  2861. type: string
  2862. example: "Jakarta"
  2863. investment_purpose:
  2864. type: string
  2865. example: "OTH"
  2866. education_background:
  2867. type: string
  2868. example: "DIP"
  2869. business_nature:
  2870. type: string
  2871. example: "10"
  2872. mailing:
  2873. $ref: '#/components/schemas/responseGetCustomerProfile6.1'
  2874. mother_maiden_name:
  2875. type: string
  2876. example: "lulu"
  2877. marital_status:
  2878. type: string
  2879. example: "MRD"
  2880. nationality:
  2881. type: string
  2882. example: "SPM"
  2883. investment_experience:
  2884. type: string
  2885. example: "IE03"
  2886. settlement_bank:
  2887. type: string
  2888. example: "BCA"
  2889. settlement_account_name:
  2890. type: string
  2891. example: "Customer test 2"
  2892. statement_type:
  2893. type: string
  2894. example: "1"
  2895. legal:
  2896. $ref: '#/components/schemas/responseGetCustomerProfile6.2'
  2897. risk_profile:
  2898. type: array
  2899. items:
  2900. $ref: '#/components/schemas/responseGetCustomerProfile6.3'
  2901. fatca:
  2902. type: array
  2903. items:
  2904. $ref: '#/components/schemas/responseGetCustomerProfile6.4'
  2905.  
  2906. responseGetCustomerProfile6.1:
  2907. type: object
  2908. properties:
  2909. country:
  2910. type: string
  2911. example: "IDN"
  2912. address:
  2913. type: string
  2914. example: "Tangerang"
  2915. province:
  2916. type: string
  2917. example: "ID-GO"
  2918. city:
  2919. type: string
  2920. example: "1173"
  2921. phone:
  2922. type: string
  2923. example: "62-21-1234567890"
  2924. postal_code:
  2925. type: string
  2926. example: "1234560"
  2927.  
  2928. responseGetCustomerProfile6.2:
  2929. type: object
  2930. properties:
  2931. country:
  2932. type: string
  2933. example: "SPM"
  2934. address:
  2935. type: string
  2936. example: "Kantor"
  2937. province:
  2938. type: string
  2939. example: "ID-JA"
  2940. city:
  2941. type: string
  2942. example: "1102"
  2943. phone:
  2944. type: string
  2945. example: "62-21-123456789"
  2946. postal_code:
  2947. type: string
  2948. example: "1234560"
  2949.  
  2950. responseGetCustomerProfile6.3:
  2951. type: object
  2952. properties:
  2953. question:
  2954. type: string
  2955. example: "Q1"
  2956. answer:
  2957. type: string
  2958. example: "[Q1A2]"
  2959.  
  2960. responseGetCustomerProfile6.4:
  2961. type: object
  2962. properties:
  2963. question:
  2964. type: string
  2965. example: "Q10"
  2966. answer:
  2967. type: string
  2968. example: "[Q10A1]"
  2969.  
  2970. paramGetInvestmentPurpose:
  2971. type: object
  2972. required:
  2973. - token
  2974. properties:
  2975. token:
  2976. type: string
  2977. example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
  2978.  
  2979. responseGetInvestmentPurpose:
  2980. type: object
  2981. required:
  2982. - code
  2983. - info
  2984. - data
  2985. - ReferenceNumber
  2986. properties:
  2987. code:
  2988. type: string
  2989. example: "000000"
  2990. info:
  2991. type: string
  2992. example: "List investment purposes successfully loaded"
  2993. data:
  2994. type: array
  2995. items:
  2996. $ref: '#/components/schemas/responseGetInvestmentPurposeData'
  2997. ReferenceNumber:
  2998. type: string
  2999. example: "<<based on param header from middleware>>"
  3000.  
  3001. responseGetInvestmentPurposeData:
  3002. type: object
  3003. required:
  3004. - code
  3005. - value
  3006. properties:
  3007. code:
  3008. type: string
  3009. example: "SVG"
  3010. value:
  3011. type: string
  3012. example: "Saving"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement