createNewCRP
curl --request POST \
--url https://api.artemis.cynopsis.co/api/customer/{customerId}/crp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Domain-ID: <x-domain-id>' \
--data '
{
"active": true,
"forms": {},
"id": 123,
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"roles": [
{
"role": "<string>",
"appointedDate": "2023-12-25",
"id": 123,
"resignedDate": "2023-12-25"
}
]
}
'import requests
url = "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp"
payload = {
"active": True,
"forms": {},
"id": 123,
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"roles": [
{
"role": "<string>",
"appointedDate": "2023-12-25",
"id": 123,
"resignedDate": "2023-12-25"
}
]
}
headers = {
"X-Domain-ID": "<x-domain-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Domain-ID': '<x-domain-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
active: true,
forms: {},
id: 123,
profileId: 123,
profileReferenceId: '<string>',
referenceId: '<string>',
roles: [
{
role: '<string>',
appointedDate: '2023-12-25',
id: 123,
resignedDate: '2023-12-25'
}
]
})
};
fetch('https://api.artemis.cynopsis.co/api/customer/{customerId}/crp', 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 => "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp",
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([
'active' => true,
'forms' => [
],
'id' => 123,
'profileId' => 123,
'profileReferenceId' => '<string>',
'referenceId' => '<string>',
'roles' => [
[
'role' => '<string>',
'appointedDate' => '2023-12-25',
'id' => 123,
'resignedDate' => '2023-12-25'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Domain-ID: <x-domain-id>"
],
]);
$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 := "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp"
payload := strings.NewReader("{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domain-ID", "<x-domain-id>")
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("https://api.artemis.cynopsis.co/api/customer/{customerId}/crp")
.header("X-Domain-ID", "<x-domain-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.artemis.cynopsis.co/api/customer/{customerId}/crp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domain-ID"] = '<x-domain-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"active": true,
"assignees": [
{
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
}
],
"createdAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"createdBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"forms": {},
"id": 123,
"lastRiskAssessment": "2023-11-07T05:31:56Z",
"listRoleAsText": [
"<string>"
],
"notes": {},
"other": {},
"parentId": 123,
"particular": {},
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"riskRating": "HIGH",
"roles": [
{
"appointedDate": "2023-12-25",
"createdAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"createdBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"id": 123,
"resignedDate": "2023-12-25",
"role": "<string>",
"updatedAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"updatedBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
}
}
],
"status": "ACCEPTED",
"type": "CORPORATE",
"updatedAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"updatedBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"vendorEntityGuid": "<string>",
"vendorName": "<string>"
}Step 2 — Create a CRP
Create an Individual CRP
POST
/
api
/
customer
/
{customerId}
/
crp
createNewCRP
curl --request POST \
--url https://api.artemis.cynopsis.co/api/customer/{customerId}/crp \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'X-Domain-ID: <x-domain-id>' \
--data '
{
"active": true,
"forms": {},
"id": 123,
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"roles": [
{
"role": "<string>",
"appointedDate": "2023-12-25",
"id": 123,
"resignedDate": "2023-12-25"
}
]
}
'import requests
url = "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp"
payload = {
"active": True,
"forms": {},
"id": 123,
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"roles": [
{
"role": "<string>",
"appointedDate": "2023-12-25",
"id": 123,
"resignedDate": "2023-12-25"
}
]
}
headers = {
"X-Domain-ID": "<x-domain-id>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {
'X-Domain-ID': '<x-domain-id>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({
active: true,
forms: {},
id: 123,
profileId: 123,
profileReferenceId: '<string>',
referenceId: '<string>',
roles: [
{
role: '<string>',
appointedDate: '2023-12-25',
id: 123,
resignedDate: '2023-12-25'
}
]
})
};
fetch('https://api.artemis.cynopsis.co/api/customer/{customerId}/crp', 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 => "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp",
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([
'active' => true,
'forms' => [
],
'id' => 123,
'profileId' => 123,
'profileReferenceId' => '<string>',
'referenceId' => '<string>',
'roles' => [
[
'role' => '<string>',
'appointedDate' => '2023-12-25',
'id' => 123,
'resignedDate' => '2023-12-25'
]
]
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"X-Domain-ID: <x-domain-id>"
],
]);
$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 := "https://api.artemis.cynopsis.co/api/customer/{customerId}/crp"
payload := strings.NewReader("{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Domain-ID", "<x-domain-id>")
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("https://api.artemis.cynopsis.co/api/customer/{customerId}/crp")
.header("X-Domain-ID", "<x-domain-id>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.artemis.cynopsis.co/api/customer/{customerId}/crp")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Domain-ID"] = '<x-domain-id>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"active\": true,\n \"forms\": {},\n \"id\": 123,\n \"profileId\": 123,\n \"profileReferenceId\": \"<string>\",\n \"referenceId\": \"<string>\",\n \"roles\": [\n {\n \"role\": \"<string>\",\n \"appointedDate\": \"2023-12-25\",\n \"id\": 123,\n \"resignedDate\": \"2023-12-25\"\n }\n ]\n}"
response = http.request(request)
puts response.read_body{
"active": true,
"assignees": [
{
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
}
],
"createdAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"createdBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"forms": {},
"id": 123,
"lastRiskAssessment": "2023-11-07T05:31:56Z",
"listRoleAsText": [
"<string>"
],
"notes": {},
"other": {},
"parentId": 123,
"particular": {},
"profileId": 123,
"profileReferenceId": "<string>",
"referenceId": "<string>",
"riskRating": "HIGH",
"roles": [
{
"appointedDate": "2023-12-25",
"createdAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"createdBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"id": 123,
"resignedDate": "2023-12-25",
"role": "<string>",
"updatedAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"updatedBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
}
}
],
"status": "ACCEPTED",
"type": "CORPORATE",
"updatedAt": {
"date": 123,
"day": 123,
"hours": 123,
"minutes": 123,
"month": 123,
"nanos": 123,
"seconds": 123,
"time": 123,
"timezoneOffset": 123,
"year": 123
},
"updatedBy": {
"email": "<string>",
"firstName": "<string>",
"fullName": "<string>",
"id": 123,
"lastName": "<string>"
},
"vendorEntityGuid": "<string>",
"vendorName": "<string>"
}This endpoint allows you to create a Customer Related Party (CRP) that is associated with an existing Primary Customer.
A CRP can be either Individual or Corporate, and it must include:
- A designated role (e.g., DIRECTOR, ULTIMATE HOLDING COMPANY).
- Required particulars depending on whether it is an individual or a corporate entity.
evidenceCorroborated: Enum field that accepts either"YES"or"NO". Used insourceOfFundsandsourceOfWealtharrays.
Create an Individual CRP
Any CRP(s) will be associated with at least one primary customer. To create an individual CRP, certain particulars must be filled in and a designated role must be given to the CRP. The CRP type in this case shall beINDIVIDUAL.
Sample Request Body - Individual CRP
{
"type": "INDIVIDUAL",
"roles": [
{
"cid": "draft-1",
"role": "DIRECTOR",
"appointedDate": "2022-01-01",
"resignedDate": null
}
],
"active": "",
"particular": {
"salutation": "",
"name": "Individual CRP",
"alias": [],
"formerName": [],
"gender": "MALE",
"nationality": [
"MALAYSIA"
],
"countryOfResidence": "MALAYSIA",
"identityDocumentType": "",
"identityNumber": "",
"identityIssuedDate": null,
"identityExpiryDate": null,
"countryOfBirth": "",
"dateOfBirth": null,
"address": [],
"phone": [],
"email": []
},
"profileReferenceId": "18001181212C",
"other": {
"status": "CURRENT",
"sourceOfFunds": [
{
"id": "",
"category": "",
"amountDeclared": null,
"evidenceCorroborated": "YES"
}
],
"sourceOfWealth": [
{
"id": "",
"category": "",
"amountDeclared": null,
"evidenceCorroborated": "YES",
}
],
"bankAccountNumber": [],
"undischargedBankrupt": "",
"ownershipPercentage": ""
}
}
Sample Response Body - Success (200)
{
"id": 927,
"createdAt": "2022-07-26T04:33:35.623+00:00",
"updatedAt": "2022-07-26T04:33:35.694+00:00",
"createdBy": null,
"updatedBy": null,
"active": null,
"parentId": 926,
"profileId": 917,
"type": "INDIVIDUAL",
"referenceId": null,
"profileReferenceId": "18001181212C",
"particular": {
"salutation": "",
"name": "Individual CRP",
"alias": [],
"formerName": [],
"gender": "MALE",
"countryOfResidence": "MALAYSIA",
"nationality": [
"MALAYSIA"
],
"countryOfBirth": "",
"dateOfBirth": null,
"address": [],
"phone": [],
"email": [],
"identityDocumentType": "",
"identityNumber": "",
"identityIssuedDate": null,
"identityExpiryDate": null
},
"other": {
"status": "CURRENT",
"sourceOfFunds": [
{
"id": "",
"category": "",
"amountDeclared": null,
"evidenceCorroborated": "YES"
}
],
"sourceOfWealth": [
{
"id": "",
"category": "",
"amountDeclared": null,
"evidenceCorroborated": "YES",
}
],
"bankAccountNumber": [],
"undischargedBankrupt": null,
"documentList": null,
"ownershipPercentage": 0.0
},
"vendorName": null,
"vendorEntityGuid": null,
"lastRiskAssessment": null,
"roles": [
{
"id": 51,
"createdAt": "2022-07-26T04:33:35.645+00:00",
"updatedAt": "2022-07-26T04:33:35.645+00:00",
"createdBy": null,
"updatedBy": null,
"role": "DIRECTOR",
"appointedDate": "2022-01-01",
"resignedDate": null
}
],
"listRoleAsText": [
"DIRECTOR"
]
}
Authorizations
OAuth2_Client_CredentialsOAuth2_Password
The access token received from the authorization server in the OAuth 2.0 flow.
FlowClient Credentials
- Token URL
- https://crm.cynopsis.co/oauth/token
Headers
X-Domain-ID
Path Parameters
customerId
Body
application/json
crpRequestDto
Response
OK
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Available options:
HIGH, LOW, MEDIUM, MEDIUM_HIGH, MEDIUM_LOW, UNKNOWN Show child attributes
Show child attributes
Available options:
ACCEPTED, CLEARED, DRAFT, PENDING, REJECTED, REQUEST_CHANGES Available options:
CORPORATE, INDIVIDUAL Show child attributes
Show child attributes
Show child attributes
Show child attributes
