Synctera Persons API

A natural person (individual human) that is relevant to the Synctera platform in some way: e.g. a personal customer or a director/officer/owner of a business.

OpenAPI Specification

synctera-persons-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  description: '<h2>Let''s build something great.</h2><p>Welcome to the official reference documentation for Synctera APIs. Our APIs are the best way to automate your company''s banking needs and are designed to be easy to understand and implement.</p><p>We''re continuously growing this library and what you see here is just the start, but if you need something specific or have a question, <a class=''text-blue-600'' href=''https://synctera.com/contact'' target=''_blank'' rel=''noreferrer''>contact us</a>.</p>

    '
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  title: Synctera Accounts Persons API
  version: 0.20.0
servers:
- description: Production
  url: https://api.synctera.com/v0
- description: Sandbox (no real world financial impact)
  url: https://api-sandbox.synctera.com/v0
security:
- bearerAuth: []
tags:
- description: 'A natural person (individual human) that is relevant to the Synctera platform in some way: e.g. a personal customer or a director/officer/owner of a business.

    '
  name: Persons
paths:
  /persons:
    summary: Persons
    get:
      description: Retrieves paginated list of persons associated with the authorized requester.
      operationId: listPersons
      parameters:
      - $ref: '#/components/parameters/id_query3'
      - $ref: '#/components/parameters/first_name'
      - $ref: '#/components/parameters/last_name'
      - $ref: '#/components/parameters/phone_number'
      - $ref: '#/components/parameters/email'
      - $ref: '#/components/parameters/ban_status'
      - $ref: '#/components/parameters/status3'
      - $ref: '#/components/parameters/is_customer'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/page_token'
      - $ref: '#/components/parameters/person_sort_by_query'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/person_list'
          description: List of persons.
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: List persons
      tags:
      - Persons
      x-external: true
      x-status: alpha
    post:
      description: 'Create a person who may act as a personal customer or a director/officer/owner of a business. You can then verify the identity of this customer and associate them with other people and accounts.

        '
      operationId: createPerson
      parameters:
      - $ref: '#/components/parameters/idempotency_key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/person'
        required: true
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/person'
          description: Created person representation.
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '409':
          $ref: '#/components/responses/already_exists'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Create a person
      tags:
      - Persons
      x-external: true
      x-status: alpha
  /persons/{person_id}:
    summary: Persons
    get:
      description: Get person by ID.
      operationId: getPerson
      parameters:
      - $ref: '#/components/parameters/person_id_path'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/person'
          description: Person representation.
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Get person
      tags:
      - Persons
      x-external: true
      x-status: alpha
    patch:
      description: Update person by ID.
      operationId: updatePerson
      parameters:
      - $ref: '#/components/parameters/idempotency_key'
      - $ref: '#/components/parameters/person_id_path'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patch_person'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/person'
          description: Updated person representation.
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Update person
      tags:
      - Persons
      x-external: true
      x-status: alpha
  /persons/{person_id}/prefill:
    post:
      description: 'Prefill takes a subset of a person''s information and automatically fills personally identifiable information (PII) required for know your customer (KYC) verification.

        '
      operationId: prefillPerson
      parameters:
      - $ref: '#/components/parameters/person_id_path'
      - $ref: '#/components/parameters/idempotency_key'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/prefill_request'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/prefill_request'
          description: Prefill response.
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '500':
          $ref: '#/components/responses/internal_server_error'
      summary: Prefill person
      tags:
      - Persons
      x-external: true
      x-status: alpha
