Project

General

Profile

Actions

Foreign

1. Objective
To enable users to update their personal information in order to maintain compliance with ongoing regulatory requirements.


2. Environment & Routing


3. Data Source
User identification and authorization data are securely extracted from the Bearer Token.

Token (Decoded):

key type description value
CustomerType int Identifies the classification of the customer based on the system enumeration 1

4.Customer Type Enumeration
The CustomerType integer maps to the following defined constants:

const (
	CustomerTypeIndividual CustomerType = iota + 1 // Value: 1
	CustomerTypeForeigner                          // Value: 2
	CustomerTypeCorporate                          // Value: 3
)

5. API Specification
This section defines the API endpoints used in the Re-KYC process. The process is divided into two main steps: Initialization and Submission.

5.1 Initialize Re-KYC Information (Init):
Used to retrieve or initialize the customer's current KYC information before they make updates.

  • Method: POST
  • Path: /api/v1/rekyc/foreign/info
  • payload: {}

Headers:

key value description
Authorization Bearer {token} Access token extracted from the user's session.

5.2 Submit Re-KYC Information (Submit):
Used to submit the user's updated KYC information to the system.

  • Method: POST
  • Path: /api/v1/rekyc/foreign/update

Headers:

key value description
Authorization Bearer {token} Access token extracted from the user's session.

Payload:

key type description
info object
info.fullname string
info.registerId string
info.customerCode number
info.birthdate string
info.age number
info.marriageStatus string
info.countryOfIncome string
info.education string
info.occupation string
info.office string
info.businessType string
info.position string
info.salary string
info.sourceOfIncome string
info.passportNumber string
investmentObjectives object
investmentObjectives.registerId string
investmentObjectives.shortTermInvestment boolean
investmentObjectives.longTermInvestment boolean
investmentObjectives.taxesInvestment boolean
investmentObjectives.retireInvestment boolean
fatca object
fatca.form object
fatca.form.registerId string
fatca.form.isFatca boolean
fatca.form.fatcaInfo string
fatca.form.isKnowLedgeDone boolean
fatca.form.knowLedgeTestResult number
fatca.w8 object / null
fatca.w9 object / null
suiteTest object
suiteTest.answers array[string]
suiteTest.result object
suiteTest.result.id string
suiteTest.result.registerId string
suiteTest.result.totalScore number
suiteTest.result.level number
suiteTest.result.investorTypeRisk string
suiteTest.result.additional string
suiteTest.result.answers array[string] / null
investorType object
investorType.investorType number
investorType.investorDocumentType string
investorType.investorTypeKnowledge string
investorType.filePath string
selfIdentification object
selfIdentification.passportNumber string

5.3 Initialize Appman (Init Appman):
Used to initialize the Appman verification process.

  • Endpoint: /api/v1/rekyc/foreign/appman/init
  • Method: GET

Headers:

key value description
Content-Type application/json
Authorization Bearer {token}

Query Parameters:

key type description
registerId string

5.4 Appman Result:

  • Endpoint: /api/v1/rekyc/foreign/appman/result
  • Method: POST

Headers:

key value description
Content-Type application/json

Payload:

key type description
verifyid string
verified boolean
isMobile boolean

Response (200 OK):

key type description
response object
response.registerId string

Workflow:

@startuml rekyc_sequence

actor "Foreign Citizen" as u
participant "ReKYC Page" as f
participant "Backend API" as b
database "Database" as d
database "Session Storage" as s
participant "Appman" as a

activate u
activate f

group "User info and income"
u -> f: access reKYC page
f -> b: POST: api/v1/customer/info/rekyc/info
activate b
b->d: get user data
activate d
d --> b: 
deactivate d
b --> f: user data
deactivate b
f->s: store user data in session
f --> u: display user data and reKYC form
end

group "Suitability test"
u -> f: click "do suitability test"
f --> u: redirect to suitability test page
u-> f: submit suitability test
f->s: update session store
f --> u: redirect to reKYC page
end

group "Verification"
u->f: click "do verification"
f -> b: init appman session
activate b
b -> a: create appman session
activate a
a --> b:
deactivate a
b --> f: appman session id
deactivate b
f -> a: user do verification on appman page
activate a
a --> f: 
deactivate a
f -> b: sent appman result
activate b
b -> a: check appman result
activate a
a --> b:
deactivate a
b -> d: store verification result
activate d
d --> b:
deactivate d
b --> f: verification result
deactivate b
f -> s: update session store
f --> u: redirect to reKYC page with verification result
end

group "Form Submission"
u -> f: fill passport number
u -> f: select investor type and upload document
u -> f: submit form
f->s: update session store with form data
f -> b: POST: /api/v1/customer/info/rekyc/update
activate b
b -> d: store reKYC form data
activate d
d --> b:
deactivate d
b --> f: submission result
deactivate b
f --> u: display submission result
end

deactivate f
deactivate u

@enduml

Updated by prin methirattanasophon 24 days ago · 1 revisions