> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cynopsis.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Create an Individual Primary Customer

## Description

This endpoint creates a new **Individual Primary Customer**.

You can submit either:

* A minimal request with only the mandatory fields, or
* A full request with all optional fields.

**Important:**

* To create a new individual primary customer, it is mandatory for the end user to provide their `profileReferenceId` and personal particulars (`name`, `gender`, `countryOfResidence`, and `nationality`) inside the request body.

* The `type` field must be set to `INDIVIDUAL`.

**Field Specifications:**

* `evidenceCorroborated`: Enum field that accepts either `"YES"` or `"NO"`. Used in `sourceOfFunds` and `sourceOfWealth` arrays.

## Sample Request Body 1 — Mandatory Fields Only

```json theme={null}
{
  "active": true,
  "profileReferenceId": "180062353535",
  "other": {
    "industry": "EDUCATION",
    "occupation": "TEACHING PROFESSIONAL",
    "onBoardingMode": "NON FACE-TO-FACE",
    "paymentMode": [
      "CREDIT CARD"
    ],
    "productServiceComplexity": "SIMPLE"
  },
  "particular": {
    "name": "Individual Primary Customer",
    "gender": "MALE",
    "countryOfResidence": "SINGAPORE",
    "nationality": [
      "SINGAPORE"
    ]
  },
  "type": "INDIVIDUAL",
  "domainId": [
    {{domain_id}}
  ],
  "assigneeId": {{assignee_id}}
}
```

## Sample Request Body 2 — All Fields

```json theme={null}
{
  "active": true,
  "profileReferenceId": "180062353535",
  "other": {
    "industry": "EDUCATION",
    "occupation": "TEACHING PROFESSIONAL",
    "onBoardingMode": "NON FACE-TO-FACE",
    "paymentMode": [
      "CREDIT CARD"
    ],
    "productServiceComplexity": "SIMPLE",
    "sourceOfFunds": [
      {
        "id": "9aefb2d3-6ab9-48c5-b111-fb6992794f8b",
        "category": "LOTTERY/WINDFALL",
        "amountDeclared": 10000000,
        "evidenceCorroborated": "YES"
      }
    ],
    "sourceOfWealth": [
      {
        "id": "7bcde1f2-5ab8-47c4-a222-eb5881683c9a",
        "category": "INHERITANCE",
        "amountDeclared": 5000000,
        "evidenceCorroborated": "YES"
      }
    ],
    "bankAccount": [],
    "additionalInformation": "",
    "natureOfBusinessRelationship": ""
  },
  "particular": {
    "salutation": "",
    "name": "Individual Primary Customer",
    "alias": [],
    "formerName": [],
    "gender": "MALE",
    "countryOfResidence": "SINGAPORE",
    "nationality": [
      "SINGAPORE"
    ],
    "countryOfBirth": "",
    "dateOfBirth": null,
    "address": [],
    "phone": [],
    "email": [],
    "identityDocumentType": "",
    "identityNumber": "",
    "identityIssuedDate": null,
    "identityExpiryDate": null
  },
  "type": "INDIVIDUAL",
  "domainId": [
    {{domain_id}}
  ],
  "assigneeId": {{assignee_id}}
}
```

## Success Response — 200 OK

```json theme={null}
{
  "id": 925,
  "createdAt": "2022-07-26T04:21:41.616+00:00",
  "updatedAt": "2022-07-26T04:21:41.636+00:00",
  "createdBy": null,
  "updatedBy": null,
  "active": true,
  "parentId": null,
  "profileId": 915,
  "type": "INDIVIDUAL",
  "referenceId": null,
  "profileReferenceId": "180062353535B",
  "particular": {
    "salutation": "",
    "name": "Individual Primary Customer",
    "alias": [],
    "formerName": [],
    "gender": "MALE",
    "countryOfResidence": "SINGAPORE",
    "nationality": [
      "SINGAPORE"
    ],
    "countryOfBirth": "",
    "dateOfBirth": null,
    "address": [],
    "phone": [],
    "email": [],
    "identityDocumentType": "",
    "identityNumber": "",
    "identityIssuedDate": null,
    "identityExpiryDate": null
  },
  "other": {
    "industry": "EDUCATION",
    "occupation": "TEACHING PROFESSIONAL",
    "onBoardingMode": "NON FACE-TO-FACE",
    "paymentMode": [
      "CREDIT CARD"
    ],
    "productServiceComplexity": "SIMPLE",
    "sourceOfFunds": [
      {
        "id": "9aefb2d3-6ab9-48c5-b111-fb6992794f8b",
        "category": "LOTTERY/WINDFALL",
        "amountDeclared": 10000000,
        "evidenceCorroborated": "YES"
      }
    ],
    "sourceOfWealth": [
      {
        "id": "7bcde1f2-5ab8-47c4-a222-eb5881683c9a",
        "category": "INHERITANCE",
        "amountDeclared": 5000000,
        "evidenceCorroborated": "YES"
      }
    ],
    "bankAccount": [],
    "natureOfBusinessRelationship": "",
    "additionalInformation": "",
    "documentList": null
  },
  "vendorName": "",
  "vendorEntityGuid": "",
  "lastRiskAssessment": null,
  "status": "DRAFT",
  "riskRating": "UNKNOWN",
  "roles": [],
  "listRoleAsText": []
}
```


## OpenAPI

````yaml POST /api/customer
openapi: 3.1.0
info:
  description: Api Documentation
  version: '3.0'
  title: Api Documentation
  termsOfService: urn:tos
  contact: {}
  license:
    name: Apache 2.0
    url: http://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.artemis.cynopsis.co
