Skip to main content
POST
/
api
/
subjects
Create a subject
curl --request POST \
  --url http://localhost/api/api/subjects \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "client_subject_id": "<string>",
  "subject_name": "<string>",
  "unique_identification_number": "<string>",
  "account_holder": true,
  "address": "<string>",
  "customer_segment": "<string>",
  "date_and_place_of_birth": "<string>",
  "country_of_birth_or_incorporation": "<string>",
  "nationality": "<string>",
  "account_type": "<string>",
  "account_type_ii": "<string>",
  "account_opening_date": "<string>",
  "account_opening_date_ii": "<string>",
  "customer_aml_risk_rating": "<string>",
  "customer_account": "<string>",
  "customer_account_ii": "<string>",
  "customer_opening_date": "<string>",
  "source_of_funds": "<string>",
  "average_monthly_income": "<string>",
  "cif_status": "<string>",
  "occupation": "<string>",
  "industry": "<string>",
  "purpose_of_account": "<string>",
  "contact_number": "<string>",
  "email_address": "<string>",
  "risk_assessment_score": "<string>",
  "created_by": 123,
  "modified_by": 123
}
'
import requests

url = "http://localhost/api/api/subjects"

payload = {
"client_subject_id": "<string>",
"subject_name": "<string>",
"unique_identification_number": "<string>",
"account_holder": True,
"address": "<string>",
"customer_segment": "<string>",
"date_and_place_of_birth": "<string>",
"country_of_birth_or_incorporation": "<string>",
"nationality": "<string>",
"account_type": "<string>",
"account_type_ii": "<string>",
"account_opening_date": "<string>",
"account_opening_date_ii": "<string>",
"customer_aml_risk_rating": "<string>",
"customer_account": "<string>",
"customer_account_ii": "<string>",
"customer_opening_date": "<string>",
"source_of_funds": "<string>",
"average_monthly_income": "<string>",
"cif_status": "<string>",
"occupation": "<string>",
"industry": "<string>",
"purpose_of_account": "<string>",
"contact_number": "<string>",
"email_address": "<string>",
"risk_assessment_score": "<string>",
"created_by": 123,
"modified_by": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
client_subject_id: '<string>',
subject_name: '<string>',
unique_identification_number: '<string>',
account_holder: true,
address: '<string>',
customer_segment: '<string>',
date_and_place_of_birth: '<string>',
country_of_birth_or_incorporation: '<string>',
nationality: '<string>',
account_type: '<string>',
account_type_ii: '<string>',
account_opening_date: '<string>',
account_opening_date_ii: '<string>',
customer_aml_risk_rating: '<string>',
customer_account: '<string>',
customer_account_ii: '<string>',
customer_opening_date: '<string>',
source_of_funds: '<string>',
average_monthly_income: '<string>',
cif_status: '<string>',
occupation: '<string>',
industry: '<string>',
purpose_of_account: '<string>',
contact_number: '<string>',
email_address: '<string>',
risk_assessment_score: '<string>',
created_by: 123,
modified_by: 123
})
};

fetch('http://localhost/api/api/subjects', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));
<?php

$curl = curl_init();

