openapi: 3.1.0
info:
  title: Organizations Administration
  description: This API allows administrative applications to manage banking organizations. Organizations are companies or other entities such as non-profits, clubs, trusts, educational or government institutions, which have commercial accounts at a financial institution and use commercial (business) banking.
  version: 0.9.1
  contact:
    name: Apiture
    url: https://developer.apiture.com/help/support/
    email: api@apiture.com
  termsOfService: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
  license:
    name: Apiture API License
    url: https://developer.apiture.com/docs/Apiture-API-License-Agreement.pdf
x-apiture-namespace: bankingAdminOrganizations
x-apiture-package-name: banking-admin-organizations
servers:
  - url: /bankingAdmin
tags:
  - name: Banking Organizations Administration
    description: Administration of Banking Organizations
paths:
  /bankingOrganizations:
    post:
      summary: Create a new banking organization
      description: Create a new banking organization within the banking organizations collection.
      operationId: createBankingOrganization
      x-apiture-api: bankingAdminOrganizations
      x-apiture-group: bankingOrganizations
      tags:
        - Banking Organizations Administration
      requestBody:
        required: true
        description: The data necessary to create a new banking organization.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/newBankingOrganization'
      security:
        - clientCredentials:
            - bankingAdmin/write
      responses:
        '201':
          description: Created.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingOrganization'
          headers:
            Location:
              description: The URI of the new banking organization.
              schema:
                type: string
                format: uri-reference
                maxLength: 2048
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '409':
          description: |
            Conflict. Cannot create a new organization with this data.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/lookupIdIsNotUnique/v1.0.0`](https://static.api.apiture.com/errors/lookupIdIsNotUnique/v1.0.0)<br>
              A banking organization with the requested `lookupId` already exists.
              Remediation: Pass a unique `lookupId`.

            * [`https://static.api.apiture.com/errors/taxIdIsNotUnique/v1.0.0`](https://static.api.apiture.com/errors/taxIdIsNotUnique/v1.0.0)<br>
              A banking organization with the requested `taxId` already exists.
              Remediation: Pass the `taxId` of a new organization.

            * [`https://static.api.apiture.com/errors/coreOrganizationIdIsNotUnique/v1.0.0`](https://static.api.apiture.com/errors/coreOrganizationIdIsNotUnique/v1.0.0)<br>
              A banking organization with the requested `coreOrganizationId` already exists.
              Remediation: Pass the `coreOrganizationId` of a new organization.
          x-apiture-errors:
            - lookupIdIsNotUnique
            - taxIdIsNotUnique
            - coreOrganizationIdIsNotUnique
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '422':
          description: Unprocessable Entity. The request body and/or query parameters were well formed but otherwise invalid.
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
  /bankingOrganizations/{bankingOrganizationId}:
    parameters:
      - $ref: '#/components/parameters/bankingOrganizationIdPathParam'
    get:
      summary: Fetch a representation of this banking organization
      description: Return the JSON representation of this banking organization resource.
      operationId: getBankingOrganization
      x-apiture-api: bankingAdminOrganizations
      x-apiture-group: bankingOrganizations
      parameters:
        - name: unmasked
          description: When requesting customer/organization details, the sensitive personally identifiable information (PII) about each organization is masked for security reasons. Include this query parameter with a value of `true` to request that the response body includes the full PII. Such requests are auditable.
          in: query
          required: false
          schema:
            type: boolean
            default: false
      tags:
        - Banking Organizations Administration
      security:
        - clientCredentials:
            - bankingAdmin/read
      responses:
        '200':
          description: OK.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/bankingOrganization'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/bankingOrganization'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404BankingOrganization'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
  /bankingOrganizationsSearches:
    post:
      summary: Find banking organizations by `taxId` or `coreOrganizationId`.
      description: Find banking organizations by `taxId` or `coreOrganizationId`. Since the `taxId` may be sensitive personally-identifiable data (for sole proprietorships, the organization `taxId` may be the owner's personal Social Security Number), this operation uses a "GET over POST" pattern - the search criteria are passed in the request body instead of via query parameters. The 200 OK response contains either a matching organization or no match.
      operationId: searchBankingOrganizations
      x-apiture-api: bankingAdminOrganizations
      x-apiture-group: bankingOrganizations
      tags:
        - Banking Organizations Administration
      security:
        - clientCredentials:
            - bankingAdmin/read
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/bankingOrganizationSearchCriteria'
          application/vnd.restful+json:
            schema:
              $ref: '#/components/schemas/bankingOrganizationSearchCriteria'
      responses:
        '200':
          description: OK. The search was processed. The response body contains matching organizations, or an empty array if no matching organizations are found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/matchingBankingOrganizations'
            application/vnd.restful+json:
              schema:
                $ref: '#/components/schemas/matchingBankingOrganizations'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '422':
          description: |
            Unprocessable Entity. The request body and/or query parameters were well-formed but otherwise invalid.

            This problem response may have one of the following `type` values:
            * [`https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0`](https://static.api.apiture.com/errors/unprocessableEntity/v1.0.0)<br>
              The syntax of the request entity is correct but was unable to process the contained instructions.
              Remediation: Provide a semantically correct request.

            * [`https://static.api.apiture.com/errors/missingSearchCriteria/v1.0.0`](https://static.api.apiture.com/errors/missingSearchCriteria/v1.0.0)<br>
              The search request must include at least `taxId` or `coreOrganizationId`.
              Remediation: Repeat the operation, passing one of `taxId` or `coreOrganizationId`.
          x-apiture-errors:
            - $ref: '#/components/x-apiture-errors/unprocessableEntity'
            - missingSearchCriteria
          content:
            application/problem+json:
              schema:
                $ref: '#/components/schemas/problemResponse'
            application/json:
              schema:
                $ref: '#/components/schemas/problemResponse'
        '429':
          $ref: '#/components/responses/429'
        4XX:
          $ref: '#/components/responses/4XX'
        5XX:
          $ref: '#/components/responses/5XX'
components:
  parameters:
    bankingOrganizationIdPathParam:
      name: bankingOrganizationId
      description: The unique identifier of this banking organization. This is an opaque string.
      in: path
      schema:
        $ref: '#/components/schemas/resourceId'
      required: true
  responses:
    '400':
      description: |
        Bad Request. The request body, request headers, and/or query parameters are not well-formed.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/badRequest/v1.0.0`](https://static.api.apiture.com/errors/badRequest/v1.0.0)<br>
          The request body and/or parameters was not well-formed.
          Remediation: Correct any syntax or schema errors in the request body or parameters.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/badRequest'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/badRequest/v1.0.0
              title: Bad Request
              status: 400
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: Input did not parse as JSON
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/400
    '401':
      description: |
        Unauthorized. The operation requires authentication but no authentication or insufficient authentication was given.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/unauthorized/v1.0.0`](https://static.api.apiture.com/errors/unauthorized/v1.0.0)<br>
          The request lacks valid authentication credentials for the target resource or operation.
          Remediation: Authenticate the user and pass the required authorization with the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/unauthorized'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/unauthorized/v1.0.0
              title: Unauthorized
              status: 401
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request lacks valid authentication credentials
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/401
    '403':
      description: |
        Forbidden. The authenticated caller is not authorized to perform the requested operation.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/forbidden/v1.0.0`](https://static.api.apiture.com/errors/forbidden/v1.0.0)<br>
          The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
          Remediation: Check the user's permissions and entitlements before attempting the operation.

        * [`https://static.api.apiture.com/errors/customerDisabled/v1.0.0`](https://static.api.apiture.com/errors/customerDisabled/v1.0.0)<br>
          The customer is disabled.
          Remediation: Have the customer contact the financial institution for support.

        * [`https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0`](https://static.api.apiture.com/errors/antiMalwareRequired/v1.0.0)<br>
          The financial institution requires the customer to have anti-malware software installed.
          Remediation: Direct the user to the software requirements guide to install the correct anti-malware software.

        * [`https://static.api.apiture.com/errors/modificationForbidden/v1.0.0`](https://static.api.apiture.com/errors/modificationForbidden/v1.0.0)<br>
          The customer is properly authenticated but not authorized to create, modify, or delete resources.
          Remediation: Avoid modification operation for customers with read-only authorization.

        * [`https://static.api.apiture.com/errors/challengeRequired/v1.0.0`](https://static.api.apiture.com/errors/challengeRequired/v1.0.0)<br>
          The operation requires the customer to complete an identity challenge.
          Remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
        The `attributes` object in the error may have the properties defined by the [`requiredIdentityChallenge` schema](#schema-requiredIdentityChallenge).
        * [`https://static.api.apiture.com/errors/challengeBlocked/v1.0.0`](https://static.api.apiture.com/errors/challengeBlocked/v1.0.0)<br>
          The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
          Remediation: Have the user end their login session and login again.

        * [`https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0`](https://static.api.apiture.com/errors/noIdentityChallengeFactors/v1.0.0)<br>
          This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
          Remediation: Have the user register one or more challenge security code delivery factors.

        * [`https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0`](https://static.api.apiture.com/errors/invalidIdentityChallengeHeader/v1.0.0)<br>
          The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
          Remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/forbidden'
        - $ref: '#/components/x-apiture-errors/customerDisabled'
        - $ref: '#/components/x-apiture-errors/antiMalwareRequired'
        - $ref: '#/components/x-apiture-errors/modificationForbidden'
        - $ref: '#/components/x-apiture-errors/challengeRequired'
        - $ref: '#/components/x-apiture-errors/challengeBlocked'
        - $ref: '#/components/x-apiture-errors/noIdentityChallengeFactors'
        - $ref: '#/components/x-apiture-errors/invalidIdentityChallengeHeader'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/forbidden/v1.0.0
              title: Forbidden
              status: 403
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The request has valid authentication, but the authenticated agent is forbidden from accessing this resource or operation
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/403
    '429':
      description: |
        Too Many Requests. The client has sent too many requests in a given amount of time.

        This problem response may have one of the following `type` values:
        * [`https://static.api.apiture.com/errors/tooManyRequests/v1.0.0`](https://static.api.apiture.com/errors/tooManyRequests/v1.0.0)<br>
          The client has sent too many requests in a given amount of time, exceeding rate limiting.
          Remediation: Slow down the rate of API calls.
      x-apiture-errors:
        - $ref: '#/components/x-apiture-errors/tooManyRequests'
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/tooManyRequests/v1.0.0
              title: Too Many Requests
              status: 429
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The user has sent too many requests in a given amount of time.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/429
    404BankingOrganization:
      description: Not Found. There is no such banking organization resource at the specified `{bankingOrganizationId}`.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
    4XX:
      description: Client Request Problem. The client request had a problem not listed under another specific 400-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/methodNotAllowed/v1.0.0
              title: Method Not Allowed
              status: 405
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: This HTTP method is not allowed for the given resource URL.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/4XX
    5XX:
      description: Server Problem. The server encountered a problem not listed under another specific 500-level HTTP response code. View the `detail` in the problem response for additional details.
      content:
        application/problem+json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
        application/json:
          schema:
            $ref: '#/components/schemas/problemResponse'
            example:
              id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
              type: https://static.api.apiture.com/errors/gatewayTimeout/v1.0.0
              title: Insufficient Storage
              status: 507
              occurredAt: '2022-04-25T12:42:21.375Z'
              detail: The server is unable to store the representation needed to successfully complete the request.
              instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/responses/5XX
  schemas:
    bankingOrganizationTaxId:
      x-apiture-version: 2.0.0
      description: 'The tax identification number (TIN) or Employer Identification Number (EIN) of the business/organization. Note: If the organization is a sole proprietorship, the `taxId` is the proprietor''s social security number. For security purposes, this value may be masked in responses. Use the `?unmasked=true` query parameter to request that the response include unmasked data.'
      x-apiture-pii: true
      type: string
      format: text
      minLength: 5
      maxLength: 11
      title: ' (v2.0.0)'
    bankingOrganizationSearchCriteria:
      title: Banking Organization Search Criteria (v1.0.0)
      description: Search criteria for looking up banking organizations. The request must contain at least one of `taxId` or `coreOrganizationId`. If both are passed, the response is only those organizations that match both.
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - properties:
            taxId:
              description: Find organizations whose `taxId` matches this value.
              allOf:
                - $ref: '#/components/schemas/bankingOrganizationTaxId'
              x-apiture-pii: true
            coreOrganizationId:
              description: Find organizations whose `coreOrganizationId` matches this value.
              allOf:
                - $ref: '#/components/schemas/readOnlyResourceId'
      examples:
        - taxId: '112223333'
        - coreOrganizationId: 7f9ce079ac658676d112
      x-apiture-version: 1.0.0
    matchingBankingOrganizations:
      x-apiture-version: 2.0.0
      title: Matching Banking Organizations (v2.0.0)
      description: Banking organizations which match the search criteria.
      type: object
      required:
        - items
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - properties:
            items:
              description: A list of organizations which matched the search criteria. An empty array means no organizations matched.
              type: array
              maxItems: 10
              items:
                $ref: '#/components/schemas/bankingOrganizationItem'
      example:
        items:
          - name: Expert Code Cleaners
            id: 0399abed-fd3d
            taxId: '112223333'
            referenceId: '677'
            coreOrganizationId: 7f9ce079ac658676d112
            institutionId: TIBURON
    bankingOrganizationItem:
      x-apiture-version: 2.0.0
      title: Banking Organization Item (v2.0.0)
      description: Banking Organization Item.
      type: object
      required:
        - id
        - name
        - taxId
        - referenceId
        - institutionId
      allOf:
        - $ref: '#/components/schemas/immutableBankingOrganizationIdFields'
        - properties:
            name:
              description: The name of the organization.
              type: string
              format: text
              minLength: 1
              maxLength: 50
            coreOrganizationId:
              description: The ID of the organization, as stored and managed in the banking core.
              allOf:
                - $ref: '#/components/schemas/readOnlyResourceId'
      example:
        id: 0399abed-fd3d
        name: Expert Code Cleaners
        taxId: '112223333'
        referenceId: '677'
        coreOrganizationId: 7f9ce079ac658676d112
        institutionId: TIBURON
    initialBankingOrganizationFields:
      x-apiture-version: 1.3.0
      title: Initial Banking Organization Fields (v1.3.0)
      description: Initial Banking Organization Fields. This fragment represents properties that may be passed when creating an organization but which are immutable after creating an organization.
      type: object
      x-apiture-fragment: true
      properties:
        taxId:
          description: |-
            The tax identification number (TIN) or Employer Identification Number (EIN) of the business/organization. Note: If the organization is a sole proprietorship, the `taxId` is the proprietor's social security number. This value may be masked for security purposes; masked values have one or more leading `*` characters followed by the last four digits of the ID.

            Use the `?unmasked=true` query  to request that the response include unmasked data.

            A TIN or EIN may contain one or two `-` characters in request bodies. TINs/EINs may be passed as `NN-NNNNNNN` (regular EIN format) or `NNN-NN-NNNN` (when using a sole proprietor's SSN). The `-` characters are removed in responses, yielding the unformatted 9 digits or masked value such as `*****9876` or `*9876`.
          x-apiture-pii: true
          type: string
          format: text
          minLength: 5
          maxLength: 11
        lookupId:
          description: A more convenient ID to allow looking up the organization. If not passed, the service will assign a value.
          type: string
          format: text
          minLength: 5
          maxLength: 20
        coreOrganizationId:
          description: The ID of the organization, as stored and managed in the banking core.
          allOf:
            - $ref: '#/components/schemas/readOnlyResourceId'
        contactName:
          description: The name of the organization's primary contact.
          type: string
          format: text
          minLength: 1
          maxLength: 50
    immutableBankingOrganizationIdFields:
      x-apiture-version: 2.0.0
      title: Immutable Banking Organization Identifier Fields (v2.0.0)
      description: Common immutable ID fields of the banking organization resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      properties:
        id:
          description: The unique identifier for this banking organization resource. This is an immutable opaque string.
          allOf:
            - $ref: '#/components/schemas/readOnlyResourceId'
        taxId:
          $ref: '#/components/schemas/bankingOrganizationTaxId'
        referenceId:
          description: A unique ID for quickly referring to a banking organization from within administrative applications.
          allOf:
            - $ref: '#/components/schemas/referenceId'
        lookupId:
          description: A more convenient ID to allow looking up the organization. If not passed, the service will assign a value.
          type: string
          format: text
          minLength: 5
          maxLength: 20
        institutionId:
          description: The financial institution within which this organization conducts banking.
          allOf:
            - $ref: '#/components/schemas/institutionId'
        coreOrganizationId:
          description: The ID of the organization, as stored and managed in the banking core.
          allOf:
            - $ref: '#/components/schemas/readOnlyResourceId'
    immutableBankingOrganizationFields:
      x-apiture-version: 2.0.0
      title: Immutable Banking Organization Fields (v2.0.0)
      description: Common immutable fields of the banking organization resource, used to build other model schemas.
      type: object
      x-apiture-fragment: true
      allOf:
        - $ref: '#/components/schemas/immutableBankingOrganizationIdFields'
        - $ref: '#/components/schemas/initialBankingOrganizationFields'
    mutableBankingOrganizationFields:
      x-apiture-version: 1.0.1
      title: Mutable Banking Organization Fields (v1.0.1)
      description: Common mutable fields of the banking organization resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      properties:
        name:
          description: The name of the organization.
          type: string
          format: text
          minLength: 1
          maxLength: 50
        contactName:
          description: The name of the organization's primary contact.
          type: string
          format: text
          minLength: 1
          maxLength: 50
        addresses:
          description: The organization's addresses.
          allOf:
            - $ref: '#/components/schemas/bankingOrganizationAddresses'
        emailAddresses:
          description: The organization's email addresses.
          allOf:
            - $ref: '#/components/schemas/bankingOrganizationEmailAddresses'
        phoneNumbers:
          description: The organization's phone numbers.
          allOf:
            - $ref: '#/components/schemas/bankingOrganizationPhoneNumbers'
        electronicStatementElectionDefault:
          description: If `true` then the organization has consented to receive statements electronically (via email to the `primary` email address or download) instead of postal mail for any new accounts associated with the organization.
          type: boolean
          default: false
        electronicDocumentElectionDefault:
          description: If `true` then the organization has consented to receive other documents (not statements) electronically (via email to the `primary` email address or download) instead of postal mail for any new accounts associated with the organization.
          type: boolean
          default: false
    bankingOrganizationAddressFields:
      x-apiture-version: 1.0.1
      title: Banking Organization Address Fields (v1.0.1)
      description: Used to construct schemas for postal addresses for a banking organization.
      type: object
      x-apiture-fragment: true
      properties:
        physical:
          description: The physical location of the organization. For organizations with multiple locations, this is the primary location, such as the main office or headquarters.
          allOf:
            - $ref: '#/components/schemas/address'
        mailing:
          description: The mailing address of the organization. This is where the financial institution mails physical statements, tax documents, and or other banking documents. If the `mailing` address is omitted, the financial institution sends mail to the `physical` address. (The `mailing` address is required if there is not mail service at the `physical` address.)
          allOf:
            - $ref: '#/components/schemas/address'
      example:
        physical:
          address1: 1805 Tiburon Dr.
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
        mailing:
          address1: P.O. Box 1805
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
    newBankingOrganizationAddresses:
      x-apiture-version: 1.0.1
      title: New Banking Organization Addresses (v1.0.1)
      description: Postal addresses for a new banking organization.
      type: object
      required:
        - physical
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationAddressFields'
      example:
        physical:
          address1: 1805 Tiburon Dr.
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
        mailing:
          address1: P.O. Box 1805
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
    bankingOrganizationAddresses:
      x-apiture-version: 1.0.1
      title: Banking Organization Addresses (v1.0.1)
      description: Postal addresses for a banking organization.
      type: object
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationAddressFields'
      example:
        physical:
          address1: 1805 Tiburon Dr.
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
        mailing:
          address1: P.O. Box 1805
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28412'
    bankingOrganizationEmailAddressFields:
      title: Banking Organization Email AddressFields (v1.0.0)
      description: Fields used to construct banking organization email address schemas.
      type: object
      x-apiture-fragment: true
      properties:
        primary:
          description: The primary email address of the banking organization. (This may be the email address of the organization's contact.
          type: string
          format: email
          maxLength: 255
      example:
        primary: Max.Pike@example.com
      x-apiture-version: 1.0.0
    bankingOrganizationEmailAddresses:
      x-apiture-version: 1.0.1
      title: Banking Organization Email Addresses (v1.0.1)
      description: The email addresses associated with a banking organization.
      type: object
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationEmailAddressFields'
      example:
        primary: Max.Pike@example.com
    newBankingOrganizationEmailAddresses:
      title: New Banking Organization Email Addresses (v1.0.0)
      description: The email addresses of a new banking organization.
      type: object
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationEmailAddressFields'
      example:
        primary: Max.Pike@example.com
      x-apiture-version: 1.0.0
    bankingOrganizationPhoneNumberFields:
      title: Banking Organization Phone Number Fields (v1.0.0)
      description: Fields used to create banking organization phone number schemas.
      type: object
      x-apiture-fragment: true
      properties:
        primary:
          description: The primary phone number of the organization.
          allOf:
            - $ref: '#/components/schemas/extendedPhoneNumber'
        secondary:
          description: The secondary phone number of the organization, such as the phone number of the organization's contact.
          allOf:
            - $ref: '#/components/schemas/extendedPhoneNumber'
        alternate:
          description: The alternate phone number of the organization. This value is omitted if there is not an alternate phone number.
          allOf:
            - $ref: '#/components/schemas/extendedPhoneNumber'
        fax:
          description: The fax number of the organization. This value is omitted if there is not a fax phone number.
          allOf:
            - $ref: '#/components/schemas/extendedPhoneNumber'
      example:
        primary: 1-800-GET-APIS
        alternate: 910-555-0151
        fax: 910-555-0152
      x-apiture-version: 1.0.0
    bankingOrganizationPhoneNumbers:
      title: Banking Organization Phone Numbers (v1.0.0)
      description: The phone numbers associated with a banking organization.
      type: object
      required:
        - primary
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationPhoneNumberFields'
      example:
        primary: 1-800-GET-APIS
        alternate: 910-555-0151
        fax: 910-555-0152
      x-apiture-version: 1.0.0
    newBankingOrganizationPhoneNumbers:
      title: New Banking Organization Phone Numbers (v1.0.0)
      description: The phone numbers associated with a new banking organization.
      type: object
      required:
        - primary
      allOf:
        - $ref: '#/components/schemas/bankingOrganizationPhoneNumberFields'
      example:
        primary: 1-800-GET-APIS
        alternate: 910-555-0151
        fax: 910-555-0152
      x-apiture-version: 1.0.0
    bankingOrganizationFields:
      x-apiture-version: 2.0.0
      title: Banking Organization Fields (v2.0.0)
      description: Common fields of the banking organization resource used to build other model schemas.
      type: object
      x-apiture-fragment: true
      allOf:
        - $ref: '#/components/schemas/immutableBankingOrganizationFields'
        - $ref: '#/components/schemas/mutableBankingOrganizationFields'
    newBankingOrganization:
      x-apiture-version: 2.0.0
      title: New Banking Organization (v2.0.0)
      description: Request body to create a new banking organization.
      required:
        - name
        - taxId
        - addresses
        - emailAddresses
        - phoneNumbers
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/initialBankingOrganizationFields'
        - properties:
            name:
              description: The name of the organization.
              type: string
              format: text
              minLength: 1
              maxLength: 50
            contactName:
              description: The name of the organization's primary contact.
              type: string
              format: text
              minLength: 1
              maxLength: 50
            addresses:
              description: The organization's addresses.
              allOf:
                - $ref: '#/components/schemas/newBankingOrganizationAddresses'
            emailAddresses:
              description: The organization's email addresses.
              allOf:
                - $ref: '#/components/schemas/newBankingOrganizationEmailAddresses'
            phoneNumbers:
              description: The organization's phone numbers.
              allOf:
                - $ref: '#/components/schemas/newBankingOrganizationPhoneNumbers'
            electronicStatementElectionDefault:
              description: If `true` then the organization has consented to receive statements electronically (via email to the `primary` email address or download) instead of postal mail for any new accounts associated with the organization.
              type: boolean
              default: false
            electronicDocumentElectionDefault:
              description: If `true` then the organization has consented to receive other documents (not statements) electronically (via email to the `primary` email address or download) instead of postal mail for any new accounts associated with the organization.
              type: boolean
              default: false
      example:
        name: Expert Code Cleaners
        taxId: '112223333'
        coreOrganizationId: 43b30335bd5582ec5c26
        contactName: Max Peck
        lookupId: ECC-2024
        addresses:
          physical:
            address1: 1805 Tiburon Dr.
            locality: Wilmington
            regionCode: NC
            countryCode: US
            postalCode: '28412'
          mailing:
            address1: P.O. Box 1805
            locality: Wilmington
            regionCode: NC
            countryCode: US
            postalCode: '28412'
        emailAddresses:
          primary: Expert.Code.Cleaners@example.com
        phoneNumbers:
          primary: '+19105550155'
        electronicStatementElectionDefault: true
        electronicDocumentElectionDefault: true
    bankingOrganization:
      x-apiture-version: 2.0.0
      title: Banking Organization (v2.0.0)
      description: Representation of a banking organization resource.
      type: object
      required:
        - id
        - institutionId
        - referenceId
        - name
        - addresses
        - phoneNumbers
        - emailAddresses
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/bankingOrganizationFields'
      example:
        id: 0399abed-fd3d
        institutionId: TIBURON
        referenceId: '677'
        coreOrganizationId: e1f7436f1ae95b626493
        taxId: '****7000'
        name: Expert Code Cleaners
        addresses:
          physical:
            address1: 1805 Tiburon Dr.
            locality: Wilmington
            regionCode: NC
            countryCode: US
            postalCode: '28412'
          mailing:
            address1: P.O. Box 1805
            locality: Wilmington
            regionCode: NC
            countryCode: US
            postalCode: '28412'
        emailAddresses:
          primary: Expert.Code.Cleaners@example.com
        phoneNumbers:
          primary: '+19105550155'
        electronicStatementElectionDefault: true
        electronicDocumentElectionDefault: true
    problemResponse:
      title: Problem Response (v0.4.1)
      x-apiture-version: 0.4.1
      description: API problem or error response, as per [RFC 9457 application/problem+json](https://tools.ietf.org/html/rfc9457).
      type: object
      allOf:
        - $ref: '#/components/schemas/abstractBody'
        - $ref: '#/components/schemas/apiProblem'
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/noSuchAccount/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists for the given account reference
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/problemResponse
    resourceId:
      x-apiture-version: 1.0.1
      title: Resource Identifier (v1.0.1)
      description: The unique, opaque system identifier for a resource. This case-sensitive ID is also used as path parameters in URLs or in other properties or parameters that reference a resource by ID rather than URL.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/resourceId
    abstractBody:
      title: Abstract Body (v0.2.0)
      x-apiture-version: 0.2.0
      description: An abstract schema used to define other request and response body model schemas.
      x-apiture-fragment: true
      type: object
      properties: {}
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/abstractBody
    readOnlyResourceId:
      x-apiture-version: 1.0.1
      title: Read-only Resource Identifier (v1.0.1)
      description: The unique, opaque system-assigned identifier for a resource. This case-sensitive ID is also used in URLs as path parameters or in other properties or parameters that reference a resource by ID rather than URL. Resource IDs are immutable.
      readOnly: true
      allOf:
        - $ref: '#/components/schemas/resourceId'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyResourceId
    referenceId:
      description: A short, numeric ID value that allows administrative application users to reference and look up customers.
      type: string
      pattern: ^[0-9]{2,12}$
      minLength: 2
      maxLength: 12
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/referenceId
      x-apiture-version: 1.0.0
      title: ' (v1.0.0)'
    institutionId:
      x-apiture-version: 1.1.0
      title: Institution ID (v1.1.0)
      description: The unique immutable identifier of a financial institution.
      type: string
      pattern: ^[A-Z0-9_]{2,8}$
      maxLength: 8
      minLength: 2
      example: TIBURON
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/institutionId
    address:
      x-apiture-version: 1.6.1
      title: Address (v1.6.1)
      description: A postal address that can hold a US address or an international (non-US) postal addresses.
      type: object
      required:
        - address1
        - locality
        - postalCode
        - countryCode
      allOf:
        - $ref: '#/components/schemas/fullAddressFields'
      examples:
        - address1: 1805 Tiburon Dr.
          address2: Building 14, Suite 1500
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28403'
        - address1: 999 Canada Place
          locality: Vancouver
          regionName: British Columbia
          countryCode: CA
          postalCode: V6C 3T4
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/address
    extendedPhoneNumber:
      title: Extended Phone Number (v1.0.0)
      description: A phone number with optional extension. Phone numbers are free-form strings and may include letters (such as `'1-800-APITURE'`), extensions (such as `'919-555-1234 ext 34'`) or country code prefixes such as `'+19105550155'`.
      type: string
      examples:
        - '+19105550155'
        - 910-555-0155
        - 1-800-APITURE
        - 919-555-0155 ext 34
      minLength: 5
      maxLength: 20
      format: extended-phone-number
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/extendedPhoneNumber
      x-apiture-version: 1.0.0
    apiProblem:
      x-apiture-version: 1.2.1
      title: API Problem (v1.2.1)
      description: API problem or error, as per [RFC 7807 application/problem+json](https://tools.ietf.org/html/rfc7807).
      type: object
      properties:
        type:
          type: string
          format: uri-reference
          description: |
            A [URI reference (RFC3986)](https://tools.ietf.org/html/rfc3986) that identifies the problem type. If present, this is the URL of human-readable HTML documentation for the problem type. When this member is not present, its value is assumed to be `"about:blank"`.
          example: https://static.api.apiture.com/errors/forbidden/v1.0.0
          maxLength: 2048
        title:
          type: string
          description: |
            A short, human-readable summary of the problem type. The title is usually the same for all problem with the same `type`.
          maxLength: 120
          format: text
          example: User is not authorized to perform the requested action or access the requested resource.
        status:
          type: integer
          format: int32
          description: |
            The [HTTP status code](https://datatracker.ietf.org/doc/html/rfc7231#section-6) for this occurrence of the problem.
          minimum: 100
          maximum: 599
          example: 403
        detail:
          type: string
          description: |
            A human-readable explanation specific to this occurrence of the problem.
          maxLength: 256
          format: text
          example: User is not authorized to perform this operation.
        instance:
          type: string
          format: uri-reference
          description: |
            A URI reference that identifies the specific occurrence of the problem. This is the URI of an API resource that the problem is related to, with a unique error correlation ID URI fragment
          example: https://prduction.api.apiture.com/banking/accounts/ad80fc3e722q5402a#189c13ff-c54c-45f7-b8e0-c88984ba724d
          maxLength: 2048
        id:
          description: The unique identifier for this problem. This is an immutable opaque string.
          $ref: '#/components/schemas/readOnlyResourceId'
        occurredAt:
          description: The timestamp when the problem occurred, in [RFC 3339](https://tools.ietf.org/html/rfc3339) date-time `YYYY-MM-DDThh:mm:ss.sssZ` format, UTC.
          $ref: '#/components/schemas/readOnlyTimestamp'
        problems:
          description: Optional root-causes if there are multiple problems in the request or API call processing.
          type: array
          maxItems: 128
          items:
            $ref: '#/components/schemas/apiProblem'
        attributes:
          type: object
          description: Additional optional attributes related to the problem. This data conforms to the schema associated with the error type.
      example:
        id: 3fbad566-be86-4b22-9ba6-3ca99fdc0799
        type: https://static.api.apiture.com/errors/accountNotFound/v1.0.0
        title: Account Not Found
        status: 422
        occurredAt: '2022-04-25T12:42:21.375Z'
        detail: No account exists at the given account_url
        instance: https://static.api.apiture.com/banking/transfers/bb709151-575041fcd617
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/apiProblem
    requiredIdentityChallenge:
      x-apiture-version: 1.2.3
      title: Required Challenge (v1.2.3)
      description: A request from the service for the user to verify their identity. This contains a challenge ID, the corresponding operation ID, and a list of challenge factors for identity verification. The user must complete one of these challenge factors to satisfy the challenge. This schema defines the attributes in the 401 [Unauthorized problem response](#schema-apiProblem) when the 401 problem type name is `challengeRequired`. See the "Challenge API" for details.
      type: object
      required:
        - operationId
        - challengeId
        - factors
      properties:
        operationId:
          $ref: '#/components/schemas/challengeOperationId'
        challengeId:
          description: The unique ID of this challenge instance. This is an opaque string. This is passed when starting a challenge factor or when validating the identity challenge responses.
          $ref: '#/components/schemas/readOnlyResourceId'
        factors:
          description: 'A list of challenge factors. The user must complete one of these challenge factors. The `labels` in each factor identify one or more channels the user may use, such as a list of email addresses the system may use to send a one-time passcode to the user. ***Note**: The same channel may be used by multiple factors in the array of factors. For example, the user''s primary mobile phone number may be used for both an `sms` factor and a `voice` factor.'
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeFactor'
      example:
        operationId: createTransfer
        challengeId: 0504076c566a3cf7009c
        factors:
          - type: sms
            labels:
              - '9876'
            id: 85c0ee5753fcd0b0953f
          - type: voice
            labels:
              - '9876'
            id: d089e10a80a8627df37b
          - type: voice
            labels:
              - '6754'
            id: 10506ecf9d1c2ee00403
          - type: email
            labels:
              - an****nk@example.com
              - an****98@example.com
            id: e917d671cb2f030b56f1
          - type: authenticatorToken
            labels:
              - Acme fob
            id: fe6c452d7da0bbb4e407
          - type: securityQuestions
            securityQuestions:
              questions:
                - id: q1
                  prompt: What is your mother's maiden name?
                - id: q4
                  prompt: What is your high school's name?
                - id: q9
                  prompt: What is the name of your first pet?
            id: df33c6f88a37d6b3f0a6
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/requiredIdentityChallenge
    fullAddressFields:
      x-apiture-version: 1.2.1
      title: Full Address Fields (v1.2.1)
      description: A postal address that can hold a US address or an international (non-US) postal addresses.
      type: object
      x-apiture-fragment: true
      allOf:
        - $ref: '#/components/schemas/addressFields'
        - type: object
          properties:
            regionName:
              type: string
              minLength: 2
              maxLength: 20
              format: text
              description: The state, district, or outlying area of the postal address. This is required if `countryCode` is not `US`. `regionCode` and `regionName` are mutually exclusive.
              examples:
                - Alessandria
                - Rio de Janeiro
                - British Columbia
            regionCode:
              type: string
              maxLength: 2
              minLength: 2
              pattern: ^[A-Za-z]{2}$
              description: The state, district, or outlying area of the postal address. This is required if `countryCode` is `US`. `regionCode` and `regionName` are mutually exclusive.
              examples:
                - NC
                - IL
                - VI
            postalCode:
              $ref: '#/components/schemas/postalCode'
      examples:
        - address1: 1805 Tiburon Dr.
          address2: Building 14, Suite 1500
          locality: Wilmington
          regionCode: NC
          countryCode: US
          postalCode: '28403'
        - address1: 999 Canada Place
          locality: Vancouver
          regionName: British Columbia
          countryCode: CA
          postalCode: V6C 3T4
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/fullAddressFields
    readOnlyTimestamp:
      title: Read-Only Timestamp (v1.0.0)
      description: 'A readonly or derived timestamp (an instant in time) formatted in [RFC 3339](https://tools.ietf.org/html/rfc3339) `date-time` UTC format: `YYYY-MM-DDThh:mm:ss.sssZ`.'
      type: string
      minLength: 20
      maxLength: 30
      format: date-time
      readOnly: true
      example: '2021-10-30T19:06:04.250Z'
      x-apiture-since: 0.4.0
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/readOnlyTimestamp
      x-apiture-version: 1.0.0
    challengeOperationId:
      x-apiture-version: 1.0.1
      title: Challenge Operation ID (v1.0.1)
      description: The ID of an operation/action for which the user must verify their identity via an identity challenge. This is passed when starting a challenge factor or when validating the identity challenge responses.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{6,48}$
      minLength: 6
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeOperationId
    challengeFactor:
      x-apiture-version: 1.2.1
      title: Challenge Factor (v1.2.1)
      description: A challenge factor. See [`requiredIdentityChallenge`](#schema-requiredIdentityChallenge) for multiple examples.
      type: object
      required:
        - type
      properties:
        id:
          description: |-
            The ID of an a challenge factor. This ID is unique within the challenge factors associated with a challenge. The client should pass this `id` value as the `factorId` when starting or verifying a challenge factor.

            *Note*: The `id` will become `required` in a future update to this schema.
          $ref: '#/components/schemas/challengeFactorId'
        type:
          $ref: '#/components/schemas/challengeFactorType'
        labels:
          description: A list of text label which identifies the channel(s) through which the user completes the challenge. For an `sms` or `voice` challenge, the only label item is the last four digits of the corresponding phone number. For an `email` challenge, each label is the masked email address.
          type: array
          minItems: 1
          maxItems: 4
          items:
            type: string
            maxLength: 300
            format: text
        securityQuestions:
          $ref: '#/components/schemas/challengeSecurityQuestions'
      example:
        type: sms
        labels:
          - '9876'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactor
    addressFields:
      x-apiture-version: 1.4.0
      title: Address Fields (v1.4.0)
      description: Properties of a simple address, used to compose other addresses.
      x-apiture-fragment: true
      properties:
        address1:
          type: string
          description: The first line of the postal address. In the US, this typically includes the building number and street name.
          example: 1805 Tiburon Dr.
          maxLength: 35
          format: text
        address2:
          type: string
          description: The second line of the street address. This should only be used if it has a value. Typical values include building numbers, suite numbers, and other identifying information beyond the first line of the postal address.
          example: Building 14, Suite 1500
          maxLength: 35
          format: text
        locality:
          type: string
          description: The city/town/municipality of the address.
          examples:
            - Wilmington
            - Atlanta
          maxLength: 30
          format: text
        countryCode:
          $ref: '#/components/schemas/countryCode'
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/addressFields
    postalCode:
      title: Postal code (v1.0.0)
      description: The postal code, which varies in format by country. For postal codes in the US, this should be a five digit US ZIP code or ten character ZIP+4.
      type: string
      minLength: 2
      maxLength: 20
      pattern: '[0-9A-Za-z][- 0-9A-Za-z]{0,18}[0-9A-Za-z]'
      examples:
        - '20521'
        - 20521-1380
        - V6C 3T4
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/postalCode
      x-apiture-version: 1.0.0
    challengeFactorId:
      title: Challenge Factor ID (v1.0.0)
      description: The ID of an a challenge factor. This ID is unique within the factors offered with a challenge.
      type: string
      pattern: ^[-a-zA-Z0-9$_]{3,48}$
      minLength: 3
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorId
      x-apiture-version: 1.0.0
    challengeFactorType:
      title: Challenge Factor Type (v1.0.0)
      description: |+
        The name of challenge factor.

        <strong><code>challengeFactorType</code></strong> strings may have one of the following
        [enumerated values](https://developer.apiture.com/docs/concepts/label-groups#enumerations):

        <table>
        <tr>
          <th>Value</th><th>Description</th>
        </tr>

        <tr>
            <td><strong><code>sms</code></strong></td><td>SMS: <p>One-time passcode sent to the primary mobile phone number</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>email</code></strong></td><td>Email: <p>One-time passcode sent to the primary email address</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>voice</code></strong></td><td>Voice: <p>One-time passcode communicated via automated voice phone call</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>authenticatorToken</code></strong></td><td>authenticator Token: <p>One-time passcode issued by a pre-registered hardware device, such as a token key fob, or an authenticator app</p>
        </td>
            </tr>
        <tr>
            <td><strong><code>securityQuestions</code></strong></td><td>Security Questions: <p>Prompt with the user&#39;s security questions registered with their security profile</p>
        </td>
            </tr>
        </table>

      type: string
      x-apiture-enum: challengeFactorType
      enum:
        - sms
        - email
        - voice
        - securityQuestions
        - authenticatorToken
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeFactorType
      x-apiture-version: 1.0.0
    challengeSecurityQuestions:
      x-apiture-version: 1.0.1
      title: Challenge Security Questions (v1.0.1)
      description: Describes a `securityQuestions` challenge. This is omitted if the challenge `type` is not `securityQuestions`.
      type: object
      required:
        - questions
      properties:
        questions:
          description: The array of security questions.
          type: array
          minItems: 1
          maxItems: 8
          items:
            $ref: '#/components/schemas/challengeSecurityQuestion'
      example:
        questions:
          - id: q1
            prompt: What is your mother's maiden name?
          - id: q4
            prompt: What is your high school's name?
          - id: q9
            prompt: What is the name of your first pet?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestions
    countryCode:
      title: Country Code (v1.0.0)
      description: The [ISO-3611 alpha-2](https://www.iso.org/glossary-for-iso-3166.html) value for a country.
      type: string
      minLength: 2
      maxLength: 2
      pattern: ^[A-Za-z]{2}$
      examples:
        - US
        - CA
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/countryCode
      x-apiture-version: 1.0.0
    challengeSecurityQuestion:
      x-apiture-version: 1.0.1
      title: Challenge Security Question (v1.0.1)
      description: A single security question within the `questions` array of the [`challengeSecurityQuestions`](#schema-challengeSecurityQuestions)
      type: object
      required:
        - id
        - prompt
      properties:
        id:
          description: The unique ID of security question prompt. This should be included in the [`challengeVerification`](#schema-challengeVerification) response as the `promptId`.
          $ref: '#/components/schemas/challengePromptId'
        prompt:
          description: The text prompt of this security question.
          type: string
          format: text
          maxLength: 80
      example:
        id: 74699fa628911e762ea5
        prompt: What is your mother's maiden name?
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengeSecurityQuestion
    challengePromptId:
      title: Challenge Prompt ID (v1.0.0)
      description: The unique ID of a prompt (such as a security question) in a challenge factor.
      type: string
      pattern: ^[-_:.~$a-zA-Z0-9]+$
      minLength: 1
      maxLength: 48
      x-resolved-from: ../../common/openapi.yaml#/components/schemas/challengePromptId
      x-apiture-version: 1.0.0
  securitySchemes:
    clientCredentials:
      type: oauth2
      description: Client Credentials OAuth2 flow that allows a secure service application to access resources. (This access is not used with insecure clients such as web or mobile applications.) See details at [Secure Access](https://dx.apiture.com/docs/api/guides/secure-access/).
      flows:
        clientCredentials:
          tokenUrl: https://dev-oidc.apiture-comm-nonprod.com/oidc/token
          scopes:
            bankingAdmin/read: Read a wide variety of banking and other financial institution and customer data.
            bankingAdmin/write: Write a wide variety of banking and other financial institution and customer data.
            adminData/read: Read access to non-banking data and resources.
            adminData/write: Read, write, and delete access to non-banking data and resources.
            samlPlatform/write: Write access to security-critical Apiture internal key and certificate data.
            samlPlatform/read: Read access to integration resources, e.g. supported codes.
            samlAdmin/write: Write, delete and execute access to service provider metadata and SAML computation operations.
            systemIntegrations/read: Read access to integration definition resources.
            systemIntegrations/write: Write, delete and execute access to integration definition resources.
      x-resolved-from: ../../common/openapi.yaml#/components/securitySchemes/clientCredentials
  x-apiture-errors:
    missingSearchCriteria:
      description: The search request must include at least `taxId` or `coreOrganizationId`.
      remediation: Repeat the operation, passing one of `taxId` or `coreOrganizationId`.
    lookupIdIsNotUnique:
      description: A banking organization with the requested `lookupId` already exists.
      remediation: Pass a unique `lookupId`.
    taxIdIsNotUnique:
      description: A banking organization with the requested `taxId` already exists.
      remediation: Pass the `taxId` of a new organization.
    coreOrganizationIdIsNotUnique:
      description: A banking organization with the requested `coreOrganizationId` already exists.
      remediation: Pass the `coreOrganizationId` of a new organization.
    unprocessableEntity:
      description: The syntax of the request entity is correct but was unable to process the contained instructions.
      remediation: Provide a semantically correct request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unprocessableEntity
    badRequest:
      description: The request body and/or parameters was not well-formed.
      remediation: Correct any syntax or schema errors in the request body or parameters.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/badRequest
    unauthorized:
      description: The request lacks valid authentication credentials for the target resource or operation.
      remediation: Authenticate the user and pass the required authorization with the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/unauthorized
    forbidden:
      description: The user or agent is not allowed to perform this operation; authentication credentials were provided in the request, but the server considers them insufficient to grant access.
      remediation: Check the user's permissions and entitlements before attempting the operation.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/forbidden
    customerDisabled:
      description: The customer is disabled.
      remediation: Have the customer contact the financial institution for support.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/customerDisabled
    antiMalwareRequired:
      description: The financial institution requires the customer to have anti-malware software installed.
      remediation: Direct the user to the software requirements guide to install the correct anti-malware software.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/antiMalwareRequired
    modificationForbidden:
      description: The customer is properly authenticated but not authorized to create, modify, or delete resources.
      remediation: Avoid modification operation for customers with read-only authorization.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/modificationForbidden
    challengeRequired:
      description: The operation requires the customer to complete an identity challenge.
      remediation: Complete the challenge as per the problem response, and add an additional `Challenge` header to the call.
      attributes:
        $ref: '#/components/schemas/requiredIdentityChallenge'
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeRequired
    challengeBlocked:
      description: The user has failed challenges too many times and is blocked from attempting more or performing operations which require additional authentication.
      remediation: Have the user end their login session and login again.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/challengeBlocked
    noIdentityChallengeFactors:
      description: This operation requires an identity challenge, but the user does not have the necessary registered authentication factors.
      remediation: Have the user register one or more challenge security code delivery factors.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/noIdentityChallengeFactors
    invalidIdentityChallengeHeader:
      description: The additional on-time `Challenge` header in this request is expired, already used, or otherwise invalid.
      remediation: Supply a valid, unexpired, unclaimed `Challenge` header in the request.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/invalidIdentityChallengeHeader
    tooManyRequests:
      description: The client has sent too many requests in a given amount of time, exceeding rate limiting.
      remediation: Slow down the rate of API calls.
      x-resolved-from: ../../common/openapi.yaml#/components/x-apiture-errors/tooManyRequests
x-apiture-traits:
  - resource:
      name: banking organization
      excludeMethods:
        - list
        - put
        - patch
        - delete
      applied: true
x-resolved-from: ../../adminOrganizations/status-codes-openapi.yaml
x-resolved-at: '2024-12-09T22:18:18.714Z'
x-apiture-annotated-at: '2024-12-09T22:18:18.952Z'