security: []
tags:
  - name: app-config-controller
    description: App Config Controller
  - name: asia-verify-controller
    description: Asia Verify Controller
  - name: authentication-controller
    description: Authentication Controller
  - name: authentication-manager-controller
    description: Authentication Manager Controller
  - name: basic-error-controller
    description: Basic Error Controller
  - name: comment-controller
    description: Comment Controller
  - name: customer-controller
    description: Customer Controller
  - name: dashboard-controller
    description: Dashboard Controller
  - name: domain-controller
    description: Domain Controller
  - name: expiring-document-controller
    description: Expiring Document Controller
  - name: hand-shake-controller
    description: Hand Shake Controller
  - name: media-controller
    description: Media Controller
  - name: on-going-due-diligent-controller
    description: On Going Due Diligent Controller
  - name: own-restricted-list-controller
    description: Own Restricted List Controller
  - name: periodic-review-controller
    description: Periodic Review Controller
  - name: quick-scan-controller
    description: Quick Scan Controller
  - name: user-controller
    description: User Controller
paths:
  /api/customer:
    post:
      tags:
        - customer-controller
      summary: createNewCustomer
      operationId: createNewCustomerUsingPOST
      parameters:
        - name: X-Domain-ID
          in: header
          description: X-Domain-ID
          required: true
          schema:
            type: integer
            format: int64
      requestBody:
        $ref: '#/components/requestBodies/CustomerDto'
      responses:
        '200':
          description: OK
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/CustomerResponseDto'
        '201':
          description: Created
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Not Found
          content:
            application/json:
              examples:
                default:
                  value:
                    status: 404
                    error: Not Found
                    message: The requested resource was not found.
                    path: /api/customer
      security:
        - OAuth2_Client_Credentials: []
        - OAuth2_Password: []
components:
  requestBodies:
    CustomerDto:
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/CustomerDto'
      description: customerDTO
      required: true
  schemas:
    CustomerResponseDto:
      type: object
      properties:
        active:
          type: boolean
        assignees:
          type: array
          items:
            $ref: '#/components/schemas/UserInfo'
        createdAt:
          $ref: '#/components/schemas/Timestamp'
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        forms:
          $ref: '#/components/schemas/JsonNode'
        id:
          type: integer
          format: int64
        lastRiskAssessment:
          type: string
          format: date-time
        listRoleAsText:
          type: array
          items:
            type: string
        notes:
          $ref: '#/components/schemas/JsonNode'
        other:
          $ref: '#/components/schemas/JsonNode'
        parentId:
          type: integer
          format: int64
        particular:
          $ref: '#/components/schemas/JsonNode'
        profileId:
          type: integer
          format: int64
        profileReferenceId:
          type: string
        referenceId:
          type: string
        riskRating:
          type: string
          enum:
            - HIGH
            - LOW
            - MEDIUM
            - MEDIUM_HIGH
            - MEDIUM_LOW
            - UNKNOWN
        roles:
          type: array
          items:
            $ref: '#/components/schemas/CRPRoleResponseDto'
        status:
          type: string
          enum:
            - ACCEPTED
            - CLEARED
            - DRAFT
            - PENDING
            - REJECTED
            - REQUEST_CHANGES
        type:
          type: string
          enum:
            - CORPORATE
            - INDIVIDUAL
        updatedAt:
          $ref: '#/components/schemas/Timestamp'
        updatedBy:
          $ref: '#/components/schemas/UserInfo'
        vendorEntityGuid:
          type: string
        vendorName:
          type: string
      title: CustomerResponseDto
    CustomerDto:
      type: object
      required:
        - profileReferenceId
        - type
      properties:
        active:
          type: boolean
        assigneeId:
          type: integer
          format: int64
        batchUploadId:
          type: integer
          format: int64
        forms:
          $ref: '#/components/schemas/JsonNode'
        id:
          type: integer
          format: int64
        profileId:
          type: integer
          format: int64
        profileReferenceId:
          type: string
        referenceId:
          type: string
        type:
          type: string
          enum:
            - CORPORATE
            - INDIVIDUAL
        vendorEntityGuid:
          type: string
        vendorName:
          type: string
      title: CustomerDto
    UserInfo:
      type: object
      properties:
        email:
          type: string
        firstName:
          type: string
        fullName:
          type: string
        id:
          type: integer
          format: int64
        lastName:
          type: string
      title: UserInfo
    Timestamp:
      type: object
      properties:
        date:
          type: integer
          format: int32
        day:
          type: integer
          format: int32
        hours:
          type: integer
          format: int32
        minutes:
          type: integer
          format: int32
        month:
          type: integer
          format: int32
        nanos:
          type: integer
          format: int32
        seconds:
          type: integer
          format: int32
        time:
          type: integer
          format: int64
        timezoneOffset:
          type: integer
          format: int32
        year:
          type: integer
          format: int32
      title: Timestamp
    JsonNode:
      type: object
      title: JsonNode
    CRPRoleResponseDto:
      type: object
      properties:
        appointedDate:
          type: string
          format: date
        createdAt:
          $ref: '#/components/schemas/Timestamp'
        createdBy:
          $ref: '#/components/schemas/UserInfo'
        id:
          type: integer
          format: int64
        resignedDate:
          type: string
          format: date
        role:
          type: string
        updatedAt:
          $ref: '#/components/schemas/Timestamp'
        updatedBy:
          $ref: '#/components/schemas/UserInfo'
      title: CRPRoleResponseDto
  securitySchemes:
    OAuth2_Client_Credentials:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://crm.cynopsis.co/oauth/token
          scopes: {}
    OAuth2_Password:
      type: oauth2
      flows:
        password:
          tokenUrl: https://crm.cynopsis.co/oauth/token
          scopes: {}

````