> ## 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.

# Enroll Customer

> Subject(s) - Enrolling of customer profiles

<Info>
  **Customer** (used in this doc) and **Subject** (used in the API/backend) mean the same thing: one individual.
</Info>

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)

```bash theme={null}
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)

```bash theme={null}
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":"-"
}
```


## OpenAPI

````yaml post /api/subjects
openapi: 3.0.3
info:
  title: Athena API
  version: v3
  x-logo:
    url: https://cynopsis.co/wp-content/uploads/2021/03/logo-2.png
    altText: Cynopsis Solutions
  description: >-
    ATHENA is an advanced real-time transaction monitoring solution designed to
    detect and prevent money laundering, fraud, and terrorism financing. Powered
    by proprietary AML rules, ATHENA analyzes transactions in real time,
    providing clear, intuitive visual insights to streamline compliance
    processes.
        
        ✅ Real-Time Monitoring – Instantly analyzes transaction data to detect anomalies and potential compliance risks.
        ✅ Visualized Insights – Converts complex data into easy-to-understand charts, aiding faster decision-making.
        ✅ Seamless Integration – Easily integrates with existing financial and compliance systems.
        
        Ideal for financial institutions, fintech companies, and regulated businesses, ATHENA enhances risk management and ensures regulatory compliance with ease.
  contact:
    email: tech@cynopsis.co
servers:
  - url: http://localhost/api
    description: Local development server
security: []
paths:
  /api/subjects:
    post:
      tags:
        - Subjects
      summary: Create a subject
      operationId: subject_create
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubjectRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SubjectRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SubjectRequest'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Subject'
          description: ''
      security:
        - CustomAuthentication: []
        - cookieAuth: []
        - BearerAuth: []
components:
  schemas:
    SubjectRequest:
      type: object
      properties:
        client_subject_id:
          type: string
          minLength: 1
          maxLength: 255
        subject_name:
          type: string
          minLength: 1
          maxLength: 255
        unique_identification_number:
          type: string
          maxLength: 255
        account_holder:
          type: boolean
          nullable: true
        address:
          type: string
          maxLength: 255
        customer_segment:
          type: string
          maxLength: 255
        date_and_place_of_birth:
          type: string
          maxLength: 255
        country_of_birth_or_incorporation:
          type: string
          maxLength: 255
        nationality:
          type: string
          maxLength: 60
        account_type:
          type: string
          maxLength: 255
        account_type_ii:
          type: string
          maxLength: 255
        account_opening_date:
          type: string
          maxLength: 255
        account_opening_date_ii:
          type: string
          maxLength: 255
        customer_aml_risk_rating:
          type: string
          maxLength: 255
        customer_account:
          type: string
          maxLength: 255
        customer_account_ii:
          type: string
          maxLength: 255
        customer_opening_date:
          type: string
          maxLength: 255
        source_of_funds:
          type: string
          maxLength: 255
        average_monthly_income:
          type: string
          maxLength: 255
        cif_status:
          type: string
          maxLength: 255
        occupation:
          type: string
          maxLength: 255
        industry:
          type: string
          maxLength: 255
        purpose_of_account:
          type: string
          maxLength: 255
        contact_number:
          type: string
          maxLength: 255
        email_address:
          type: string
          maxLength: 255
        risk_assessment_score:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
        created_by:
          type: integer
          nullable: true
        modified_by:
          type: integer
          nullable: true
      required:
        - client_subject_id
        - subject_name
    Subject:
      type: object
      properties:
        client_subject_id:
          type: string
          maxLength: 255
        subject_name:
          type: string
          maxLength: 255
        unique_identification_number:
          type: string
          maxLength: 255
        account_holder:
          type: boolean
          nullable: true
        address:
          type: string
          maxLength: 255
        customer_segment:
          type: string
          maxLength: 255
        date_and_place_of_birth:
          type: string
          maxLength: 255
        country_of_birth_or_incorporation:
          type: string
          maxLength: 255
        nationality:
          type: string
          maxLength: 60
        account_type:
          type: string
          maxLength: 255
        account_type_ii:
          type: string
          maxLength: 255
        account_opening_date:
          type: string
          maxLength: 255
        account_opening_date_ii:
          type: string
          maxLength: 255
        customer_aml_risk_rating:
          type: string
          maxLength: 255
        customer_account:
          type: string
          maxLength: 255
        customer_account_ii:
          type: string
          maxLength: 255
        customer_opening_date:
          type: string
          maxLength: 255
        source_of_funds:
          type: string
          maxLength: 255
        average_monthly_income:
          type: string
          maxLength: 255
        cif_status:
          type: string
          maxLength: 255
        occupation:
          type: string
          maxLength: 255
        industry:
          type: string
          maxLength: 255
        purpose_of_account:
          type: string
          maxLength: 255
        contact_number:
          type: string
          maxLength: 255
        email_address:
          type: string
          maxLength: 255
        risk_assessment_score:
          type: string
          format: decimal
          pattern: ^-?\d{0,3}(?:\.\d{0,2})?$
        created_by:
          type: integer
          nullable: true
        modified_by:
          type: integer
          nullable: true
      required:
        - client_subject_id
        - subject_name
  securitySchemes:
    CustomAuthentication:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT token obtained from AWS Cognito or custom authentication service
    cookieAuth:
      type: apiKey
      in: cookie
      name: sessionid

````