curl_setopt_array($curl, [
CURLOPT_URL => "http://localhost/api/api/subjects",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'client_subject_id' => '<string>',
'subject_name' => '<string>',
'unique_identification_number' => '<string>',
'account_holder' => true,
'address' => '<string>',
'customer_segment' => '<string>',
'date_and_place_of_birth' => '<string>',
'country_of_birth_or_incorporation' => '<string>',
'nationality' => '<string>',
'account_type' => '<string>',
'account_type_ii' => '<string>',
'account_opening_date' => '<string>',
'account_opening_date_ii' => '<string>',
'customer_aml_risk_rating' => '<string>',
'customer_account' => '<string>',
'customer_account_ii' => '<string>',
'customer_opening_date' => '<string>',
'source_of_funds' => '<string>',
'average_monthly_income' => '<string>',
'cif_status' => '<string>',
'occupation' => '<string>',
'industry' => '<string>',
'purpose_of_account' => '<string>',
'contact_number' => '<string>',
'email_address' => '<string>',
'risk_assessment_score' => '<string>',
'created_by' => 123,
'modified_by' => 123
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}
package main

import (
"fmt"
"strings"
"net/http"
"io"
)

func main() {

url := "http://localhost/api/api/subjects"

payload := strings.NewReader("{\n \"client_subject_id\": \"<string>\",\n \"subject_name\": \"<string>\",\n \"unique_identification_number\": \"<string>\",\n \"account_holder\": true,\n \"address\": \"<string>\",\n \"customer_segment\": \"<string>\",\n \"date_and_place_of_birth\": \"<string>\",\n \"country_of_birth_or_incorporation\": \"<string>\",\n \"nationality\": \"<string>\",\n \"account_type\": \"<string>\",\n \"account_type_ii\": \"<string>\",\n \"account_opening_date\": \"<string>\",\n \"account_opening_date_ii\": \"<string>\",\n \"customer_aml_risk_rating\": \"<string>\",\n \"customer_account\": \"<string>\",\n \"customer_account_ii\": \"<string>\",\n \"customer_opening_date\": \"<string>\",\n \"source_of_funds\": \"<string>\",\n \"average_monthly_income\": \"<string>\",\n \"cif_status\": \"<string>\",\n \"occupation\": \"<string>\",\n \"industry\": \"<string>\",\n \"purpose_of_account\": \"<string>\",\n \"contact_number\": \"<string>\",\n \"email_address\": \"<string>\",\n \"risk_assessment_score\": \"<string>\",\n \"created_by\": 123,\n \"modified_by\": 123\n}")

req, _ := http.NewRequest("POST", url, payload)

req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")

res, _ := http.DefaultClient.Do(req)

defer res.Body.Close()
body, _ := io.ReadAll(res.Body)

fmt.Println(string(body))

}
HttpResponse<String> response = Unirest.post("http://localhost/api/api/subjects")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"client_subject_id\": \"<string>\",\n \"subject_name\": \"<string>\",\n \"unique_identification_number\": \"<string>\",\n \"account_holder\": true,\n \"address\": \"<string>\",\n \"customer_segment\": \"<string>\",\n \"date_and_place_of_birth\": \"<string>\",\n \"country_of_birth_or_incorporation\": \"<string>\",\n \"nationality\": \"<string>\",\n \"account_type\": \"<string>\",\n \"account_type_ii\": \"<string>\",\n \"account_opening_date\": \"<string>\",\n \"account_opening_date_ii\": \"<string>\",\n \"customer_aml_risk_rating\": \"<string>\",\n \"customer_account\": \"<string>\",\n \"customer_account_ii\": \"<string>\",\n \"customer_opening_date\": \"<string>\",\n \"source_of_funds\": \"<string>\",\n \"average_monthly_income\": \"<string>\",\n \"cif_status\": \"<string>\",\n \"occupation\": \"<string>\",\n \"industry\": \"<string>\",\n \"purpose_of_account\": \"<string>\",\n \"contact_number\": \"<string>\",\n \"email_address\": \"<string>\",\n \"risk_assessment_score\": \"<string>\",\n \"created_by\": 123,\n \"modified_by\": 123\n}")
.asString();
require 'uri'
require 'net/http'

url = URI("http://localhost/api/api/subjects")

http = Net::HTTP.new(url.host, url.port)

request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"client_subject_id\": \"<string>\",\n \"subject_name\": \"<string>\",\n \"unique_identification_number\": \"<string>\",\n \"account_holder\": true,\n \"address\": \"<string>\",\n \"customer_segment\": \"<string>\",\n \"date_and_place_of_birth\": \"<string>\",\n \"country_of_birth_or_incorporation\": \"<string>\",\n \"nationality\": \"<string>\",\n \"account_type\": \"<string>\",\n \"account_type_ii\": \"<string>\",\n \"account_opening_date\": \"<string>\",\n \"account_opening_date_ii\": \"<string>\",\n \"customer_aml_risk_rating\": \"<string>\",\n \"customer_account\": \"<string>\",\n \"customer_account_ii\": \"<string>\",\n \"customer_opening_date\": \"<string>\",\n \"source_of_funds\": \"<string>\",\n \"average_monthly_income\": \"<string>\",\n \"cif_status\": \"<string>\",\n \"occupation\": \"<string>\",\n \"industry\": \"<string>\",\n \"purpose_of_account\": \"<string>\",\n \"contact_number\": \"<string>\",\n \"email_address\": \"<string>\",\n \"risk_assessment_score\": \"<string>\",\n \"created_by\": 123,\n \"modified_by\": 123\n}"