components:
  schemas:
    verification_status:
      description: 'The result of a KYC/KYB verification. One of the following:

        * `UNVERIFIED` – verification has not been completed for this customer.

        * `PENDING` – verification is in progress for this customer.

        * `PROVISIONAL` – partially verified or verified with restrictions.

        * `ACCEPTED` – the customer has been verified.

        * `REVIEW` – verification has run and issues have been identified and require review.

        * `REJECTED` – the customer was rejected and should not be allowed to take certain actions e.g., open an account.

        '
      enum:
      - UNVERIFIED
      - PENDING
      - PROVISIONAL
      - ACCEPTED
      - REVIEW
      - REJECTED
      example: ACCEPTED
      readOnly: true
      type: string
    person:
      allOf:
      - required:
        - status
        - is_customer
      - $ref: '#/components/schemas/base_person1'
      description: Person object used in requests.
      type: object
    patch_person:
      allOf:
      - $ref: '#/components/schemas/base_person1'
      description: Person object for patch purpose.
      type: object
    base_person1:
      properties:
        ban_status:
          $ref: '#/components/schemas/ban_status'
          readOnly: true
        creation_time:
          description: The date and time the resource was created.
          example: '2021-06-14T11:23:41Z'
          format: date-time
          readOnly: true
          type: string
        dob:
          description: Person's date of birth in RFC 3339 full-date format (YYYY-MM-DD).
          example: '2000-01-01'
          format: date
          type: string
        email:
          description: Person's email.
          example: Ethelyn_Bauch@hotmail.com
          type: string
        first_name:
          description: Person's first name.
          example: Jedediah
          type: string
        id:
          description: Person's unique identifier.
          example: 169d1e96-24be-4d56-a3b6-4667da1cd221
          format: uuid
          readOnly: true
          type: string
        is_customer:
          $ref: '#/components/schemas/is_customer'
        last_name:
          description: Person's last name.
          example: Purdy
          type: string
        last_updated_time:
          description: The date and time the resource was last updated.
          example: '2022-01-18T17:54:12Z'
          format: date-time
          readOnly: true
          type: string
        legal_address:
          $ref: '#/components/schemas/address'
          description: Person's legal address.
        metadata:
          $ref: '#/components/schemas/metadata'
        middle_name:
          description: Person's middle name.
          example: a
          type: string
        phone_number:
          description: Person's mobile phone number with country code in E.164 format. Must have a valid country code. Area code and local phone number are not validated
          example: '+14374570680'
          pattern: ^\+[1-9]\d{1,14}$
          type: string
        shipping_address:
          $ref: '#/components/schemas/address'
          description: Person's shipping address.
        ssn:
          description: Person's full tax ID eg SSN formatted with hyphens. This optional parameter is required when running KYC. The response contains the last 4 digits only (e.g. 6789).
          example: 083-98-3418
          type: string
        ssn_source:
          $ref: '#/components/schemas/ssn_source'
        status:
          $ref: '#/components/schemas/status1'
        verification_last_run:
          description: Date and time KYC verification was last run on the person.
          example: '2022-01-18T17:54:12Z'
          format: date-time
          readOnly: true
          type: string
        verification_status:
          $ref: '#/components/schemas/verification_status'
      type: object
    status1:
      description: 'Status of the person. One of the following:

        * `ACTIVE` – is an integrator defined status.  Integrators should set a person to active if they believe the person to be qualified for conducting business.  Synctera will combine this status with other statuses such a verification to determine if the person is eligible for specific actions such as initiating transactions or issuing a card.

        * `DECEASED` – person is deceased.

        * `DENIED` – customer was turned down.

        * `DORMANT` – person is no longer active.

        * `ESCHEAT` – person''s assets are abandoned and are property of the state.

        * `FROZEN` – person''s actions are blocked for security, legal, or other reasons.

        * `INACTIVE` – an inactive status indicating that the person is no longer active.

        * `PROSPECT` – a potential customer, used for information-gathering and disclosures.

        * `SANCTION` – person is on a sanctions list and should be carefully monitored.

        '
      enum:
      - ACTIVE
      - DECEASED
      - DENIED
      - DORMANT
      - ESCHEAT
      - FROZEN
      - INACTIVE
      - PROSPECT
      - SANCTION
      example: ACTIVE
      type: string
    is_customer:
      description: True for personal and business customers with a direct relationship with the fintech or bank.
      example: true
      type: boolean
    metadata:
      description: 'Optional field to store additional information about the resource. Intended to be used by the integrator to store non-sensitive data.

        '
      type: object
    ban_status:
      description: '(alpha) Ban status of the person. One of the following:

        * `ALLOWED` – person is not banned

        * `BANNED` – person is banned

        '
      enum:
      - ALLOWED
      - BANNED
      example: ALLOWED
      type: string
    ssn_source:
      description: 'Describes the collection method for the customer''s SSN:

        * `MANUAL` – the full 9 digits of the customer''s SSN was collected.

        * `PREFILL` – the customer''s SSN was collected using SSN Prefill.

        '
      enum:
      - MANUAL
      - PREFILL
      readOnly: true
      type: string
    address:
      properties:
        address_line_1:
          description: Street address line 1
          example: 4992 Curtis Ports
          type: string
        address_line_2:
          description: String address line 2
          example: Apt. 877
          type: string
        city:
          description: City
          example: East Winstonview
          type: string
        country_code:
          description: ISO-3166-1 Alpha-2 country code
          example: US
          pattern: ^[A-Z]{2}$
          type: string
        postal_code:
          description: Postal code
          example: '28620'
          type: string
        state:
          description: State, region, province, or prefecture
          example: NJ
          type: string
      required:
      - address_line_1
      - country_code
      type: object
    error:
      properties:
        detail:
          description: a human-readable string explaining this particular error
          example: 'missing required fields: first_name, dob'
          type: string
        status:
          description: the HTTP status code for this response
          example: 400
          type: integer
        title:
          description: a human-readable string for this general category of error
          example: Bad Request Body
          type: string
        type:
          description: a URI that identifies this general category of error
          example: https://dev.synctera.com/errors/bad-request-body
          type: string
      title: Standard error response (RFC 7807 problem report)
      type: object
    paginated_response:
      properties:
        next_page_token:
          description: If returned, use the next_page_token to query for the next page of results. Not returned if there are no more rows.
          example: d61grelm5f
          type: string
      title: Paginated List response
      type: object
    prefill_request:
      properties:
        ssn_filled:
          description: If true, the person's SSN was successfully populated.
          example: true
          readOnly: true
          type: boolean
        ssn_last4:
          description: Last four digits of person's Social Security number (SSN).
          example: 4271
          type: string
    person_list:
      allOf:
      - properties:
          persons:
            description: Array of persons.
            items:
              $ref: '#/components/schemas/person'
            type: array
        required:
        - persons
        type: object
      - $ref: '#/components/schemas/paginated_response'
  responses:
    already_exists:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Resource already exists error
    not_found:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Resource not found
    bad_request:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: BadRequest
    forbidden:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Forbidden error
    internal_server_error:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Internal server error
    unauthorized:
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/error'
      description: Unauthorized
  parameters:
    is_customer:
      description: If true, show only customers. If false, show non-customer parties.
      in: query
      name: is_customer
      required: false
      schema:
        type: boolean
      x-external: true
    ban_status:
      in: query
      name: ban_status
      required: false
      schema:
        $ref: '#/components/schemas/ban_status'
      x-external: true
    last_name:
      in: query
      name: last_name
      required: false
      schema:
        description: Only return resources where the last_name field matches the specified string. Any * characters in the string are wildcards, and match any characters.
        example: Smith
        type: string
      x-external: true
    page_token:
      in: query
      name: page_token
      required: false
      schema:
        description: Optional pagination token to be provided to retrieve subsequent pages, returned from previous get
        example: h50ffqz9q5
        type: string
      x-external: true
    id_query3:
      description: 'Unique identifier for the resource. Multiple IDs can be provided as a comma-separated list.

        '
      explode: false
      in: query
      name: id
      required: false
      schema:
        example: 64438afd-fa20-4010-a573-2bbdca77cdb6,84ef251c-ab8f-47a5-bbfd-a16648f95157
        items:
          format: uuid
          type: string
        type: array
      style: form
      x-external: true
    first_name:
      in: query
      name: first_name
      required: false
      schema:
        description: Only return resources where the first_name field matches the specified string. Any * characters in the string are wildcards, and match any characters.
        example: Alice
        type: string
      x-external: true
    limit:
      in: query
      name: limit
      required: false
      schema:
        default: 100
        description: 'Maximum number of objects to return per page. If the limit is greater than 100, then it will be set to 100.

          '
        example: 100
        minimum: 1
        type: integer
      x-external: true
    person_id_path:
      description: Person's unique identifier.
      in: path
      name: person_id
      required: true
      schema:
        example: 491b33fd-182c-4f0b-90d4-f2f929bbb6d9
        format: uuid
        type: string
    phone_number:
      in: query
      name: phone_number
      required: false
      schema:
        description: Only return resources where the phone_number field matches the specified string. Phone numbers use the E.164 format e.g. +19178675309. Any * characters in the string are wildcards, and match any characters.
        example: '+12065550100'
        type: string
      x-external: true
    person_sort_by_query:
      description: 'Specifies the sort order for the returned persons.

        '
      explode: false
      in: query
      name: sort_by
      required: false
      schema:
        items:
          enum:
          - first_name:asc
          - first_name:desc
          - last_name:asc
          - last_name:desc
          - creation_time:asc
          - creation_time:desc
          - last_updated_time:asc
          - last_updated_time:desc
          type: string
        type: array
      style: form
      x-external: true
    idempotency_key:
      description: An idempotency key is an arbitrary unique value generated by client to detect subsequent retries of the same request. It is recommended that a UUID or a similar random identifier be used as an idempotency key
      in: header
      name: Idempotency-Key
      required: false
      schema:
        example: df122e6f-2ba8-48a5-9508-4350bba5f27e
        type: string
      x-external: true
    email:
      in: query
      name: email
      required: false
      schema:
        description: Only return resources where the email field matches the specified string. Any * characters in the string are wildcards, and match any characters.
        example: john.doe@example.com
        type: string
      x-external: true
    status3:
      in: query
      name: status
      required: false
      schema:
        $ref: '#/components/schemas/status1'
      x-external: true
  securitySchemes:
    bearerAuth:
      bearerFormat: api_key
      scheme: bearer
      type: http
x-readme:
  explorer-enabled: true
  proxy-enabled: true
  samples-enabled: true