· 6 years ago · Nov 01, 2019, 02:08 AM
1openapi: 3.0.0
2servers:
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
8info:
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
19paths:
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. signature = Signature of the agent
72
73 2. agent = Agent code
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 3. signature = Signature of the agent
137
138 4. agent = Agent code
139
140
141 Response :
142
143 Showing fund package list detail where fund_packages.package_code = bodyRequest.Code
144
145 1. perf_oneyear
146
147 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
148
149 3. last_nav = ut_product_fund_prices.bid_price (mengacu join point 2)
150
151 4. prospectus_file = ut_products.prospectus_file (fund_package_products.ut_products_id = ut_products.product_id)
152
153 5. fact_sheet_file = ut_products.fund_fact_sheet_key (fund_package_products.ut_products_id = ut_products.product_id)
154
155 6. description = fund_packages.package_desc
156
157 7. minimal_subscribe = fund_packages.min_subscription_amount
158
159 8. minimal_topup = fund_packages.min_topup_amount
160
161 9. transaction_cut_off = fund_packages.transaction_cut_off
162
163 10. settlement_cut_off = fund_packages.settlement_cut_off
164
165 11. settlement_period = fund_packages.settlement_period
166
167 12. image = fund_packages.package_image (join fundpackage id)
168
169 13. code = fund_packages.package_code
170
171 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)
172
173 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)
174
175 16. name = fund_packages.fund_package_name
176
177 17. effective_date = fund_packages.effective_date
178
179 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)
180
181 19. currency = fund_packages.currency
182
183 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)
184
185 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)
186
187 requestBody:
188 content:
189 application/json:
190 schema:
191 $ref: '#/components/schemas/paramGetListProductDetail'
192
193 responses:
194 '200':
195 description: load success
196 content:
197 application/json:
198 schema:
199 $ref: '#/components/schemas/responseProductDetail'
200 '500':
201 description: internal server error
202
203 /package/NAV:
204 post:
205 tags:
206 - PRODUCT LIST
207 summary: show product all nav where fund_packages.package_code = body_request.code order by ut_product_fund_prices.price_date.
208
209 operationId: postPackageNAV
210 description: |
211
212 Body Request :
213
214 1. token = token valid from login
215
216 2. Code = code compare to fund_packages.package_code
217
218 3. range = amount of date range
219
220 Response :
221
222 var dateFilter = getDate(Now) - bodyRequest.range.
223
224 Showing nav where fund_packages.package_code = bodyRequest.code and ut_product_fund_prices.price_date >= dateFilter; 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
225
226 1. price_date = ut_product_fund_prices.price_date
227
228 2. nav = ut_product_fund_prices.bid_price
229
230
231 requestBody:
232 content:
233 application/json:
234 schema:
235 $ref: '#/components/schemas/paramGetNAV'
236
237 responses:
238 '200':
239 description: load success
240 content:
241 application/json:
242 schema:
243 $ref: '#/components/schemas/responseProductNAV'
244 '500':
245 description: internal server error
246
247 /package/subscription_fee:
248 post:
249 tags:
250 - PRODUCT LIST
251 summary: show product fee for subscription where fund_packages.package_code = body_request.code.
252
253 operationId: postPackageSubsFee
254 description: |
255
256 Body Request :
257
258 1. token = token valid from login
259
260 2. Code = bodyRequest.code compare to fund_packages.package_code
261
262 Response :
263
264 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;
265
266 1. fee = fund_package_fee_setup.fee_amount
267
268 2. amount_start = fund_package_fee_setup.amount_min
269
270 3. amount_end = fund_package_fee_setup.amount_max
271
272
273 requestBody:
274 content:
275 application/json:
276 schema:
277 $ref: '#/components/schemas/paramGetListProductDetail'
278
279 responses:
280 '200':
281 description: load success
282 content:
283 application/json:
284 schema:
285 $ref: '#/components/schemas/responseSubsFee'
286 '500':
287 description: internal server error
288
289 /package/redemption_fee:
290 post:
291 tags:
292 - PRODUCT LIST
293 summary: show product fee for redemption where fund_packages.package_code = body_request.code.
294
295 operationId: postPackageRedeemFee
296 description: |
297
298 Body Request :
299
300 1. token = token valid from login
301
302 2. Code = bodyRequest.code compare to fund_packages.package_code
303
304
305 Response :
306
307 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;
308
309 1. fee = fund_package_fee_setup.fee_amount
310
311 2. amount_start = fund_package_fee_setup.amount_min
312
313 3. amount_end = fund_package_fee_setup.amount_max
314
315
316 requestBody:
317 content:
318 application/json:
319 schema:
320 $ref: '#/components/schemas/paramGetListProductDetail'
321
322 responses:
323 '200':
324 description: load success
325 content:
326 application/json:
327 schema:
328 $ref: '#/components/schemas/responseRedeemFee'
329 '500':
330 description: internal server error
331
332 /package/switching_fee:
333 post:
334 tags:
335 - PRODUCT LIST
336 summary: show product fee for switching where fund_packages.package_code = body_request.code.
337
338 operationId: postPackageSwitchFee
339 description: |
340
341 Body Request :
342
343 1. token = token valid from login
344
345 2. Code = bodyRequest.code compare to fund_packages.package_code
346
347
348 Response :
349
350 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;
351
352 1. fee = fund_package_fee_setup.fee_amount
353
354 2. amount_start = fund_package_fee_setup.amount_min
355
356 3. amount_end = fund_package_fee_setup.amount_max
357
358
359 requestBody:
360 content:
361 application/json:
362 schema:
363 $ref: '#/components/schemas/paramGetListProductDetail'
364
365 responses:
366 '200':
367 description: load success
368 content:
369 application/json:
370 schema:
371 $ref: '#/components/schemas/responseSwitchFee'
372 '500':
373 description: internal server error
374
375 /package/getSwitchProduct:
376 post:
377 tags:
378 - PRODUCT LIST
379 summary: show product can be switched.
380
381 operationId: postPackageSwitchAllowed
382 description: |
383
384 Body Request :
385
386 1. token = token valid from login
387
388 2. code = bodyRequest.code compare to fund_packages.package_code
389
390
391 Response :
392
393 Logic :
394 1. Find ut_products.investment_account_id; ut_products.currency from (join fund_package_products.ut_products_id = ut_products.product_id;join fund_packages.fund_package_id = fund_package_products.fund_packages_id;where fund_packages.package_code = bodyRequest = code)
395
396 2. Find ut_products.product_id where ut_products.investment_account_id = point 1 and ut_products.allow_switching = -1 and ut_products.currency = point 1(kecuali diri sendiri).
397
398 3. Find fund_package_products.fund_packages_id where fund_package_products.ut_products_id = point 2
399
400 4. Showing data from table fund_packages & ut_products
401
402 Mapping data :
403
404 1. packageId = fund_packages.fund_package_id (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
405 2. name = fund_packages.fund_package_name (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
406 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)
407 4. currency = fund_packages.currency (join switching_mapping.product_in_id = fund_packages.fund_package_id; bodyRequest.code = fund_packages.code)
408 5. prospectus_file = ut_products.prospectus_file (fund_package_products.ut_products_id = ut_products.product_id; bodyRequest.code = fund_packages.code)
409 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)
410
411
412 requestBody:
413 content:
414 application/json:
415 schema:
416 $ref: '#/components/schemas/paramGetListProductDetail'
417
418 responses:
419 '200':
420 description: load success
421 content:
422 application/json:
423 schema:
424 $ref: '#/components/schemas/responseSwitchProduct'
425 '500':
426 description: internal server error
427
428
429 /customer/getSettlementAccounts:
430 post:
431 tags:
432 - CUSTOMER
433 summary: show settlement account based on valid customer token
434
435 operationId: postSettlementAccount
436 description: |
437
438 Body Request :
439
440 1. token = token valid from login
441
442 2. code = fund package code
443
444 Response :
445
446 showing data for settlement account from token valid compare with kyc id from token valid and currency.
447
448 Version 1
449 Response :
450
451 showing data for settlement account (from table settlement_account) from token valid compare with kyc id from token valid.
452 (settlement_accounts.kycs_id = kyc.customer_id and ; currency = fund_packages.currency)
453
454 1. stlAccountName = settlement_accounts.settlement_account_name
455
456 2. stlAccountNo = settlement_accounts.settlement_account_no
457
458 3. bankName = bank.bank_name (join settlement_accounts.bank_id_id = bank.bank_id)
459
460 4. settlementAccountId = settlement_accounts.settlement_account_id
461
462 5. currency = settlement_accounts.currency
463
464 6. availableBalance = acct_facility_list.acct_casa_balance (from API Danamon).
465
466
467 after that compare to API Danamon : https://middleware-uat.danamon/cif/inquiry
468
469 Request =
470
471 - channel_id = AVT1
472 - bin_no = 0000
473 - user_ref_no = channel_id+ sysdate(ddmmyyHHMMSS)
474 - request_time = sysdate(yyyymmddHHMMSS)
475 - acct_id = kyc.portalcif (get CIF from token valid)
476 - type_id = 90
477 - service_code = CUSTOMER_INQ
478 - auth_token = sha256(user_ref_no+sha256(key)+ request_time+ service_code)
479
480 note : untuk key nanti dimasukkan dalam global parameter.
481
482 search by ==> stlAccountNo = acct_facility_list.acct_no
483
484 if acct_facility_list.acct_status == 00 && acct_facility_list.acct_real_status == 8 || 20.
485 maka data stlAccountNo tersebut ditampilkan pada response API.
486
487
488
489 requestBody:
490 content:
491 application/json:
492 schema:
493 $ref: '#/components/schemas/paramGetSettlementAcc'
494
495 responses:
496 '200':
497 description: load success
498 content:
499 application/json:
500 schema:
501 $ref: '#/components/schemas/responseGetSettlementAcc'
502 '500':
503 description: internal server error
504
505 /customer/getInvestmentAccounts:
506 post:
507 tags:
508 - CUSTOMER
509 summary: show investment account based on valid customer token
510
511 operationId: getInvestmentAccount
512 description: |
513
514 Body Request :
515
516 1. token = token valid from login
517
518 Version 1
519 Response :
520
521 showing data for investment account (from table investment_account) from token valid compare with kyc id from token valid.
522 (investment_accounts.kycs_id = kyc.customer_id)
523
524 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
525
526 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)
527
528 3. currency = fund_packages.currency (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
529
530 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
531
532 5. investmentAccountId = investment_accounts.investment_account_no
533
534 6. packageCode = fund_packages.package_code (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
535
536 7. packageId = fund_packages.fund_package_id (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
537
538 Versi 2
539 Response : (not used)
540
541 showing data for investment account (from table investment_account_grouping) from token valid compare with kyc id from token valid.
542 (investment_account_grouping.kycs_id = kyc.customer_id;) join with investment_accounts (investment_accounts.inv_acc_group_id = investment_account_grouping.id)
543
544 1. packageName = fund_packages.fund_packages_name (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
545
546 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)
547
548 3. currency = settlement_accounts.currency (join settlement_accounts.settlement_account_id = investment_accounts = settlement_accounts.settlement_accounts_id)
549
550 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
551
552 5. investmentAccountId = investment_accounts.investment_account_no
553
554 6. packageCode = fund_packages.package_code (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
555
556 7. packageId = fund_packages.fund_package_id (join with investment_accounts.fund_packages_id = fund_packages.fund_package_id)
557
558
559 requestBody:
560 content:
561 application/json:
562 schema:
563 $ref: '#/components/schemas/paramGetInvtAcc'
564
565 responses:
566 '200':
567 description: load success
568 content:
569 application/json:
570 schema:
571 $ref: '#/components/schemas/responseGetInvestmentAcc'
572 '500':
573 description: internal server error
574
575 /customer/profile_view:
576 post:
577 tags:
578 - CUSTOMER
579 summary: show detail customer information
580
581 operationId: postProfileView
582 description: |
583
584 Body Request :
585
586 1. token = token valid from login
587
588 Response :
589
590 showing data for kyc table from token valid compare with kyc.customer_id from token valid.
591
592 1. customer_id = kyc.portalcif
593
594 2. customer_risk_profile.code = score.score_code (join kyc.risk_profile_id = score.score_id)
595
596 3. customer_risk_profile.value = score.score_name (join kyc.risk_profile_id = score.score_id)
597
598 4. customer_document.id_card_image = customer_document.file_key
599
600 (
601
602 join kyc.acc=ount_id = _user.id
603
604 join customer_document.user_id = _user.id
605
606 where customer_document.document_type = DocTyp01 and customer_document.row_status = t
607
608 order by customer_document.created_on desc
609
610 )
611
612 5. customer_document.signature_image = customer_document.file_key
613
614 (
615
616 join kyc.account_id = _user.id
617
618 join customer_document.user_id = _user.id
619
620 where customer_document.document_type = DocTyp03 and customer_document.row_status = t
621
622 order by customer_document.created_on desc
623
624 )
625
626 6. customer_status = _user.user_status (join kyc.account_id = _user.id)
627
628 7. customer_data.general.last_name = kyc.last_name
629
630 8. customer_data.general.phone_number = = kyc.mobile_number
631
632 9. customer_data.general.first_name = kyc.first_name
633
634 10. kyc.settlement_account.stlAccountName = settlement_accounts.settlement_account_name (join kyc.customer_id = settlement_accounts.kycs_id)
635
636 11. kyc.settlement_account.stlAccountNo .stlAccountName = settlement_accounts.settlement_account_no (join kyc.customer_id = settlement_accounts.kycs_id)
637
638 12. kyc.settlement_account.bankName = bank.bank_name (join settlement_accounts.bank_id_id = bank.bank_id)
639
640 13. kyc.settlement_account.settlementAccountId = settlement_accounts.settlement_account_id
641
642 14. kyc.settlement_account.currency = settlement_accounts.currency
643
644 15. kyc.id_number = kyc.id_number
645
646 16. kyc.total_asset = kyc.total_asset
647
648 17. kyc.occupation = kyc.occupation
649
650 18. kyc.gender = kyc.gender
651
652 19. kyc.id_expiration = kyc.id_expiration_date
653
654 20. kyc.birth_date = kyc.birth_date
655
656 21. kyc.income_source = kyc.source_of_income
657
658 22. kyc.birth_place = kyc.birth_place
659
660 23. kyc.investment_purpose = kyc.investment_purpose
661
662 24. kyc.education_background = kyc.education_background
663
664 25. kyc.business_nature = kyc.nature_of_business
665
666 26. kyc.mailing.country = kyc.mailing_country
667
668 27. kyc.mailing.address = kyc.mailing_address
669
670 28. kyc.mailing.province = kyc.mailing_province
671
672 29. kyc.mailing.city = kyc.mailing_city
673
674 30. kyc.mailing.phone = kyc.legal_phone_number
675
676 31. kyc.mailing.postal_code = kyc.mailing_postal_code
677
678 32. kyc.mother_maiden_name = kyc.mother_maiden_name
679
680 33. kyc.religion = kyc.religion
681
682 34. kyc. marital_status = kyc.marital_status
683
684 35. kyc.nationality = kyc.nationality
685
686 36. kyc.investment_experience = kyc.investment_experience
687
688 37. kyc.settlement_bank = bank.bank_code
689
690 (
691
692 join kyc.customer_id = settlement_accounts.kycs_id
693
694 join settlement_accounts.bank_id_id = bank.bank_id
695
696 )
697
698 38. kyc.legal.country = kyc.legal_country
699
700 39. kyc.legal.province = SELECT kyc.legal_province
701
702 40. kyc.legal.city = kyc.legal_city
703
704 41. kyc.legal.phone = kyc.legal_phone_number
705
706 42
707 . kyc.legal.postal_code = kyc.legal_postal_code
708
709 43. kyc.settlement_account_name = settlement_accounts.settlement_account_name (join kyc.customer_id = settlement_accounts.kycs_id)
710
711 44. kyc.statement_type
712
713 45. risk_profile.question = question.question_name
714
715 (
716 join customer_answer.kycs_id = kyc.customer_id
717
718 join question.question_id = customer_answer.question_id
719
720 joint answer.answer_id = customer_answer.question_id
721
722 where question.questionaires_id = 6
723 )
724
725 46. risk_profile.answer = answer.answer_name
726
727 (
728 join customer_answer.kycs_id = kyc.customer_id
729
730 join question.question_id = customer_answer.question_id
731
732 joint answer.answer_id = customer_answer.question_id
733
734 where question.questionaires_id = 6
735 )
736
737 47. fatca.question = question.question_name
738
739 (
740 join customer_answer.kycs_id = kyc.customer_id
741
742 join question.question_id = customer_answer.question_id
743
744 joint answer.answer_id = customer_answer.question_id
745
746 where question.questionaires_id = 2
747 )
748
749 48. fatca.answer = = answer.answer_name
750 (
751 join customer_answer.kycs_id = kyc.customer_id
752
753 join question.question_id = customer_answer.question_id
754
755 joint answer.answer_id = customer_answer.question_id
756
757 where question.questionaires_id = 2
758 )
759
760 requestBody:
761 content:
762 application/json:
763 schema:
764 $ref: '#/components/schemas/paramGetCustomerProfile'
765
766 responses:
767 '200':
768 description: load success
769 content:
770 application/json:
771 schema:
772 $ref: '#/components/schemas/responseGetCustomerProfile'
773 '500':
774 description: internal server error
775
776 /customer/getInvestmentPurposeList:
777 post:
778 tags:
779 - CUSTOMER
780 summary: show investment purpose.
781
782 operationId: postInvestmentPurpose
783 description: |
784 to show data investment purposes from table look up line
785 where lookup_header.category = 'INVESTMENT_PURPOSE'
786 order by lookup_id
787
788 Response :
789 - code : lookup_line.code (join with lookup_line.category_id = lookup_header.category_id)
790 - value : lookup_line.code
791
792 requestBody:
793 content:
794 application/json:
795 schema:
796 $ref: '#/components/schemas/paramGetInvestmentPurpose'
797
798 responses:
799 '200':
800 description: load success
801 content:
802 application/json:
803 schema:
804 $ref: '#/components/schemas/responseGetInvestmentPurpose'
805 '500':
806 description: internal server error
807
808 /otp/requestOtp:
809 post:
810 tags:
811 - OTP
812 summary: send otp to customer
813
814 operationId: postSendOTP
815 description: |
816
817 Body Request from widget frontend :
818
819 1. token = token valid from login
820
821 2. sessionId
822
823 3. language = ind / eng
824
825
826 Mapping to API Avantrade :
827
828 API URI = /api/SendOTP (POST)
829
830 body request to API Danamon:
831
832 1. sendotp --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> sessionid:value|language:value
833
834 2. timestamp --> yyyyMMddHHmm
835
836 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
837
838 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
839
840 example:
841
842 {
843
844
845 "sendotp" : "sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|language:id",
846
847 "timestamp":"201828091520",
848
849 "sequencenumber":"60140001132894152011",
850
851 "referencenumber":"20182809152060140001132894152011"
852
853
854 }
855
856
857 Response Code :
858
859 0 ==> if response APIAvantrade code 000000
860 1 ==> if response APIAvantrade code 200001, 200002, 200005, 200004, 200007, 100001, 10000, 100003
861 99 ==> General Error / other error from list above
862
863 requestBody:
864 content:
865 application/json:
866 schema:
867 $ref: '#/components/schemas/paramRequetOtp'
868
869 responses:
870 '200':
871 description: load success
872 content:
873 application/json:
874 schema:
875 $ref: '#/components/schemas/responseRequestOTP'
876 '500':
877 description: internal server error
878
879 /general/download:
880 post:
881 tags:
882 - GENERAL FUNCTION
883 summary: download document from key on table attach_file
884
885 operationId: postDownloadFile
886 description: |
887
888 Body Request :
889
890 1. token = token signature
891
892 2. key = code compare to fund_packages.package_code
893
894
895 Response :
896
897 binary file
898
899 requestBody:
900 content:
901 application/json:
902 schema:
903 $ref: '#/components/schemas/paramDownloadFile'
904
905 responses:
906 '200':
907 description: load success
908 content:
909 application/json:
910 schema:
911 $ref: '#/components/schemas/responseDownloadFile'
912 '500':
913 description: internal server error
914
915 /otp/checkOtp:
916 post:
917 tags:
918 - OTP
919 summary: validate otp
920
921 operationId: postValidateOTP
922 description: |
923
924 Body Request from widget frontend :
925
926 1. token = token valid from login
927
928 2. sessionId
929
930 3. language = ind / eng
931
932 4. otp
933
934 Mapping to API Avantrade :
935
936 API URI = /api/VerifyOTP (POST)
937
938 body request :
939
940 1. verifyotp --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ;
941 Data --> sessionid:value|otpvalue:value|language:value
942
943 example : sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|otpvalue:12345678|language:id
944
945 2. timestamp --> yyyyMMddHHmm
946
947 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
948
949 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
950
951 example:
952
953 {
954
955
956 "verifyotp" : "sessionid:7C5407E7-4D86-4BB4-B1E1-00A2B90AF364|otpvalue:12345678|language:id",
957
958 "timestamp":"201828091520",
959
960 "sequencenumber":"60140001132894152011",
961
962 "referencenumber":"20182809152060140001132894152011"
963
964
965 }
966
967
968 Response Code :
969
970 0 ==> if response APIAvantrade code 000000
971 1 ==> if response APIAvantrade code 200001, 200002, 200003, 200004, 100001, 100002, 100003
972 99 ==> General Error / other error from list above
973
974 requestBody:
975 content:
976 application/json:
977 schema:
978 $ref: '#/components/schemas/paramValidateOtp'
979
980 responses:
981 '200':
982 description: load success
983 content:
984 application/json:
985 schema:
986 $ref: '#/components/schemas/responseValidateOTP'
987 '500':
988 description: internal server error
989
990 /transaction/validateCutOffTransaction:
991 post:
992 tags:
993 - TRX
994 summary: validate for cut off validation
995 operationId: postValidateTrx
996 description: |
997
998 Flow :
999
1000 getDate(now) and compare to fund_packages.transaction_cut_off (select from fund_packages where package_code = bodyRequest.code)
1001
1002 Case 1 :
1003 getDate(now) != sunday || getDate(now) != saturday || getDate(now) != holiday.holiday_date
1004 &&
1005 getTime(now) < fund_packages.transaction_cut_off
1006
1007 responseCode = 000000
1008
1009 responseMessage = Transaction Allowed
1010
1011 Case 2 :
1012
1013 getDate(now) != sunday || getDate(now) != saturday || getDate(now) != holiday.holiday_date
1014
1015 atau
1016
1017 getDate(now) > fund_packages.transaction_cut_off
1018
1019 responseCode = 000001
1020
1021 responseMessage = "Transaksi sudah melampaui batas waktu atau pada hari libur dan akan diproses pada hari bursa berikutnya."
1022
1023 Body Request :
1024
1025 1. code = code compare to fund_packages.package_code
1026
1027 2. token = token valid from login
1028
1029 requestBody:
1030 content:
1031 application/json:
1032 schema:
1033 $ref: '#/components/schemas/paramValidateTrx'
1034
1035 responses:
1036 '200':
1037 description: load success
1038 content:
1039 application/json:
1040 schema:
1041 $ref: '#/components/schemas/responseValidateTrx'
1042 '500':
1043 description: internal server error
1044
1045 /transaction/validateRiskProfile:
1046 post:
1047 tags:
1048 - TRX
1049 summary: validate for risk profile
1050 operationId: postValidateRiskProfile
1051 description: |
1052
1053 Body Request :
1054
1055 1. token = token valid from login
1056
1057 get riskprofile expired date from kyc data / token valid customer. (join from kyc.risk_profile_id = score.questionaires_id).
1058
1059 Case 1:
1060
1061 - getDate(now) < score.effective_date_from
1062 - getDate(now) > score.effective_date_to
1063
1064 responsecode = 000001
1065
1066 responseMessage = "Data profil risiko Anda sudah tidak berlaku, silakan kunjungi Cabang Danamon terdekat untuk melakukan pengkinian data"
1067
1068 Case 2:
1069
1070 - getDate(now) >= score.effective_date_from
1071 - getDate(now) <= score.effective_date_to
1072
1073 responsecode = 000000
1074
1075 responseMessage = "Risk Profil Valid"
1076
1077 requestBody:
1078 content:
1079 application/json:
1080 schema:
1081 $ref: '#/components/schemas/paramValidateRiskProfile'
1082
1083 responses:
1084 '200':
1085 description: load success
1086 content:
1087 application/json:
1088 schema:
1089 $ref: '#/components/schemas/responseValidateRiskProfile'
1090 '500':
1091 description: internal server error
1092
1093 /transaction/validateRiskProfileToProduct:
1094 post:
1095 tags:
1096 - TRX
1097 summary: validate for risk profile
1098 operationId: postValidateRiskProfileToProduct
1099 description: |
1100
1101 Body Request :
1102
1103 1. token = token valid from login
1104
1105 2. code = code compare to fund_packages.package_code
1106
1107 - profileScoreCust = get score.score_code (join kyc.risk_profile_id = score.score_id)
1108 - profileScoreProd = get score.score_code ( join fund_packages.risk_profile_id = score.score_id; fund_packages.package_code = bodyRequest.packageCode)
1109
1110 Case 1 :
1111
1112 Transaction Allowed=
1113
1114 profileScoreCust == profileScoreProd
1115
1116 responseCode = 000000
1117
1118 responseMessage = "Transaction Allowed"
1119
1120
1121 Case 2 :
1122
1123 profileScoreCust == CON
1124
1125 profileScoreProd == CON || MOD
1126
1127 responseCode = 10000
1128
1129 responseMessage = "Transaction Allowed"
1130
1131
1132 Case 3 :
1133
1134 profileScoreCust == CON
1135
1136 profileScoreProd != CON || MOD
1137
1138 responseCode = 10001
1139
1140 responseMessage = "Product yang Anda pilih tidak sesuai dengan profile risiko Anda. Silahkan pilih product lain atau kunjungi cabang Danamon terdekat untuk pengkinian profile risiko."
1141
1142 Case 4 :
1143
1144 profileScoreCust == MOD
1145
1146 profileScoreProd == CON || MOD || BAL
1147
1148 responseCode = 20000
1149
1150 responseMessage = "Transaction Allowed"
1151
1152
1153 Case 5 :
1154
1155 profileScoreCust == MOD
1156
1157 profileScoreProd != CON || MOD || BAL
1158
1159 responseCode = 20001
1160
1161 responseMessage = "Product yang Anda pilih tidak sesuai dengan profile risiko Anda. Silahkan pilih product lain atau kunjungi cabang Danamon terdekat untuk pengkinian profile risiko."
1162
1163 Case 6 :
1164
1165 profileScoreCust == BAL
1166
1167 profileScoreProd == CON || MOD || BAL || GRO
1168
1169 responseCode = 30000
1170
1171 responseMessage = "Transaction Allowed"
1172
1173
1174 Case 7 :
1175
1176 profileScoreCust == BAL
1177
1178 profileScoreProd != CON || MOD || BAL || GRO
1179
1180 responseCode = 30001
1181
1182 responseMessage = "Product yang Anda pilih tidak sesuai dengan profile risiko Anda. Silahkan pilih product lain atau kunjungi cabang Danamon terdekat untuk pengkinian profile risiko."
1183
1184 Case 8 :
1185
1186 profileScoreCust == GRO
1187
1188 profileScoreProd == CON || MOD || BAL || GRO || AGGR
1189
1190 responseCode = 40000
1191
1192 responseMessage = "Transaction Allowed"
1193
1194
1195 Case 9 :
1196
1197 profileScoreCust == GRO
1198
1199 profileScoreProd != CON || MOD || BAL || GRO || AGGR
1200
1201 responseCode = 40001
1202
1203 responseMessage = "Product yang Anda pilih tidak sesuai dengan profile risiko Anda. Silahkan pilih product lain atau kunjungi cabang Danamon terdekat untuk pengkinian profile risiko."
1204
1205 Case 10 :
1206
1207 profileScoreCust == AGGR
1208
1209 profileScoreProd == CON || MOD || BAL || GRO || AGGR
1210
1211 responseCode = 50000
1212
1213 responseMessage = "Transaction Allowed"
1214
1215
1216 Case 11 :
1217
1218 profileScoreCust == GRO
1219
1220 profileScoreProd != CON || MOD || BAL || GRO || AGGR
1221
1222 responseCode = 50001
1223
1224 responseMessage = "Product yang Anda pilih tidak sesuai dengan profile risiko Anda. Silahkan pilih product lain atau kunjungi cabang Danamon terdekat untuk pengkinian profile risiko."
1225
1226
1227 requestBody:
1228 content:
1229 application/json:
1230 schema:
1231 $ref: '#/components/schemas/paramValidateRiskProfile2'
1232
1233 responses:
1234 '200':
1235 description: load success
1236 content:
1237 application/json:
1238 schema:
1239 $ref: '#/components/schemas/responseValidateRiskProfile2'
1240 '500':
1241 description: internal server error
1242
1243 /transaction/validateLimitSubscription:
1244 post:
1245 tags:
1246 - TRX
1247 summary: validate for limit subscription
1248 operationId: postValidateLimitSubscription
1249 description: |
1250
1251 Body Request :
1252
1253 1. code = code compare to fund_packages.package_code
1254
1255 2. token = token valid from login
1256
1257 3. Amount = amount of transaction to compare min and max in table fund_packages
1258
1259 4. subs = flaging t/f untuk subs (t) or top up (f)
1260
1261 get data min_subcription from table fund_packages (fund_packages.min_subscription_amount where fund_packages.package_code)
1262
1263 get data min_topup_amount from table fund_packages (fund_packages.min_topup_amount where fund_packages.package_code)
1264
1265 Case 1 :
1266 subs = t
1267
1268 If requestBody.Amount >= fund_packages.min_subscription_amount
1269
1270 responseCode = 000000
1271
1272 responseMessage = Transaction Allowed
1273
1274 Case 2 :
1275 subs = f
1276
1277 If requestBody.Amount >= fund_packages.min_topup_amount
1278
1279 responseCode = 000000
1280
1281 responseMessage = Transaction Allowed
1282
1283 Case 3 :
1284 subs = t
1285
1286 If requestBody.Amount < fund_packages.min_subscription_amount
1287
1288 responseCode = 100001
1289
1290 responseMessage = "Minimum transaksi adalah fund_packages.currency<<space>> fund_packages.min_subscription_amount"
1291
1292 Case 4 :
1293 subs = f
1294
1295 If requestBody.Amount < fund_packages.min_topup_amount
1296
1297 responseCode = 200001
1298
1299 responseMessage = "Minimum transaksi adalah fund_packages.currency<<space>> fund_packages.min_topup_amount"
1300
1301 requestBody:
1302 content:
1303 application/json:
1304 schema:
1305 $ref: '#/components/schemas/paramValidateLimitProduct'
1306
1307 responses:
1308 '200':
1309 description: load success
1310 content:
1311 application/json:
1312 schema:
1313 type: array
1314 items:
1315 $ref: '#/components/schemas/responseValidateLimitProduct'
1316 '500':
1317 description: internal server error
1318
1319 /transaction/subscription:
1320 post:
1321 tags:
1322 - TRX
1323 summary: Subscription
1324
1325 operationId: trxSubs
1326 description: |
1327
1328 Mapping to API Avantrade :
1329
1330 API URI = avantradeapi/services/transaction/subscription (POST)
1331
1332 body request :
1333
1334 1. productId = body request fundpackageId (ut_products.at_product_id; join with fund_packages_products.ut_products_id ; join with fund_package_product_id)
1335
1336 2. transactionAmount = transactionAmount
1337
1338 3. feeAmount = 0
1339
1340 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)
1341
1342 5. transactionDate = dd-MMM-yyyy
1343
1344 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)
1345
1346 7. fundSourceId = kyc.source_of_income (from token compare to kyc.customer_id)
1347
1348 8. customerId = kyc.at_customer_id
1349
1350 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)
1351
1352 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
1353
1354 11. transactionNumber = generate by system (like in invisee SyymmddXXXXX)
1355
1356 12. transactionId = fiiled with empty string
1357
1358 errorCode AVANTRADE (if this, so error Code Back End = 000001):
1359
1360 10001 --> Failed, API Signature is unverified (SIGNATURE ERROR)
1361
1362 10002 --> Failed, Unspecified token (SIGNATURE EMPTY)
1363
1364 2000034 --> Failed, Failed to insert transaction to database (TRANSACTION FAILED TO INSERT)
1365
1366 2032049 --> Failed, Failed to do subscription transaction, because insertion is incomplete for mandatory field (INCOMPLETE DATA FOR SUBSCRIPTION DETAILS. PLEASE RECHECK)
1367
1368 2032002 --> Minimum & Maximum subscription invalid (UT TRANSACTION MINIMUM SUBSCRIPTION INVALID)
1369
1370 99999 --> GENERAL ERROR
1371
1372 requestBody:
1373 content:
1374 application/json:
1375 schema:
1376 $ref: '#/components/schemas/paramSubs'
1377
1378 responses:
1379 '200':
1380 description: load success
1381 content:
1382 application/json:
1383 schema:
1384 type: array
1385 items:
1386 $ref: '#/components/schemas/responseSubs'
1387 '500':
1388 description: internal server error
1389
1390 /transaction/AT_Subcription:
1391 post:
1392 tags:
1393 - TRX
1394 summary: Subscription
1395
1396 operationId: trxSubsAuditTrail
1397 description: |
1398 Mapping to API Danamon :
1399
1400 API URI = /AuditLog (POST)
1401
1402 body request to API Danamon:
1403
1404 1. auditlog --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> Data = sessionid;trxid;language;headervalue;detailvalue
1405
1406 Explanation :
1407
1408 NF = Notif Flag
1409
1410 headervalue =
1411 - ref_no (20) = transaction_number_from_middle_office; NF = 1
1412
1413 - dscp (300) = empty string; NF = 0
1414
1415 - amt(19) = bodyRequest.transactionAmount; NF = 1
1416
1417 - ccy (5) = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1418
1419 - unit(1) = 0 (hardcoded); NF = 0
1420
1421 - source (100) = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 0
1422
1423 - destination (100)= fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1424
1425 - status(5) = true / false (based on bodyReuqest.responseCodeSubs; true = responseCodeSubs value : "000000" ; true = responseCodeSubs != "000000"); NF = 0
1426
1427 - reason(1000) = bodyRequest.responseInfoSubs; NF = 0
1428
1429 - template_cd (10) = TC35642_01 ( bodyReuqest.responseCodeSubs = "000000") / TC35642_02 ( bodyReuqest.responseCodeSubs != "000000"); NF = 1
1430
1431 - formattemplate (50) = __child_trx_hist_det (hardcoded); NF = 1
1432
1433 detailvalue =
1434 - productname = fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1435
1436 - productcode = fund_packages.fund_package_id (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1437
1438 - 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
1439
1440 - 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
1441
1442 - ccy = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1443
1444 - 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
1445
1446 - amount = bodyRequest.transactionAmount (formating to ==> using dot (.) as thousand separator and using comma (,) as decimal point ); NF = 1
1447
1448 - sourceacct = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 1
1449
1450 - tncflag = Ya (hardcoded); NF = 0
1451
1452 - tncriskflag = Ya (hardcoded); NF = 0
1453
1454 - trxreason = kyc.investment_purpose(from table kyc compare to valid token); NF = 0
1455
1456 - trxdate = bodyRequest.trxDate (format : dd/MM/yyyy hh:mm:ss tt); NF = 1
1457
1458 - purpose = Pembelian Reksadana (hardcoded); NF = 1
1459
1460 2. timestamp --> yyyyMMddHHmm
1461
1462 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1463
1464 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1465
1466
1467 Sample Body Request:
1468
1469 {
1470
1471 "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",
1472
1473 "timestamp":"201828091520",
1474
1475 "sequencenumber":"60140001132894152011",
1476
1477 "referencenumber":"20182809152060140001132894152011"
1478
1479
1480 }
1481
1482 requestBody:
1483 content:
1484 application/json:
1485 schema:
1486 $ref: '#/components/schemas/paramSubsAT'
1487
1488 responses:
1489 '200':
1490 description: load success
1491 content:
1492 application/json:
1493 schema:
1494 type: array
1495 items:
1496 $ref: '#/components/schemas/responseSubsAT'
1497 '500':
1498 description: internal server error
1499
1500 /transaction/validateBalanceAfterRedeem:
1501 post:
1502 tags:
1503 - TRX
1504 summary: validate for minimal balance after redeem
1505 operationId: postValidateBalanceAfterRedeem
1506 description: |
1507
1508 Body Request :
1509
1510 1. code = code compare to fund_packages.package_code
1511
1512 2. token = token valid from login
1513
1514 3. unit = unit of transaction redeem
1515
1516 4. invAcc = investment account no
1517
1518 get data min_bal_after_redemption_unit from table ut_products (join ut_products.product_id = fund_package_products.ut_products_id; join fund_package_products.fund_package_product_id = fund_packages.fund_package_id; fund_packages.package_code where bodyRequest.code)
1519
1520 get data investment_accounts.investment_account_id (where investment_accounts.investment_account_no = bodyRequest.invAcc)
1521
1522 get data customer_balance.current_unit (where customer_balance.investment_account_id = getDataSebelumnya). order by created_date DESC; TOP 1;
1523
1524 If (customer_balance.current_unit - requestBody.unit) >= min_bal_after_redemption_unit
1525
1526 responseCode = 000000
1527
1528 responseMessage = Transaction Allowed
1529
1530 Else
1531
1532 (customer_balance.current_unit - requestBody.unit) < min_bal_after_redemption_unit
1533
1534 responseCode = 000001
1535
1536 responseMessage = "Minimum unit yang harus disisakan adalah "+ut_products.min_bal_after_redemption_unit+" Unit"
1537
1538 requestBody:
1539 content:
1540 application/json:
1541 schema:
1542 $ref: '#/components/schemas/paramValidateBalanceAfterRedeem'
1543
1544 responses:
1545 '200':
1546 description: load success
1547 content:
1548 application/json:
1549 schema:
1550 type: array
1551 items:
1552 $ref: '#/components/schemas/responseValidateBalanceAfterRedeem'
1553 '500':
1554 description: internal server error
1555
1556 /transaction/redemption:
1557 post:
1558 tags:
1559 - TRX
1560 summary: Redemption
1561
1562 operationId: trxRedeem
1563 description: |
1564
1565 Mapping to API Avantrade :
1566
1567 API URI = avantradeapi/services/transaction/redemption (POST)
1568
1569 body request AVANTRADE:
1570
1571 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)
1572 2. transactionAmount = 0
1573 3. feeAmount = 0
1574 4. feeRate = refer to Logic below
1575 5. transactionDate = dd-MMM-yyyy
1576 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)
1577 7. fundSourceId = kyc.source_of_income (from token compare to kyc.customer_id)
1578 8. customerId = kyc.at_customer_id
1579 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).
1580 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
1581 11. transactionNumber = generate by system (like in invisee RyymmddXXXXX)
1582 12. transactionId = emptyString
1583 13. redemptionUnit = unit from body request if redemptionType <> ALL.
1584 14. redemptionType = body request.redemptType (1 = partial / 0 = All)
1585
1586 Logic perhitungan fee:
1587
1588 1. tempVar bodyRequestUnit= body unit
1589
1590 2. cari data response menggunakan looping angka dicompare dengan reponse sequnece; bandingkan dengan bodyRequestUnit ; bodyRequestUnit != 0
1591
1592 Lakukan looping dengan sampai bodyRequestUnit = 0
1593
1594 a. Apakah bodyRequestUnit= >= remainUnit
1595 a.1 bodyRequestUnit= bodyRequestUnit-remainUnit
1596 a.2 get fund_package_fee_setup.fee_amount (dengan kriteria = getDate(now)-response.transactionDate)
1597
1598 b. Apakah bodyRequestUnit= < remainUnit
1599 b.1 get fund_package_fee_setup.fee_amount (dengan kriteria : getDate(now)-response.transactionDate).
1600 subTotal = subTotal + (remainUnit[x] * fund_package_fee_setup.fee_amount)
1601 b.2 bodyRequestUnit= bodyRequestUnit-bodyRequestUnit
1602
1603 End Loop
1604
1605 3. tempVar = subTotal / body unit
1606
1607 4. Create Trx redeem
1608
1609 errorCode AVANTRADE (if this, so error Code Back End = 000001):
1610
1611 10001 --> Failed, API Signature is unverified (SIGNATURE ERROR)
1612
1613 10002 --> Failed, Unspecified token (SIGNATURE EMPTY)
1614
1615 2000034 --> Failed, Failed to insert transaction to database (TRANSACTION FAILED TO INSERT)
1616
1617 2032050 --> Failed to do redemption transaction, because insertion is incomplete for mandatory field (INCOMPLETE DATA FOR REDEMPTION DETAILS. PLEASE RECHECK)
1618
1619 2032006 --> Maximum & Minimum redemption unit invalid (UT TRANSACTION MINIMUM REDEMPTION UNIT INVALID)
1620
1621 2032028 --> Minimum balance (unit) after redemption invalid (UT TRANSACTION MINIMUM BALANCE AFTER REDEMPTION UNIT INVALID)
1622
1623 99999 --> GENERAL ERROR
1624
1625 requestBody:
1626 content:
1627 application/json:
1628 schema:
1629 $ref: '#/components/schemas/paramRedeem'
1630
1631 responses:
1632 '200':
1633 description: load success
1634 content:
1635 application/json:
1636 schema:
1637 type: array
1638 items:
1639 $ref: '#/components/schemas/responseRedeem'
1640 '500':
1641 description: internal server error
1642 /transaction/AT_Redemption:
1643 post:
1644 tags:
1645 - TRX
1646 summary: Subscription
1647
1648 operationId: trxRedeemAuditTrail
1649 description: |
1650 Mapping to API Danamon :
1651
1652 API URI = /AuditLog (POST)
1653
1654 body request to API Danamon:
1655
1656 1. auditlog --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> Data = sessionid;trxid;language;headervalue;detailvalue
1657
1658 Explanation :
1659
1660 NF = Notif Flag
1661
1662 headervalue =
1663 - ref_no (20) = transaction_number_from_middle_office; NF = 1
1664
1665 - dscp (300) = empty string; NF = 0
1666
1667 - amt(19) = bodyRequest.unit; NF = 1
1668
1669 - ccy (5) = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1670
1671 - unit(1) = 0 (hardcoded); NF = 0
1672
1673 - source (100) = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 0
1674
1675 - destination (100)= fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1676
1677 - status(5) = true / false (based on bodyReuqest.responseCodeRedemp; true = responseCodeSubs value : "000000" ; true = responseCodeSubs != "000000"); NF = 0
1678
1679 - reason(1000) = bodyRequest.responseInfoRedemp; NF = 0
1680
1681 - template_cd (10) = TC35643_01 ( bodyReuqest.responseCodeRedemp = "000000") / TC35643_02 ( bodyReuqest.responseCodeRedemp != "000000"); NF = 1
1682
1683 - formattemplate (50) = __child_trx_hist_det (hardcoded); NF = 1
1684
1685 detailvalue =
1686 - productname = fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1687
1688 - productcode = fund_packages.fund_package_id (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1689
1690 - 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
1691
1692 - 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
1693
1694 - ccy = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1695
1696 - 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 = 2; join fund_package_fee_setup = fund_packages.fund_package_id; where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1697
1698 - unitsaleflag = translate from bodyRequest.redeemType (redeemType = 1 so value = Sebagian; redeemType = 0 so value = Penuh); NF = 0
1699
1700 - unitamount = bodyRequest.unit (formating to ==> using comma (,) as decimal point ); NF = 1
1701
1702 - creditacct = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 1
1703
1704 - tncflag = Ya (hardcoded); NF = 1
1705
1706 - trxdate = bodyRequest.trxDate (format : dd/MM/yyyy hh:mm:ss tt); NF = 1
1707
1708 - purpose = Penjualan Reksadana (hardcoded); NF = 1
1709
1710
1711
1712 2. timestamp --> yyyyMMddHHmm
1713
1714 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1715
1716 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1717
1718
1719 Sample Body Request:
1720
1721 {
1722
1723 "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=TC35643_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=0|charge=1,00=0|unitsaleflag=Sebagian=0|unitamount=111,0723=1|creditacct=DANAMON LEBIH 007072008390=1|tncflag=Ya=0|trxdate=01/01/2019 11:15:22 AM=1|purpose=Penjualan Reksadana=1",
1724
1725 "timestamp":"201828091520",
1726
1727 "sequencenumber":"60140001132894152011",
1728
1729 "referencenumber":"20182809152060140001132894152011"
1730
1731
1732 }
1733
1734 requestBody:
1735 content:
1736 application/json:
1737 schema:
1738 $ref: '#/components/schemas/paramRedsAT'
1739
1740 responses:
1741 '200':
1742 description: load success
1743 content:
1744 application/json:
1745 schema:
1746 type: array
1747 items:
1748 $ref: '#/components/schemas/responseSubsAT'
1749 '500':
1750 description: internal server error
1751
1752 /transaction/validateBalanceAfterSwitch:
1753 post:
1754 tags:
1755 - TRX
1756 summary: validate for minimal balance after switching
1757 operationId: postValidateBalanceAfterSwitch
1758 description: |
1759
1760 Body Request :
1761
1762 1. code = code compare to fund_packages.package_code
1763
1764 2. token = token valid from login
1765
1766 3. unit = unit of transaction redeem
1767
1768 4. invAcc = investment account no
1769
1770 get data min_bal_after_switching_unit from table ut_products (join ut_products.product_id = fund_package_products.ut_products_id; join fund_package_products.fund_package_product_id = fund_packages.fund_package_id; fund_packages.package_code where bodyRequest.code)
1771
1772 get data investment_accounts.investment_account_id (where investment_accounts.investment_account_no = bodyRequest.invAcc)
1773
1774 get data customer_balance.current_unit (where customer_balance.investment_account_id = getDataSebelumnya). order by created_date DESC; TOP 1;
1775
1776 If (customer_balance.current_unit - requestBody.unit) >= min_bal_after_redemption_unit
1777
1778 responseCode = 000000
1779
1780 responseMessage = Transaction Allowed
1781
1782 Else
1783
1784 (customer_balance.current_unit - requestBody.unit) < min_bal_after_redemption_unit
1785
1786 responseCode = 000001
1787
1788 responseMessage = "Minimum unit yang harus disisakan adalah "+ut_products.min_bal_after_switching_unit+" Unit"
1789
1790 requestBody:
1791 content:
1792 application/json:
1793 schema:
1794 $ref: '#/components/schemas/paramValidateBalanceAfterRedeem'
1795
1796 responses:
1797 '200':
1798 description: load success
1799 content:
1800 application/json:
1801 schema:
1802 type: array
1803 items:
1804 $ref: '#/components/schemas/responseValidateBalanceAfterRedeem'
1805 '500':
1806 description: internal server error
1807 /transaction/switching:
1808 post:
1809 tags:
1810 - TRX
1811 summary: Switching
1812
1813 operationId: trxSwitch
1814 description: |
1815
1816 Mapping to API Avantrade :
1817
1818 API URI = avantradeapi/services/transaction/switching (POST)
1819
1820 body request :
1821
1822 1. customerId = kyc.at_customer_id
1823 2. transactionDate = dd-MMM-yyyy
1824 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)
1825 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)
1826 5. toProductId = ut_products.at_product_id ( join with fund_packages_products.ut_products_id ; join with fund_package_product_id)
1827 6. switchingUnit = body request.unit
1828 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)
1829 8. feeAmount = 0
1830
1831 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)
1832
1833 10. orderNumber = generate by system (like in invisee OyymmddXXXXX)
1834 11. transactionNumberFrom = generate by middle office (SOxxxxxxxx)
1835 12. transactionNumberTo = generate by middle office (SIxxxxxxxx)
1836 13. switchingType = body request.switchType (0 = All; -1 = Partial Amount; 1 = Partial Unit)
1837 14. transactionId = emptystring
1838
1839 Logic :
1840
1841 1. tempVar bodyRequestUnit= body unit
1842
1843 2. cari data response menggunakan looping angka dicompare dengan reponse sequnece; bandingkan dengan bodyRequestUnit ; bodyRequestUnit != 0
1844
1845 Lakukan looping dengan sampai bodyRequestUnit = 0
1846
1847 a. Apakah bodyRequestUnit= >= remainUnit
1848 a.1 bodyRequestUnit= bodyRequestUnit-remainUnit
1849 a.2 get fund_package_fee_setup.fee_amount (dengan kriteria = getDate(now)-response.transactionDate) dengan join ke product yang di switch out
1850
1851 b. Apakah bodyRequestUnit= < remainUnit
1852 b.1 get fund_package_fee_setup.fee_amount (dengan kriteria : getDate(now)-response.transactionDate).
1853 subTotal = subTotal + (remainUnit[x] * fund_package_fee_setup.fee_amount)
1854 b.2 bodyRequestUnit= bodyRequestUnit-bodyRequestUnit
1855
1856 End Loop
1857
1858 3. tempVar = subTotal / body unit
1859
1860 4. Create Trx Switching
1861
1862 requestBody:
1863 content:
1864 application/json:
1865 schema:
1866 $ref: '#/components/schemas/paramSwitch'
1867
1868 responses:
1869 '200':
1870 description: load success
1871 content:
1872 application/json:
1873 schema:
1874 type: array
1875 items:
1876 $ref: '#/components/schemas/responseSwitch'
1877 '500':
1878 description: internal server error
1879
1880 /transaction/AT_Switch:
1881 post:
1882 tags:
1883 - TRX
1884 summary: Switching
1885
1886 operationId: trxSwitchAuditTrail
1887 description: |
1888 Mapping to API Danamon :
1889
1890 API URI = /AuditLog (POST)
1891
1892 body request to API Danamon:
1893
1894 1. auditlog --> X'|Data'|Z (xxxxxxxxxxx|yyyyyyyyyyyy|zzzzzzzzzzzzzzzzzz) ; Data --> Data = sessionid;trxid;language;headervalue;detailvalue
1895
1896 Explanation :
1897
1898 NF = Notif Flag
1899
1900 headervalue =
1901 - ref_no (20) = transaction_number_from_middle_office; NF = 1
1902
1903 - dscp (300) = empty string; NF = 0
1904
1905 - amt(19) = bodyRequest.unit; NF = 1
1906
1907 - ccy (5) = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.code); NF = 1
1908
1909 - unit(1) = 0 (hardcoded); NF = 0
1910
1911 - source (100) = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 0
1912
1913 - destination (100)= fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.code); NF = 0
1914
1915 - status(5) = true / false (based on bodyReuqest.responseCodeRedemp; true = responseCodeSubs value : "000000" ; true = responseCodeSubs != "000000"); NF = 0
1916
1917 - reason(1000) = bodyRequest.responseInfoRedemp; NF = 0
1918
1919 - template_cd (10) = TC35644_01 ( bodyReuqest.responseCodeSwitch = "000000") / TC35644_02 ( bodyReuqest.responseCodeSwitch != "000000"); NF = 1
1920
1921 - formattemplate (50) = __child_trx_hist_det (hardcoded); NF = 1
1922
1923 detailvalue =
1924 - productnamefr = fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.codeFr); NF = 1
1925
1926 - productcodefr = fund_packages.fund_package_id (where fund_packages.fund_package_code = bodyRequest.codeFr); NF = 0
1927
1928 - producttypefr = 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.codeFr); NF = 0
1929
1930 - fundmanagerfr = 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.codeFr); NF = 0
1931
1932 - ccy = fund_packages.currency (where fund_packages.fund_package_code = bodyRequest.codeFr); NF = 1
1933
1934 - 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 = 20; join fund_package_fee_setup = fund_packages.fund_package_id; where fund_packages.fund_package_code = bodyRequest.codeTo); NF = 0
1935
1936 - unitsaleflag = translate from bodyRequest.switchType (switchType = 1 so value = Sebagian; switchType = 0 so value = Penuh); NF = 0
1937
1938 - unitamount = bodyRequest.unit (formating to ==> using comma (,) as decimal point ); NF = 1
1939
1940 - creditacct = settlement_accounts.settlement_account_no (where settlement_accounts.settlement_account_id = bodyRequest.settlementAccountId); NF = 1
1941
1942 - productnameTo = fund_packages.fund_package_name (where fund_packages.fund_package_code = bodyRequest.codeTo); NF = 1
1943
1944 - productcodeTo = fund_packages.fund_package_id (where fund_packages.fund_package_code = bodyRequest.codeTo); NF = 0
1945
1946 - producttypeTo = 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.codeTo); NF = 0
1947
1948 - fundmanagerTo = 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.codeTo); NF = 0
1949
1950 - tncflag = Ya (hardcoded); NF = 1
1951
1952 - trxdate = bodyRequest.trxDate (format : dd/MM/yyyy hh:mm:ss tt); NF = 1
1953
1954 - purpose = Pengalihan Reksadana (hardcoded); NF = 1
1955
1956
1957 2. timestamp --> yyyyMMddHHmm
1958
1959 3. sequencenumber --> 6014+CIFNO(token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1960
1961 4. referencenumber --> yyyyMMddHHmm+6014+CIFNO (token = join kyc.customer_id; put kyc.portalcif)+HHmmss
1962
1963
1964 Sample Body Request:
1965
1966 {
1967
1968 "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;productnamefr=Manulife Obligasi Negara Indonesia II=1|productcodefr=12=0|producttypefr=Reksa Dana Saham=0|fundmanagerfr=PT. Manulife Aset Manajemen Indonesia=0|ccy=IDR=0|charge=1,00=0|unitsaleflag=Sebagian=0|unitamount=111,0723=1|productnameto=Aurora Dana Ekuitas=1|productcodeto=11=0|producttypeto=Reksa Dana Saham=0|fundmanagerto=PT. Aurora Asset Management=0|tncflag=Ya=0|tncriskflag=Ya=0|trxreason=Invest=0|trxdate=01/01/2019 11:15:22 AM=1|purpose=Pengalihan Reksadana=1",
1969
1970 "timestamp":"201828091520",
1971
1972 "sequencenumber":"60140001132894152011",
1973
1974 "referencenumber":"20182809152060140001132894152011"
1975
1976
1977 }
1978
1979 requestBody:
1980 content:
1981 application/json:
1982 schema:
1983 $ref: '#/components/schemas/paramSwitchAT'
1984
1985 responses:
1986 '200':
1987 description: load success
1988 content:
1989 application/json:
1990 schema:
1991 type: array
1992 items:
1993 $ref: '#/components/schemas/responseSubsAT'
1994 '500':
1995 description: internal server error
1996
1997 /ManualSync/updateSwitchProductList:
1998 get:
1999 tags:
2000 - MANUAL SYNC
2001 summary: sync white list of product list
2002 operationId: syncSwitchProduct
2003 description: |
2004 Sync switching list insert into switching_mapping
2005
2006 API Avantrade :
2007
2008 avantradeapi/services/foundation/switchProduct
2009
2010 Mapping :
2011 - product_in_id = fund_packages.fund_package_id (join with fund_package_products.ut_products_id = response.atProductIn)
2012 - at_product_id_in = response.atProductInd
2013 - product_out_id = fund_packages.fund_package_id (join with fund_package_products.ut_products_id = response.atProductOut)
2014 - row_status = t
2015 - at_product_id_out = response.atProductOut
2016
2017 parameters:
2018 - in: query
2019 name: token
2020 description: pass valid token for inquiry
2021 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2022 required: true
2023 schema:
2024 type: string
2025
2026 responses:
2027 '200':
2028 description: Customer list successfully loaded
2029 content:
2030 application/json:
2031 schema:
2032 $ref: '#/components/schemas/responseSwitchSync'
2033 '400':
2034 description: failed to load
2035
2036 /ManualSync/updateHoliday:
2037 get:
2038 tags:
2039 - MANUAL SYNC
2040 summary: sync white list of product list
2041 operationId: syncHoliday
2042 description: |
2043 Sync data holiday from avantrade
2044
2045 API Avantrade :
2046
2047 avantradeapi/services/foundation/holiday/yyyy
2048
2049
2050 Response API Avantrade :
2051
2052 {
2053 "holidayID": "a1518d3d-f8e2-4bc3-9637-311b4d1900d6",
2054 "yearValue": 2019,
2055 "holidayDate": "2019-05-01 00:00:00.0",
2056 "holidayDescription": "Hari Buruh",
2057 "createdBy": "admin4",
2058 "deleteStatus": 0,
2059 "lastUpdatedBy": "admin4",
2060 "lastUpdatedDate": "2019-04-29 11:46:03.675",
2061 "createdDate": "2019-04-29 11:46:03.643",
2062 "lastVersionDate": "2019-04-29 11:46:27.441",
2063 "lastApprovedDate": "2019-04-29 11:46:27.479",
2064 "lastApprovedBy": "btnuserap"
2065 }
2066
2067 Mapping :
2068
2069 - holiday.at_holiday_id = response.holidayID
2070
2071 - holiday.year_value = response.yearValue
2072
2073 - holiday.holiday_date = response.holidayDate
2074
2075 - holiday.holiday_description = response.holidayDescription
2076
2077 dimana untuk data yang di insert ke table middle adalah yang response.deleteStatus = 0
2078
2079
2080 parameters:
2081 - in: query
2082 name: token
2083 description: pass valid token for inquiry
2084 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2085 required: true
2086 schema:
2087 type: string
2088
2089 - in: query
2090 name: type
2091 description: type of sync
2092 example: foundation
2093 required: true
2094 schema:
2095 type: string
2096
2097 - in: query
2098 name: date
2099 description: date from officer inputted
2100 example: 20190905
2101 required: true
2102 schema:
2103 type: string
2104
2105 - in: query
2106 name: year
2107 description: year from officer inputted
2108 example: 2019
2109 required: true
2110 schema:
2111 type: string
2112
2113 responses:
2114 '200':
2115 description: Customer list successfully loaded
2116 content:
2117 application/json:
2118 schema:
2119 $ref: '#/components/schemas/responseSwitchSync'
2120 '400':
2121 description: failed to load
2122
2123 /ManualSync/updateExchangeRate:
2124 get:
2125 tags:
2126 - MANUAL SYNC
2127 summary: sync white list of product list
2128 operationId: syncExchange
2129 description: |
2130 Sync data exchange rate from avantrade
2131
2132 API Avantrade :
2133
2134 /avantradeapi/services/exchangerate/dd-mm-yyyy/dd-mm-yyyy
2135
2136 Response API Avantrade :
2137
2138 {
2139 "errorCode": 0,
2140 "errorMsg": "SUCCESS",
2141 "result": [
2142 {
2143 "exchangeRateId":"a77effad-da5c-4140-8cb7-2c6c9b7d2658",
2144 "exchageRateDate": "05-07-2019",
2145 "currency": "IDR",
2146 "currencyUnit": "1",
2147 "dailyRate": "14500",
2148 "createdDate": "05-07-2019 08.01.00",
2149 "lastUpdatedDate": "05-07-2019 08.01.00",
2150 "lastApprovedDate": "05-07-2019 08.01.00",
2151 "lastVersionDate": "05-07-2019 08.01.00",
2152 "deleteStatus":0
2153 }
2154 ]
2155 }
2156
2157 Pembuatan Table : exchange_rate
2158
2159 - exchange_rate_id(int8)
2160 - at_exchange_rate_id(varchar 255)
2161 - created_by (varchar 50)
2162 - created_date (timestamp)
2163 - currency (varchar 255)
2164 - currency_unit (int8)
2165 - daily_rate (int8)
2166 - delete_status (int8)
2167 - exchange_rate_date (timestamp)
2168 - last_approved_by (varchar 50)
2169 - last_approved_date (timestamp)
2170 - last_updated_by (varchar 6)
2171 - last_updated_date (timestamp)
2172 - last_version_date (timestamp)
2173
2174 Mapping :
2175
2176 - exchange_rate.at_exchange_rate_id = response.exchangeRateId
2177 - exchange_rate.currency = response.currency
2178 - exchange_rate.currency_unit = response.currencyUnit
2179 - exchange_rate.daily_rate = response.dailyRate
2180 - exchange_rate.delete_status = response.deleteStatus
2181 - exchange_rate.exchange_rate_date = response.exchageRateDate
2182 - exchange_rate.last_approved_by = response.lastApprovedby
2183 - exchange_rate.last_approved_date = response.lastApprovedDate
2184 - exchange_rate.last_version_date = response.lastVersionDate
2185
2186
2187 parameters:
2188 - in: path
2189 name: date
2190 description: date from officer inputted
2191 example: 20190903
2192 required: true
2193 schema:
2194 type: string
2195 - in: query
2196 name: type
2197 description: type of sync
2198 example: foundation
2199 required: true
2200 schema:
2201 type: string
2202 - in: query
2203 name: token
2204 description: pass valid token for inquiry
2205 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2206 required: true
2207 schema:
2208 type: string
2209
2210
2211
2212 responses:
2213 '200':
2214 description: Customer list successfully loaded
2215 content:
2216 application/json:
2217 schema:
2218 $ref: '#/components/schemas/responseSwitchSync'
2219 '400':
2220 description: failed to load
2221
2222components:
2223 schemas:
2224 paramGetListProduct:
2225 type: object
2226 required:
2227 - signature
2228 - agent
2229 properties:
2230 signature:
2231 type: string
2232 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
2233 agent:
2234 type: string
2235 example: "MTMPAY"
2236
2237
2238 responseProductList:
2239 type: object
2240 required:
2241 - code
2242 - info
2243 - data
2244 - ReferrenceNumber
2245 properties:
2246 code:
2247 type: string
2248 example: "000000"
2249 info:
2250 type: string
2251 example: "Package list successfully loaded"
2252 data:
2253 type: array
2254 items:
2255 $ref: '#/components/schemas/responseProductListDetail'
2256 ReferenceNumber:
2257 type: string
2258 example: "<<based on param header from middleware>>"
2259
2260 responseProductListDetail:
2261 type: object
2262 required:
2263 - type_code
2264 - package_type
2265 - package_list
2266 properties:
2267 type_code:
2268 type: string
2269 example: "MM"
2270 package_type:
2271 type: string
2272 example: "Reksa Dana Pasar Uang"
2273 package_list:
2274 type: array
2275 items:
2276 $ref: '#/components/schemas/responseProductListDetail2'
2277
2278 responseProductListDetail2:
2279 type: object
2280 required:
2281 - last_nav_date
2282 - image
2283 - last_nav
2284 - code
2285 - perf_oneyear
2286 - name
2287 - id
2288 - total_fund
2289 - recommended
2290 - prospectus_file
2291 - fact_sheet_file
2292 properties:
2293 last_nav_date:
2294 type: string
2295 format: date
2296 example: "2015-04-20"
2297 image:
2298 type: string
2299 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2300 last_nav:
2301 type: string
2302 example: 12467.0
2303 code:
2304 type: integer
2305 format: int32
2306 example: 14
2307 perf_oneyear:
2308 type: string
2309 example: 0.027443547057853963
2310 name:
2311 type: string
2312 example: "SAHAM DANA"
2313 id:
2314 type: integer
2315 format: int32
2316 example: 185
2317 total_fund:
2318 type: integer
2319 format: int32
2320 example: 1
2321 recommended:
2322 type: boolean
2323 example: false
2324 prospectus_file:
2325 type: string
2326 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2327 fact_sheet_file:
2328 type: string
2329 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2330
2331 responseProductCategory:
2332 type: object
2333 required:
2334 - code
2335 - info
2336 - data
2337 - ReferrenceNumber
2338 properties:
2339 code:
2340 type: string
2341 example: "000000"
2342 info:
2343 type: string
2344 example: "Package category successfully loaded"
2345 data:
2346 type: array
2347 items:
2348 $ref: '#/components/schemas/responseProductCategoryDetail'
2349 ReferenceNumber:
2350 type: string
2351 example: "<<based on param header from middleware>>"
2352
2353 responseProductCategoryDetail:
2354 type: object
2355 required:
2356 - id
2357 - code
2358 - category_name
2359 properties:
2360 id:
2361 type: integer
2362 format: int32
2363 example: 96
2364 code:
2365 type: string
2366 example: "BAL"
2367 category_name:
2368 type: string
2369 example: "Reksa Dana Campuran"
2370
2371 paramGetListProductDetail:
2372 type: object
2373 required:
2374 - token
2375 - code
2376 - signature
2377 - agent
2378 properties:
2379 code:
2380 type: string
2381 example: "MANDIRI118"
2382 token:
2383 type: string
2384 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
2385 signature:
2386 type: string
2387 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
2388 agent:
2389 type: string
2390 example: "MTMPAY"
2391
2392 responseProductDetail:
2393 type: object
2394 required:
2395 - code
2396 - info
2397 - data
2398 - ReferenceNumber
2399 properties:
2400 code:
2401 type: string
2402 example: "000000"
2403 info:
2404 type: string
2405 example: "Package detail successfully loaded"
2406 data:
2407 $ref: '#/components/schemas/responseProductDetailing'
2408 ReferenceNumber:
2409 type: string
2410 example: "<<based on param header from middleware>>"
2411
2412 responseProductDetailing:
2413 type: object
2414 required:
2415 - package
2416 properties:
2417 package:
2418 $ref: '#/components/schemas/responseProductDetailing2'
2419
2420 responseProductDetailing2:
2421 type: object
2422 required:
2423 - perf_oneyear
2424 - last_nav_date
2425 - last_nav
2426 - prospectus_file
2427 - fact_sheet_file
2428 - description
2429 - minimal_subscribe
2430 - minimal_topup
2431 - transaction_cut_off
2432 - settlement_cut_off
2433 - settlement_period
2434 - image
2435 - code
2436 - package_type
2437 - risk_level
2438 - name
2439 - effective_date
2440 - bank_name
2441 - currency
2442 - bank_logo
2443 - type_code
2444 properties:
2445 perf_oneyear:
2446 type: string
2447 example: 0.027443547057853963
2448 last_nav_date:
2449 type: string
2450 format: date
2451 example: "2015-04-20"
2452 last_nav:
2453 type: string
2454 example: 12467.0
2455 prospectus_file:
2456 type: string
2457 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2458 fact_sheet_file:
2459 type: string
2460 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2461 description:
2462 type: string
2463 example: "Packages ini merupakan packages dari MI Danareksa"
2464 minimal_subscribe:
2465 type: string
2466 example: 1000000.0
2467 minimal_topup:
2468 type: string
2469 example: 1000000.0
2470 transaction_cut_off:
2471 type: string
2472 example: "13:00:00"
2473 settlement_cut_off:
2474 type: string
2475 example: "15:00:00"
2476 settlement_period:
2477 type: integer
2478 format: int32
2479 example: 1
2480 image:
2481 type: string
2482 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
2483 code:
2484 type: integer
2485 format: int32
2486 example: 14
2487 package_type:
2488 type: string
2489 example: "Reksa Dana Pasar Uang"
2490 risk_level:
2491 type: string
2492 example: "CON"
2493 name:
2494 type: string
2495 example: "SAHAM DANA"
2496 effective_date:
2497 type: string
2498 format: date
2499 example: "2015-04-01"
2500 bank_name:
2501 type: string
2502 example: "BANK CIMB NIAGA, PT, TBK"
2503 currency:
2504 type: string
2505 example: "IDR"
2506 bank_logo:
2507 type: string
2508 example: null
2509 type_code:
2510 type: string
2511 example: "MM"
2512
2513 responseProductNAV:
2514 type: object
2515 required:
2516 - code
2517 - info
2518 - data
2519 - ReferenceNumber
2520 properties:
2521 code:
2522 type: string
2523 example: "000000"
2524 info:
2525 type: string
2526 example: "Package detail NAV successfully loaded"
2527 data:
2528 type: array
2529 items:
2530 $ref: '#/components/schemas/responseProductNAVDetail'
2531 ReferenceNumber:
2532 type: string
2533 example: "<<based on param header from middleware>>"
2534
2535 responseProductNAVDetail:
2536 type: object
2537 required:
2538 - price_date
2539 - nav
2540 properties:
2541 price_date:
2542 type: string
2543 format: date
2544 example: "2019-04-11"
2545 nav:
2546 type: string
2547 format: date
2548 example: 2577.9482
2549
2550 responseSubsFee:
2551 type: object
2552 required:
2553 - code
2554 - info
2555 - data
2556 - ReferenceNumber
2557 properties:
2558 code:
2559 type: string
2560 example: "000000"
2561 info:
2562 type: string
2563 example: "Package subscription fee successfully loaded"
2564 data:
2565 type: array
2566 items:
2567 $ref: '#/components/schemas/responseSubsFeeDetail'
2568 ReferenceNumber:
2569 type: string
2570 example: "<<based on param header from middleware>>"
2571
2572 responseSubsFeeDetail:
2573 type: object
2574 required:
2575 - fee
2576 - amount_start
2577 - amount_end
2578 properties:
2579 fee:
2580 type: string
2581 example: 0.0033
2582 amount_start:
2583 type: integer
2584 format: int32
2585 example: 0
2586 amount_end:
2587 type: integer
2588 format: int32
2589 example: 5000000
2590
2591 responseRedeemFee:
2592 type: object
2593 required:
2594 - code
2595 - info
2596 - data
2597 - ReferenceNumber
2598 properties:
2599 code:
2600 type: string
2601 example: "000000"
2602 info:
2603 type: string
2604 example: "Package redemption fee successfully loaded"
2605 data:
2606 type: array
2607 items:
2608 $ref: '#/components/schemas/responseRedeemFeeDetail'
2609 ReferenceNumber:
2610 type: string
2611 example: "<<based on param header from middleware>>"
2612
2613
2614 responseRedeemFeeDetail:
2615 type: object
2616 required:
2617 - fee
2618 - period_start
2619 - period_end
2620 properties:
2621 fee:
2622 type: string
2623 example: 0.0033
2624 period_start:
2625 type: integer
2626 format: int32
2627 example: 0
2628 period_end:
2629 type: integer
2630 format: int32
2631 example: 30
2632
2633 responseSwitchFee:
2634 type: object
2635 required:
2636 - code
2637 - info
2638 - data
2639 - ReferenceNumber
2640 properties:
2641 code:
2642 type: string
2643 example: "000000"
2644 info:
2645 type: string
2646 example: "Package switching fee successfully loaded"
2647 data:
2648 type: array
2649 items:
2650 $ref: '#/components/schemas/responseRedeemFeeDetail'
2651 ReferenceNumber:
2652 type: string
2653 example: "<<based on param header from middleware>>"
2654
2655 paramGetSettlementAcc:
2656 type: object
2657 required:
2658 - token
2659 - code
2660 properties:
2661 token:
2662 type: string
2663 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2664 code:
2665 type: string
2666 example: SYAR118
2667
2668 responseGetSettlementAcc:
2669 type: object
2670 required:
2671 - code
2672 - info
2673 - data
2674 - ReferenceNumber
2675 properties:
2676 code:
2677 type: string
2678 example: "000000"
2679 info:
2680 type: string
2681 example: "Settlement Accounts successfully loaded"
2682 data:
2683 type: array
2684 items:
2685 $ref: '#/components/schemas/responseGetSettlementAccData'
2686 ReferenceNumber:
2687 type: string
2688 example: "<<based on param header from middleware>>"
2689
2690 responseGetSettlementAccData:
2691 type: object
2692 required:
2693 - stlAccountName
2694 - stlAccountNo
2695 - bankName
2696 - settlementAccountId
2697 - currency
2698 properties:
2699 stlAccountName:
2700 type: string
2701 example: 003525976761
2702 stlAccountNo:
2703 type: string
2704 example: 003525976761
2705 bankName:
2706 type: string
2707 example: "Bank Danamon Indonesia"
2708 settlementAccountId:
2709 type: string
2710 example: 3829
2711 currency:
2712 type: string
2713 example: IDR
2714 availableBalance:
2715 type: string
2716 example: 24899078.58
2717
2718 paramGetInvtAcc:
2719 type: object
2720 required:
2721 - token
2722 properties:
2723 token:
2724 type: string
2725 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2726
2727 responseGetInvestmentAcc:
2728 type: object
2729 required:
2730 - code
2731 - info
2732 - data
2733 - ReferenceNumber
2734 properties:
2735 code:
2736 type: string
2737 example: "000000"
2738 info:
2739 type: string
2740 example: "Investment accounts successfully loaded"
2741 data:
2742 type: array
2743 items:
2744 $ref: '#/components/schemas/responseGetInvestmentAccData'
2745 ReferenceNumber:
2746 type: string
2747 example: "<<based on param header from middleware>>"
2748
2749 responseGetInvestmentAccData:
2750 type: object
2751 required:
2752 - packageName
2753 - packageCode
2754 - packageType
2755 - packageId
2756 - currency
2757 - totalUnit
2758 - investmentAccountId
2759 properties:
2760 packageName:
2761 type: string
2762 example: "BNP PARIBAS PESONA"
2763 packageCode:
2764 type: string
2765 example: "BNPPP"
2766 packageId:
2767 type: string
2768 example: "18"
2769 packageType:
2770 type: string
2771 example: "Reksa Dana Pasar Uang"
2772 currency:
2773 type: string
2774 example: "IDR"
2775 totalUnit:
2776 type: string
2777 example: 61374.7954
2778 investmentAccountId:
2779 type: string
2780 example: "INV00000929292001"
2781 paramRequetOtp:
2782 type: object
2783 required:
2784 - token
2785 - sessionid
2786 - language
2787 properties:
2788 language:
2789 type: string
2790 example: "id"
2791 sessionId:
2792 type: string
2793 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
2794 token:
2795 type: string
2796 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2797
2798
2799 responseRequestOTP:
2800 type: object
2801 required:
2802 - code
2803 - info
2804 - resultAvantrade
2805 - ReferenceNumber
2806 properties:
2807 code:
2808 type: string
2809 example: "000000"
2810 info:
2811 type: string
2812 example: "Request OTP Success"
2813 resultAvantrade:
2814 type: array
2815 items:
2816 $ref: '#/components/schemas/responseRequestOTPAvan'
2817 ReferenceNumber:
2818 type: string
2819 example: "<<based on param header from middleware>>"
2820
2821 responseRequestOTPAvan:
2822 type: object
2823 required:
2824 - errorcode
2825 - errormsg
2826 - result
2827 properties:
2828 errorcode:
2829 type: string
2830 example: 000000
2831 errormsg:
2832 type: string
2833 example: "SUCCESS"
2834 result:
2835 $ref: '#/components/schemas/responseRequestOTPAvan2'
2836
2837 responseRequestOTPAvan2:
2838 type: object
2839 required:
2840 - issent
2841 properties:
2842 issent:
2843 type: boolean
2844 example: true
2845
2846 paramValidateOtp:
2847 type: object
2848 required:
2849 - signature
2850 - sessionid
2851 - language
2852 - otp
2853 properties:
2854 language:
2855 type: string
2856 example: "id"
2857 otp:
2858 type: integer
2859 format: int32
2860 example: 12345678
2861 sessionId:
2862 type: string
2863 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
2864 token:
2865 type: string
2866 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2867
2868 responseValidateOTP:
2869 type: object
2870 required:
2871 - code
2872 - info
2873 - resultAvantrade
2874 - ReferenceNumber
2875 properties:
2876 code:
2877 type: string
2878 example: "000000"
2879 info:
2880 type: string
2881 example: "Validate OTP Success"
2882 resultAvantrade:
2883 type: array
2884 items:
2885 $ref: '#/components/schemas/responseValidateOTPAvan'
2886 ReferenceNumber:
2887 type: string
2888 example: "<<based on param header from middleware>>"
2889
2890 responseValidateOTPAvan:
2891 type: object
2892 required:
2893 - errorcode
2894 - errormsg
2895 - result
2896 properties:
2897 errorcode:
2898 type: string
2899 example: 000000
2900 errormsg:
2901 type: string
2902 example: "SUCCESS"
2903 result:
2904 type: array
2905 items:
2906 $ref: '#/components/schemas/responseValidateOTPAvan2'
2907
2908 responseValidateOTPAvan2:
2909 type: object
2910 required:
2911 - isvalid
2912 properties:
2913 issent:
2914 type: boolean
2915 example: true
2916
2917 paramSubs:
2918 type: object
2919 required:
2920 - code
2921 - token
2922 - transactionAmount
2923 - settlementAccountId
2924 - sessionId
2925 - language
2926 properties:
2927 code:
2928 type: string
2929 example: MANDIRI118
2930 token:
2931 type: string
2932 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2933 transactionAmount:
2934 type: integer
2935 format: int32
2936 example: 5000000
2937 settlementAccountId:
2938 type: integer
2939 format: int32
2940 example: 3829
2941 sessionId:
2942 type: string
2943 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
2944 lanuage:
2945 type: string
2946 example: "ID"
2947
2948 responseSubs:
2949 type: object
2950 required:
2951 - code
2952 - info
2953 - resultAvantrade
2954 - ReferenceNumber
2955 properties:
2956 code:
2957 type: string
2958 example: 000000
2959 info:
2960 type: string
2961 example: "Subscription success"
2962 resultAvantrade:
2963 $ref: '#/components/schemas/responseSubsAvan'
2964 ReferenceNumber:
2965 type: string
2966 example: "<<based on param header from middleware>>"
2967
2968 paramSubsAT:
2969 type: object
2970 required:
2971 - code
2972 - token
2973 - transactionAmount
2974 - settlementAccountId
2975 - sessionId
2976 - language
2977 - responseCodeSubs
2978 - responceInfoSubs
2979 - trxDate
2980 properties:
2981 code:
2982 type: string
2983 example: MANDIRI118
2984 token:
2985 type: string
2986 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
2987 transactionAmount:
2988 type: integer
2989 format: int32
2990 example: 5000000
2991 settlementAccountId:
2992 type: integer
2993 format: int32
2994 example: 3829
2995 sessionId:
2996 type: string
2997 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
2998 language:
2999 type: string
3000 example: "ID"
3001 responseCodeSubs:
3002 type: string
3003 example: "000011"
3004 responceInfoSubs:
3005 type: string
3006 example: "Failed, minimum subscription amount 500000"
3007 trxDate:
3008 type: string
3009 example: "01/01/2019 11:15:22 AM"
3010
3011 responseSubsAT:
3012 type: object
3013 required:
3014 - code
3015 - info
3016 - resultDOB
3017 - ReferenceNumber
3018 properties:
3019 code:
3020 type: string
3021 example: 000000
3022 info:
3023 type: string
3024 example: "Subscription success"
3025 resultDOB:
3026 $ref: '#/components/schemas/responseSubsATAvan'
3027 ReferenceNumber:
3028 type: string
3029 example: "<<based on param header from middleware>>"
3030
3031 responseSubsATAvan:
3032 type: object
3033 required:
3034 - error code
3035 - errorMsg
3036 properties:
3037 error code:
3038 type: string
3039 example: 000000
3040 errorMsg:
3041 type: string
3042 example: "SUCCESS"
3043
3044 paramRedsAT:
3045 type: object
3046 required:
3047 - code
3048 - token
3049 - unit
3050 - settlementAccountId
3051 - sessionId
3052 - language
3053 - responseCodeRedemp
3054 - responceInfoRedemp
3055 - trxDate
3056 properties:
3057 code:
3058 type: string
3059 example: MANDIRI118
3060 token:
3061 type: string
3062 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3063 unit:
3064 type: integer
3065 format: int32
3066 example: 1000
3067 settlementAccountId:
3068 type: integer
3069 format: int32
3070 example: 3829
3071 sessionId:
3072 type: string
3073 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
3074 language:
3075 type: string
3076 example: "ID"
3077 responseCodeRedemp:
3078 type: string
3079 example: "2032028"
3080 responceInfoRedemp:
3081 type: string
3082 example: "Failed, UT TRANSACTION MINIMUM BALANCE AFTER REDEMPTION UNIT INVALID"
3083 trxDate:
3084 type: string
3085 example: "01/01/2019 11:15:22 AM"
3086
3087 responseSubsAvan:
3088 type: object
3089 required:
3090 - errorcode
3091 - errormsg
3092 - result
3093 properties:
3094 errorcode:
3095 type: string
3096 example: 000000
3097 errormsg:
3098 type: string
3099 example: "SUCCESS"
3100 result:
3101 type: string
3102 example: ""
3103
3104 paramRedeem:
3105 type: object
3106 required:
3107 - invAcc
3108 - unit
3109 - redeemType
3110 - settlementAccountId
3111 - token
3112 - code
3113 properties:
3114 invAcc:
3115 type: string
3116 example: "INV00000929292001"
3117 unit:
3118 type: string
3119 example: 700
3120 redeemType:
3121 type: integer
3122 format: int32
3123 example: 1
3124 settlementAccountId:
3125 type: integer
3126 format: int32
3127 example: 3829
3128 token:
3129 type: string
3130 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3131 code:
3132 type: string
3133 example: MANDIRI118
3134
3135 responseRedeem:
3136 type: object
3137 required:
3138 - code
3139 - info
3140 - resultAvantrade
3141 - ReferenceNumber
3142 properties:
3143 code:
3144 type: string
3145 example: 000000
3146 info:
3147 type: string
3148 example: "Redemption success"
3149 resultAvantrade:
3150 $ref: '#/components/schemas/responseRedeemAvan'
3151 ReferenceNumber:
3152 type: string
3153 example: "<<based on param header from middleware>>"
3154
3155 responseRedeemAvan:
3156 type: object
3157 required:
3158 - errorcode
3159 - errormsg
3160 - result
3161 properties:
3162 errorcode:
3163 type: string
3164 example: 000000
3165 errormsg:
3166 type: string
3167 example: "SUCCESS"
3168 result:
3169 type: string
3170 example: ""
3171
3172 paramSwitch:
3173 type: object
3174 required:
3175 - invAccId
3176 - codeFrom
3177 - codeTo
3178 - unit
3179 - switchType
3180 - token
3181 properties:
3182 invAccId:
3183 type: string
3184 example: "INV00000929292001"
3185 codeFrom:
3186 type: string
3187 example: "FUNNY12"
3188 codeTo:
3189 type: string
3190 example: "FUNNY2019"
3191 unit:
3192 type: string
3193 example: 700
3194 switchType:
3195 type: integer
3196 format: int32
3197 example: 1
3198 token:
3199 type: string
3200 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3201
3202 responseSwitch:
3203 type: object
3204 required:
3205 - code
3206 - info
3207 - resultAvantrade
3208 - ReferenceNumber
3209 properties:
3210 code:
3211 type: string
3212 example: 000000
3213 info:
3214 type: string
3215 example: "Switching success"
3216 resultAvantrade:
3217 type: array
3218 items:
3219 $ref: '#/components/schemas/responseSwitchAvan'
3220 ReferenceNumber:
3221 type: string
3222 example: "<<based on param header from middleware>>"
3223
3224 responseSwitchAvan:
3225 type: object
3226 required:
3227 - errorcode
3228 - errormsg
3229 - result
3230 properties:
3231 errorcode:
3232 type: string
3233 example: 000000
3234 errormsg:
3235 type: string
3236 example: "SUCCESS"
3237 result:
3238 type: string
3239 example: ""
3240
3241 responseSwitchProduct:
3242 type: object
3243 required:
3244 - code
3245 - info
3246 - data
3247 - ReferenceNumber
3248 properties:
3249 code:
3250 type: string
3251 example: "000000"
3252 info:
3253 type: string
3254 example: "List product switch successfully loaded"
3255 data:
3256 type: array
3257 items:
3258 $ref: '#/components/schemas/responseSwitchProductData'
3259 ReferenceNumber:
3260 type: string
3261 example: "<<based on param header from middleware>>"
3262
3263 responseSwitchProductData:
3264 type: object
3265 required:
3266 - packageId
3267 - name
3268 - packageType
3269 - currency
3270 - prospectus_file
3271 - fact_sheet_file
3272 properties:
3273 packageId:
3274 type: string
3275 example: 144
3276 name:
3277 type: string
3278 example: BNP Pasar Minggu
3279 packageType:
3280 type: string
3281 example: "Reksa Dana Pasar Uang"
3282 currency:
3283 type: string
3284 example: "IDR"
3285 prospectus_file:
3286 type: string
3287 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
3288 fact_sheet_file:
3289 type: string
3290 example: "7d805b52-856f-416a-9c31-8ba1bceb1ce5"
3291
3292
3293 responseSwitchSync:
3294 type: object
3295 required:
3296 - code
3297 - info
3298 properties:
3299 code:
3300 type: integer
3301 format: int32
3302 example: 0
3303 info:
3304 type: string
3305 example: 'sync switch product success!<br>'
3306
3307 paramValidateTrx:
3308 type: object
3309 required:
3310 - code
3311 - token
3312 properties:
3313 code:
3314 type: string
3315 example: "FUNNY12"
3316 token:
3317 type: string
3318 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3319
3320 responseValidateTrx:
3321 type: object
3322 required:
3323 - code
3324 - info
3325 - ReferenceNumber
3326 properties:
3327 code:
3328 type: string
3329 example: "000001"
3330 info:
3331 type: string
3332 example: "Transaksi sudah melampaui batas waktu atau pada hari libur dan akan diproses pada hari bursa berikutnya."
3333 ReferenceNumber:
3334 type: string
3335 example: "<<based on param header from middleware>>"
3336
3337 paramValidateRiskProfile:
3338 type: object
3339 required:
3340 - token
3341 - sequencenumber
3342 properties:
3343 token:
3344 type: string
3345 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3346 sequencenumber:
3347 type: string
3348 example: "6014000001384187085134"
3349
3350 responseValidateRiskProfile:
3351 type: object
3352 required:
3353 - code
3354 - info
3355 - ReferenceNumber
3356 properties:
3357 code:
3358 type: string
3359 example: "000001"
3360 info:
3361 type: string
3362 example: "Data profil risiko Anda sudah tidak berlaku, silakan kunjungi Cabang Danamon terdekat untuk melakukan pengkinian data"
3363 ReferenceNumber:
3364 type: string
3365 example: "<<based on param header from middleware>>"
3366
3367 paramValidateRiskProfile2:
3368 type: object
3369 required:
3370 - token
3371 - code
3372 - sequencenumber
3373 properties:
3374 token:
3375 type: string
3376 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3377 code:
3378 type: string
3379 example: "FUNNY12"
3380 sequencenumber:
3381 type: string
3382 example: "014000001384187085134"
3383
3384 responseValidateRiskProfile2:
3385 type: object
3386 required:
3387 - code
3388 - info
3389 - ReferenceNumber
3390 properties:
3391 code:
3392 type: string
3393 example: "100001"
3394 info:
3395 type: string
3396 example: "Maaf, Risk profile Anda tidak dapat melakukan transaksi, silakan kunjungi Cabang Danamon terdekat untuk melakukan pengkinian data"
3397 ReferenceNumber:
3398 type: string
3399 example: "<<based on param header from middleware>>"
3400
3401 paramValidateLimitProduct:
3402 type: object
3403 required:
3404 - token
3405 - code
3406 - amount
3407 - subs
3408 properties:
3409 code:
3410 type: string
3411 example: "FUNNY12"
3412 token:
3413 type: string
3414 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3415 Amount:
3416 type: integer
3417 format: int32
3418 example: 50000
3419 subs:
3420 type: boolean
3421 example: t
3422
3423 responseValidateLimitProduct:
3424 type: object
3425 required:
3426 - code
3427 - info
3428 - ReferenceNumber
3429 properties:
3430 code:
3431 type: integer
3432 format: int32
3433 example: 200001
3434 info:
3435 type: string
3436 example: "Minimum transaksi adalah fund_packages.currency<<space>> fund_packages.min_subscription_amount"
3437 ReferenceNumber:
3438 type: string
3439 example: "<<based on param header from middleware>>"
3440
3441 paramDownloadFile:
3442 type: object
3443 required:
3444 - token
3445 - key
3446 properties:
3447 key:
3448 type: string
3449 example: "c03c8067-b141-4825-ae37-b68853f48ece"
3450 token:
3451 type: string
3452 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3453
3454 responseDownloadFile:
3455 type: object
3456 required:
3457 - binnary file
3458 properties:
3459 file:
3460 type: string
3461 example: "<<binnary file>>"
3462
3463 paramGetCustomerProfile:
3464 type: object
3465 required:
3466 - token
3467 properties:
3468 token:
3469 type: string
3470 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3471
3472 responseGetCustomerProfile:
3473 type: object
3474 required:
3475 - customer_id
3476 - customer_risk_profile.code
3477 - customer_risk_profile.value
3478 - customer_document.id_card_image
3479 - customer_document.signature_image
3480 - customer_status
3481 - customer_data.general.last_name
3482 - customer_data.general.phone_number
3483 - customer_data.general.first_name
3484 - kyc.settlement_account_no
3485 - kyc.id_number
3486 - kyc.total_asset
3487 - kyc.occupation
3488 - kyc.gender
3489 - kyc.id_expiration
3490 - kyc.birth_date
3491 - kyc.income_source
3492 - kyc.birth_place
3493 - kyc.investment_purpose
3494 - kyc.education_background
3495 - kyc.business_nature
3496 - kyc.mailing.country
3497 - kyc.mailing.address
3498 - kyc.mailing.province
3499 - kyc.mailing.city
3500 - kyc.mailing.phone
3501 - kyc.mailing.postal_code
3502 - kyc.mother_maiden_name
3503 - kyc.religion
3504 - kyc. marital_status
3505 - kyc.nationality
3506 - kyc.investment_experience
3507 - kyc.settlement_bank
3508 - kyc.legal.country
3509 - kyc.legal.province
3510 - kyc.legal.city
3511 - kyc.legal.phone
3512 - kyc.legal.postal_code
3513 - kyc.settlement_account_name
3514 - kyc.statement_type
3515 - risk_profile.question
3516 - risk_profile.answer
3517 - fatca.question
3518 - fatca.answer
3519
3520 properties:
3521 code:
3522 type: string
3523 example: "000000"
3524 info:
3525 type: string
3526 example: "Customer profile successfully loaded"
3527 data:
3528 $ref: '#/components/schemas/responseGetCustomerProfile2'
3529 ReferenceNumber:
3530 type: string
3531 example: "<<based on param header from middleware>>"
3532
3533 responseGetCustomerProfile2:
3534 type: object
3535 properties:
3536 customer_id:
3537 type: integer
3538 format: int32
3539 example: C1703000000
3540 customer_risk_profile:
3541 $ref: '#/components/schemas/responseGetCustomerProfile3'
3542 customer_document:
3543 $ref: '#/components/schemas/responseGetCustomerProfile4'
3544 customer_status:
3545 type: string
3546 example: ACT
3547 customer_data:
3548 $ref: '#/components/schemas/responseGetCustomerProfile5'
3549 kyc:
3550 $ref: '#/components/schemas/responseGetCustomerProfile6'
3551
3552
3553 responseGetCustomerProfile3:
3554 type: object
3555 properties:
3556 code:
3557 type: string
3558 example: CON
3559 value:
3560 type: string
3561 example: Conservative
3562
3563 responseGetCustomerProfile4:
3564 type: object
3565 properties:
3566 id_card_image:
3567 type: string
3568 example: ""
3569 signature_image:
3570 type: string
3571 example: ""
3572
3573 responseGetCustomerProfile5:
3574 type: object
3575 properties:
3576 general:
3577 $ref: '#/components/schemas/responseGetCustomerProfile5.1'
3578
3579 responseGetCustomerProfile5.1:
3580 type: object
3581 properties:
3582 last_name:
3583 type: string
3584 example: "Dermawan 2"
3585 phone_number:
3586 type: string
3587 example: "62-81234567890"
3588 first_name:
3589 type: string
3590 example: "Leo T"
3591
3592 responseGetCustomerProfile6:
3593 type: object
3594 properties:
3595 settlement_account:
3596 type: array
3597 items:
3598 $ref: '#/components/schemas/responseGetSettlementAccData'
3599 id_number:
3600 type: string
3601 example: "12345678909"
3602 total_asset:
3603 type: string
3604 example: "TA01"
3605 occupation:
3606 type: string
3607 example: "8"
3608 gender:
3609 type: string
3610 example: "ML"
3611 id_expiration:
3612 type: string
3613 example: "2099-12-31T00:00:00,0Z"
3614 birth_date:
3615 type: string
3616 example: "694112400000"
3617 income_source:
3618 type: string
3619 example: "OTH"
3620 birth_place:
3621 type: string
3622 example: "Jakarta"
3623 investment_purpose:
3624 type: string
3625 example: "OTH"
3626 education_background:
3627 type: string
3628 example: "DIP"
3629 business_nature:
3630 type: string
3631 example: "10"
3632 mailing:
3633 $ref: '#/components/schemas/responseGetCustomerProfile6.1'
3634 mother_maiden_name:
3635 type: string
3636 example: "lulu"
3637 marital_status:
3638 type: string
3639 example: "MRD"
3640 nationality:
3641 type: string
3642 example: "SPM"
3643 investment_experience:
3644 type: string
3645 example: "IE03"
3646 statement_type:
3647 type: string
3648 example: "1"
3649 legal:
3650 $ref: '#/components/schemas/responseGetCustomerProfile6.2'
3651 risk_profile:
3652 type: array
3653 items:
3654 $ref: '#/components/schemas/responseGetCustomerProfile6.3'
3655 fatca:
3656 type: array
3657 items:
3658 $ref: '#/components/schemas/responseGetCustomerProfile6.4'
3659
3660 responseGetCustomerProfile6.1:
3661 type: object
3662 properties:
3663 country:
3664 type: string
3665 example: "IDN"
3666 address:
3667 type: string
3668 example: "Tangerang"
3669 province:
3670 type: string
3671 example: "ID-GO"
3672 city:
3673 type: string
3674 example: "1173"
3675 phone:
3676 type: string
3677 example: "62-21-1234567890"
3678 postal_code:
3679 type: string
3680 example: "1234560"
3681
3682 responseGetCustomerProfile6.2:
3683 type: object
3684 properties:
3685 country:
3686 type: string
3687 example: "SPM"
3688 address:
3689 type: string
3690 example: "Kantor"
3691 province:
3692 type: string
3693 example: "ID-JA"
3694 city:
3695 type: string
3696 example: "1102"
3697 phone:
3698 type: string
3699 example: "62-21-123456789"
3700 postal_code:
3701 type: string
3702 example: "1234560"
3703
3704 responseGetCustomerProfile6.3:
3705 type: object
3706 properties:
3707 question:
3708 type: string
3709 example: "Q1"
3710 answer:
3711 type: string
3712 example: "[Q1A2]"
3713
3714 responseGetCustomerProfile6.4:
3715 type: object
3716 properties:
3717 question:
3718 type: string
3719 example: "Q10"
3720 answer:
3721 type: string
3722 example: "[Q10A1]"
3723
3724 paramGetInvestmentPurpose:
3725 type: object
3726 required:
3727 - token
3728 properties:
3729 token:
3730 type: string
3731 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3732
3733 responseGetInvestmentPurpose:
3734 type: object
3735 required:
3736 - code
3737 - info
3738 - data
3739 - ReferenceNumber
3740 properties:
3741 code:
3742 type: string
3743 example: "000000"
3744 info:
3745 type: string
3746 example: "List investment purposes successfully loaded"
3747 data:
3748 type: array
3749 items:
3750 $ref: '#/components/schemas/responseGetInvestmentPurposeData'
3751 ReferenceNumber:
3752 type: string
3753 example: "<<based on param header from middleware>>"
3754
3755 responseGetInvestmentPurposeData:
3756 type: object
3757 required:
3758 - code
3759 - value
3760 properties:
3761 code:
3762 type: string
3763 example: "SVG"
3764 value:
3765 type: string
3766 example: "Saving"
3767
3768 paramValidateBalanceAfterRedeem:
3769 type: object
3770 required:
3771 - token
3772 - code
3773 - unit
3774 - invAcc
3775 properties:
3776 code:
3777 type: string
3778 example: "FUNNY12"
3779 token:
3780 type: string
3781 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3782 unit:
3783 type: integer
3784 format: int32
3785 example: 1000
3786 invAcc:
3787 type: string
3788 example: "INV000000762943"
3789
3790 responseValidateBalanceAfterRedeem:
3791 type: object
3792 required:
3793 - code
3794 - info
3795 - ReferenceNumber
3796 properties:
3797 code:
3798 type: string
3799 example: "000001"
3800 info:
3801 type: string
3802 example: "Minimum unit yang harus disisakan adalah 10 Unit"
3803 ReferenceNumber:
3804 type: string
3805 example: "<<based on param header from middleware>>"
3806
3807 paramSwitchAT:
3808 type: object
3809 required:
3810 - codeFr
3811 - codeTo
3812 - token
3813 - unit
3814 - switchType
3815 - settlementAccountId
3816 - sessionId
3817 - language
3818 - responseCodeRedemp
3819 - responceInfoRedemp
3820 - trxDate
3821 properties:
3822 codeFr:
3823 type: string
3824 example: MANDIRI118
3825 codeTo:
3826 type: string
3827 example: FUNNY12
3828 token:
3829 type: string
3830 example: HCIKvwwaFm0HDAeBKjNLIWIrX-CnRL-eyPdvZVxHcUyVVNC-6bIy5CkcDk2VeDYJ6TqQvs2_6dAaKQOO_sFtbg
3831 unit:
3832 type: integer
3833 format: int32
3834 example: 1000
3835 switchType:
3836 type: integer
3837 format: int32
3838 example: 1
3839 settlementAccountId:
3840 type: integer
3841 format: int32
3842 example: 3829
3843 sessionId:
3844 type: string
3845 example: "7C5407E7-4D86-4BB4-B1E1-00A2B90AF364"
3846 language:
3847 type: string
3848 example: "ID"
3849 responseCodeRedemp:
3850 type: string
3851 example: "2032028"
3852 responceInfoRedemp:
3853 type: string
3854 example: "Failed, UT TRANSACTION MINIMUM BALANCE AFTER REDEMPTION UNIT INVALID"
3855 trxDate:
3856 type: string
3857 example: "01/01/2019 11:15:22 AM"
3858
3859 paramGetNAV:
3860 type: object
3861 required:
3862 - token
3863 - code
3864 - range
3865 properties:
3866 code:
3867 type: string
3868 example: "MANDIRI118"
3869 token:
3870 type: string
3871 example: "cf531b5db5f9b3b427eeeda867cc1141b5edfb6e68e8599f45196e8e5675e903e38d13f114b86151c8549ba8d12b055b"
3872 range:
3873 type: string
3874 example: "30"