response = http.request(request)
puts response.read_body
{
  "client_subject_id": "<string>",
  "subject_name": "<string>",
  "unique_identification_number": "<string>",
  "account_holder": true,
  "address": "<string>",
  "customer_segment": "<string>",
  "date_and_place_of_birth": "<string>",
  "country_of_birth_or_incorporation": "<string>",
  "nationality": "<string>",
  "account_type": "<string>",
  "account_type_ii": "<string>",
  "account_opening_date": "<string>",
  "account_opening_date_ii": "<string>",
  "customer_aml_risk_rating": "<string>",
  "customer_account": "<string>",
  "customer_account_ii": "<string>",
  "customer_opening_date": "<string>",
  "source_of_funds": "<string>",
  "average_monthly_income": "<string>",
  "cif_status": "<string>",
  "occupation": "<string>",
  "industry": "<string>",
  "purpose_of_account": "<string>",
  "contact_number": "<string>",
  "email_address": "<string>",
  "risk_assessment_score": "<string>",
  "created_by": 123,
  "modified_by": 123
}
Customer (used in this doc) and Subject (used in the API/backend) mean the same thing: one individual.
In order for Athena to accept Transaction records, the Subjects/Customers will need to be enrolled into Athena first. Each customer/subject ID record represents an individual person. Sample HTTP Request (Mandatory fields only)
HTTP Method: POST
URL: {{base_url}}/api/subjects
Request Body:
e.g.
{
	"client_subject_id":"AS0001Y",
	"subject_name":"Lim Kay Wee"
}
Sample HTTP Request (Mandatory Fields and Optional Fields Included)
HTTP Method: POST
URL: {{base_url}}/api/subjects
Request Body:
e.g.
{
     "client_subject_id": "AS0002Y",
     "subject_name":"Joseph Tan Kai Song",
     "customer_segment":"High Net Worth",
     "date_and_place_of_birth":"13-Jun-1992, Singapore",
     "nationality":"SINGAPOREAN",
     "account_type":"REGULAR",
     "customer_aml_risk_rating":"MEDIUM",
     "customer_account":"PREMIUM",
     "account_opening_date":"13 Jun 2010",
     "source_of_funds":"Unknown",
     "average_monthly_income":"5000”,
     "cif_status":"N/A",
     "occupation":"Software Developer",
     "industry":"Information Technology",
     "purpose_of_account":"Savings",
     "contact_number":"97412572",
     "email_address":"jasontay@outlook.sg",
     "unique_identification_number":"123456789",
     "address":"Marina Bay",
     "account_type_ii":"-",
     "account_opening_date_ii":"-",
     "customer_account_ii":"-"
}

Authorizations

Authorization
string
header
required

JWT token obtained from AWS Cognito or custom authentication service

Body

client_subject_id
string
required
Required string length: 1 - 255
subject_name
string
required
Required string length: 1 - 255
unique_identification_number
string
Maximum string length: 255
account_holder
boolean | null
address
string
Maximum string length: 255
customer_segment
string
Maximum string length: 255
date_and_place_of_birth
string
Maximum string length: 255
country_of_birth_or_incorporation
string
Maximum string length: 255
nationality
string
Maximum string length: 60
account_type
string
Maximum string length: 255
account_type_ii
string
Maximum string length: 255
account_opening_date
string
Maximum string length: 255
account_opening_date_ii
string
Maximum string length: 255
customer_aml_risk_rating
string
Maximum string length: 255
customer_account
string
Maximum string length: 255
customer_account_ii
string
Maximum string length: 255
customer_opening_date
string
Maximum string length: 255
source_of_funds
string
Maximum string length: 255
average_monthly_income
string
Maximum string length: 255
cif_status
string
Maximum string length: 255
occupation
string
Maximum string length: 255
industry
string
Maximum string length: 255
purpose_of_account
string
Maximum string length: 255
contact_number
string
Maximum string length: 255
email_address
string
Maximum string length: 255
risk_assessment_score
string<decimal>
Pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
created_by
integer | null
modified_by
integer | null

Response

201 - application/json
client_subject_id
string
required
Maximum string length: 255
subject_name
string
required
Maximum string length: 255
unique_identification_number
string
Maximum string length: 255
account_holder
boolean | null
address
string
Maximum string length: 255
customer_segment
string
Maximum string length: 255
date_and_place_of_birth
string
Maximum string length: 255
country_of_birth_or_incorporation
string
Maximum string length: 255
nationality
string
Maximum string length: 60
account_type
string
Maximum string length: 255
account_type_ii
string
Maximum string length: 255
account_opening_date
string
Maximum string length: 255
account_opening_date_ii
string
Maximum string length: 255
customer_aml_risk_rating
string
Maximum string length: 255
customer_account
string
Maximum string length: 255
customer_account_ii
string
Maximum string length: 255
customer_opening_date
string
Maximum string length: 255
source_of_funds
string
Maximum string length: 255
average_monthly_income
string
Maximum string length: 255
cif_status
string
Maximum string length: 255
occupation
string
Maximum string length: 255
industry
string
Maximum string length: 255
purpose_of_account
string
Maximum string length: 255
contact_number
string
Maximum string length: 255
email_address
string
Maximum string length: 255
risk_assessment_score
string<decimal>
Pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
created_by
integer | null
modified_by
integer | null