openapi: 3.0.3
info:
  title: Flinks API
  description: |
    Flinks API provides financial data connectivity, enrichment, and payment solutions.

    ## Authentication
    Endpoints require authentication using `flinks-auth-key` header (Bearer token).

    For more information, visit: https://docs.flinks.com
  version: 3.0.0
  contact:
    name: Flinks Support
    url: https://www.flinks.com/contact/sales
  termsOfService: https://www.flinks.com

tags:
  - name: Authorization
    description: Endpoints for generating authorization tokens and authenticating requests

servers:
  - url: https://ob.flinksapp.com
    description: Flinks Outbound Production

paths:
  /api/v1/providers:
    get:
      tags:
        - Outbound
      summary: Get Supported Data Providers
      description: Use the /api/v1/providers endpoint to retrieve a list of all supported Data Providers in the Outbound ecosystem.
      operationId: listSupportedDataProviders
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    provider_id:
                      type: integer
                      description: Unique identifier for the data provider.
                    name:
                      type: string
                      description: Name of the data provider.
                    country:
                      type: string
                      description: Country code of the data provider (e.g., CA, US).
                    scopes:
                      type: array
                      items:
                        type: string
                      description: List of data scopes supported by the data provider (e.g., ACCOUNT_BASIC, ACCOUNT_DETAILED, TRANSACTIONS, STATEMENTS, CUSTOMER_CONTACT, CUSTOMER_PERSONAL, INVESTMENTS, ACCOUNT_PAYMENTS).
              example:
                - provider_id: 1000
                  name: "Flinks Capital"
                  country: "CA"
                  scopes:
                    - "ACCOUNT_BASIC"
                    - "ACCOUNT_DETAILED"
                    - "ACCOUNT_PAYMENTS"
                    - "INVESTMENTS"
                    - "TRANSACTIONS"
                    - "STATEMENTS"
                    - "CUSTOMER_CONTACT"
                    - "CUSTOMER_PERSONAL"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/providers/{provider_id}:
    get:
      tags:
        - Outbound
      summary: Get Data Provider Details
      description: Use the /api/v1/providers endpoint to retrieve information about a particular Data Provider such as their country, their data scopes, the FDX fields they support, and more.
      operationId: getDataProviderDetails
      parameters:
        - name: provider_id
          in: path
          required: true
          description: The ID of the Data Provider who you want to retrieve information about.
          schema:
            type: string
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: object
                properties:
                  provider_id:
                    type: integer
                    description: Unique identifier for the data provider.
                  name:
                    type: string
                    description: Name of the data provider.
                  country:
                    type: string
                    description: Country code of the data provider (e.g., CA, US).
                  provider_url:
                    type: string
                    description: URL of the data provider's website.
                  scopes:
                    type: array
                    items:
                      type: string
                    description: List of data scopes supported by the data provider.
                  data_inventory:
                    type: object
                    description: Detailed inventory of FDX fields supported by the data provider.
                    properties:
                      account:
                        type: array
                        items:
                          type: string
                      customers:
                        type: array
                        items:
                          type: string
                      detailed_accounts:
                        type: array
                        items:
                          type: string
                      lightweight_accounts:
                        type: array
                        items:
                          type: string
                      payments:
                        type: array
                        items:
                          type: string
                      transactions:
                        type: array
                        items:
                          type: string
              example:
                provider_id: 4013
                name: "1st United CU"
                country: "US"
                provider_url: "https://accounts.1stunitedcu.org/"
                scopes:
                  - "ACCOUNT_BASIC"
                  - "ACCOUNT_DETAILED"
                  - "ACCOUNT_PAYMENTS"
                  - "INVESTMENTS"
                  - "TRANSACTIONS"
                  - "STATEMENTS"
                  - "CUSTOMER_CONTACT"
                  - "CUSTOMER_PERSONAL"
                data_inventory:
                  account: []
                  customers:
                    - "customerId"
                    - "name.first"
                    - "name.last"
                    - "emails"
                    - "email"
                    - "addresses.line1"
                    - "addresses.city"
                    - "addresses.region"
                    - "addresses.postalCode"
                    - "telephones.number"
                    - "name.middle"
                  detailed_accounts:
                    - "accounts.depositAccount.currentBalance"
                    - "accounts.depositAccount.accountId"
                    - "accounts.depositAccount.accountType"
                    - "accounts.depositAccount.accountNumberDisplay"
                    - "accounts.depositAccount.productName"
                    - "accounts.depositAccount.currency.currencyCode"
                    - "accounts.depositAccount.availableBalance"
                  lightweight_accounts: []
                  payments:
                    - "paymentNetworks.bankId"
                    - "paymentNetworks.identifier"
                    - "paymentNetworks.identifierType"
                    - "paymentNetworks.type"
                    - "paymentNetworks.transferIn"
                    - "paymentNetworks.transferOut"
                  transactions:
                    - "page.nextOffset"
                    - "links.next.href"
                    - "transactions.depositTransaction.accountId"
                    - "transactions.depositTransaction.transactionId"
                    - "transactions.depositTransaction.postedTimestamp"
                    - "transactions.depositTransaction.transactionTimestamp"
                    - "transactions.depositTransaction.description"
                    - "transactions.depositTransaction.amount"
                    - "transactions.depositTransaction.transactionType"
                    - "transactions.depositTransaction.status"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "404":
          description: Not Found
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Provider not found"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/revoke:
    delete:
      tags:
        - Outbound
      summary: Revoke Connection
      description: Use the /api/v1/revoke endpoint to revoke access to the Open Banking API for an individual connection.
      operationId: revokeConnection
      responses:
        "204":
          description: The connection was successfully revoked. No response body is returned.
        "4XX":
          description: Returned when the request is missing a required parameter or is otherwise invalid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: The error code.
                  error_description:
                    type: string
                    description: A description of the error.
              example:
                error: "invalid_request"
                error_description: "The request is missing a required parameter."
        "5XX":
          description: Returned when an unhandled error occurred on the server.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: The error code.
                  error_description:
                    type: string
                    description: A description of the error.
              example:
                error: "server_error"
                error_description: "An unhandled error occurred on the server."
    post:
      tags:
        - Outbound
      summary: Revoke Connection
      description: Use the /api/v1/revoke endpoint to revoke access to the Open Banking API for an individual connection.
      operationId: revokeConnectionPost
      responses:
        "204":
          description: The connection was successfully revoked. No response body is returned.
        "4XX":
          description: Returned when the request is missing a required parameter or is otherwise invalid.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: The error code.
                  error_description:
                    type: string
                    description: A description of the error.
              example:
                error: "invalid_request"
                error_description: "The request is missing a required parameter."
        "5XX":
          description: Returned when an unhandled error occurred on the server.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: The error code.
                  error_description:
                    type: string
                    description: A description of the error.
              example:
                error: "server_error"
                error_description: "An unhandled error occurred on the server."

  /api/v1/recipients:
    get:
      tags:
        - Outbound
      summary: Get All Data Recipients
      description: Use the /api/v1/recipients endpoint to get a list of all registered Data Recipients.
      operationId: getAllDataRecipients
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    client_id:
                      type: string
                      description: Unique identifier for the data recipient.
                    name:
                      type: string
                      description: Name of the data recipient.
                    logo_uri:
                      type: string
                      description: URL to the data recipient's logo.
                    description:
                      type: string
                      description: Description of the data recipient.
                    terms_uri:
                      type: string
                      description: URL to the data recipient's terms of service.
                    client_uri:
                      type: string
                      description: URL to the data recipient's website.
                    country:
                      type: string
                      description: Country code of the data recipient (e.g., CA, US).
                    contacts:
                      type: array
                      items:
                        type: object
                        properties:
                          email:
                            type: string
                            description: Email address of the contact.
                      description: Contact information for the data recipient.
              example:
                - client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                  name: "Flinks Fake"
                  logo_uri: "https://flinks.fake.com/logo.png"
                  description: "Description of Flinks Fake"
                  terms_uri: "https://flinks.fake.com/callback/terms.html"
                  client_uri: "https://flinks.fake.com/"
                  country: "CA"
                  contacts:
                    - email: "john.doe@flinks.fake.com"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"
    post:
      tags:
        - Outbound
      summary: Create a Data Recipient
      description: Use the /api/v1/recipients endpoint to add a new Data Recipient to the Open Banking API.
      operationId: createDataRecipient
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: "The name of the new Data Recipient. Enter it exactly as you want customers to see it, using a maximum length of 256 characters."
                  maxLength: 256
                scope:
                  type: array
                  items:
                    type: string
                  default: [ACCOUNT_BASIC]
                  description: |
                    The scope of data that the Data Recipient collects from the customer, and is populated on the consent screen. To work with this Data Recipient, the customer must provide consent to share the scope of data they require. Possible values include the following:

                    ACCOUNT_BASIC = Basic account information (required)
                    ACCOUNT_DETAILED = Detailed account information
                    ACCOUNT_PAYMENTS = Payment information linked to the account
                    INVESTMENTS = Investment information linked to the account
                    TRANSACTIONS = Payment information linked to the account
                    STATEMENTS = PDF statements for the account
                    CUSTOMER_CONTACT = Contact information for the account
                    CUSTOMER_PERSONAL = Information about the customer who owns the account
                    The scopes needs to be delimited by a space and they must include ACCOUNT_BASIC at a minimum
                redirect_uris:
                  type: string
                  description: "URL redirects for the Data Recipient, using an HTTPS scheme."
                logo_uri:
                  type: string
                  description: "A hyperlink to the Data Recipient's logo, using the HTTPS scheme."
                country:
                  type: string
                  description: "Countries that the Data Recipient is registered in. Possible values include: - `CA` - Canada - `US` - United States"
                description:
                  type: string
                  description: "The description of the Data Recipient, using a maximum length of 512 characters."
                  maxLength: 512
                terms_uri:
                  type: string
                  description: "A hyperlink to the terms of service between the customer and the Data Recipient, using an HTTPS scheme. Must be human-readable."
                client_uri:
                  type: string
                  description: "A hyperlink to the Data Recipient's corporate website, using an HTTPS scheme."
                contacts:
                  type: array
                  items:
                    type: object
                  description: Point of contacts for the Data Recipient.
              example: {}
      responses:
        "201":
          description: Result
          content:
            application/json:
              schema:
                type: object
                properties:
                  client_id:
                    type: string
                  client_secret:
                    type: string
                  name:
                    type: string
                  logo_uri:
                    type: string
                  description:
                    type: string
                  terms_uri:
                    type: string
                  client_uri:
                    type: string
                  country:
                    type: string
                  redirect_uris:
                    type: array
                    items:
                      type: string
                  scope:
                    type: string
                  contacts:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: array
                          items:
                            type: string
              example:
                client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                client_secret: "xxxxxxxxxxxxxxxxxxxxxx"
                name: "Flinks Fake"
                logo_uri: "https://flinks.fake.com/logo.png"
                description: "Description of Flinks Fake"
                terms_uri: "https://flinks.fake.com/callback/terms.html"
                client_uri: "https://flinks.fake.com"
                country: "CA"
                redirect_uris:
                  - "https://flinks.fake.com/callback"
                scope: "ACCOUNT_BASIC ACCOUNT_DETAILED ACCOUNT_PAYMENTS INVESTMENTS TRANSACTIONS STATEMENTS CUSTOMER_CONTACT CUSTOMER_PERSONAL"
                contacts:
                  - email: "john.doe@flinks.fake.com"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/recipients/providers/requests:
    get:
      tags:
        - Outbound
      summary: Get the Registration Status for All Data Recipients
      description: Use the /api/v1/recipients/providers/requests endpoint to check the registrations status of all Data Recipients.
      operationId: getSupportedDataProvidersStatus
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    client_id:
                      type: string
                      description: Unique identifier for the data recipient.
                    client_name:
                      type: string
                      description: Name of the data recipient.
                    provider_id:
                      type: integer
                      description: Unique identifier for the data provider.
                    provider_name:
                      type: string
                      description: Name of the data provider.
                    country:
                      type: string
                      description: Country code of the data provider (e.g., CA, US).
                    registration_status:
                      type: string
                      description: Current registration status (PENDING_APPROVAL, PENDING_ACTIVATION, or ACTIVE).
                    requested_on:
                      type: string
                      description: Timestamp of when the registration was requested (ISO 8601 format).
              example:
                - client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                  client_name: "Flinks Fake"
                  provider_id: 2000
                  provider_name: "NBC"
                  country: "CA"
                  registration_status: "PENDING_APPROVAL"
                  requested_on: "2024-02-29T14:24:42.6055680Z"
                - client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                  client_name: "Flinks Fake"
                  provider_id: 1000
                  provider_name: "Flinks Capital"
                  country: "CA"
                  registration_status: "PENDING_APPROVAL"
                  requested_on: "2024-02-29T14:24:42.6009460Z"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/recipients/providers/requests/{recipient_ids}/{provider_ids}:
    post:
      tags:
        - Outbound
      summary: Request Data Provider Registrations
      description: Use the POST /api/v1/recipients/providers/requests/{recipient_ids}/{provider_ids} endpoint to submit a request to Flinks to connect Data Recipients with Data Providers. Flinks will evaluate the request and approve the registrations.
      operationId: requestDataProviderRegistrations
      parameters:
        - name: recipient_ids
          in: path
          required: true
          description: The IDs of Data Recipients who you want to request registration for.
          schema:
            type: array
            items:
              type: string
        - name: provider_ids
          in: path
          required: true
          description: The IDs of Data Providers who you want to include in the registration.
          schema:
            type: array
            items:
              type: string
      responses:
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/recipients/{client_id}/providers/requests:
    get:
      tags:
        - Outbound
      summary: Get the Registration Status for a Data Recipient
      description: Use the /api/v1/recipients/{client_id}/providers/requests endpoint to check the registrations status of a Data Recipient.
      operationId: getRegistrationStatus
      parameters:
        - name: client_id
          in: path
          required: true
          description: The ID of Data Recipient who you want to check the registrations status for.
          schema:
            type: string
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    client_id:
                      type: string
                      description: Unique identifier for the data recipient.
                    client_name:
                      type: string
                      description: Name of the data recipient.
                    provider_id:
                      type: integer
                      description: Unique identifier for the data provider.
                    provider_name:
                      type: string
                      description: Name of the data provider.
                    country:
                      type: string
                      description: Country code of the data provider (e.g., CA, US).
                    registration_status:
                      type: string
                      description: Current registration status (PENDING_APPROVAL, PENDING_ACTIVATION, or ACTIVE).
                    requested_on:
                      type: string
                      description: Timestamp of when the registration was requested (ISO 8601 format).
              example:
                - client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                  client_name: "Flinks Fake"
                  provider_id: 1000
                  provider_name: "Flinks Capital"
                  country: "CA"
                  registration_status: "PENDING_APPROVAL"
                  requested_on: "2024-02-29T14:24:42.6009460Z"
                - client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                  client_name: "Flinks Fake"
                  provider_id: 2000
                  provider_name: "NBC"
                  country: "CA"
                  registration_status: "PENDING_APPROVAL"
                  requested_on: "2024-02-29T14:24:42.6055680Z"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/recipients/{client_id}/secret:
    post:
      tags:
        - Outbound
      summary: Regenerate a Data Recipient Secret
      description: Use the /api/v1/recipients/{client_id}/secret endpoint to regenerate a new client secret for a particular Data Recipient.
      operationId: regenerateDataRecipientSecret
      parameters:
        - name: client_id
          in: path
          required: true
          description: The Data Recipient that you want to generate a secret for.
          schema:
            type: string
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: object
                properties:
                  client_id:
                    type: string
                  client_secret:
                    type: string
              example:
                client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                client_secret: "xxxxxxxxxxxxxxxxxxxxxx"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid request parameters"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/v1/recipients/{client_id}:
    get:
      tags:
        - Outbound
      summary: Get Data Recipient Details
      description: Use the /api/v1/recipients/{client_id} endpoint to get additional details for a particular Data Recipient, including the scopes and redirect URLs.
      operationId: getDataRecipientDetails
      parameters:
        - name: client_id
          in: path
          required: true
          description: The id for the Data Recipient you want to retrieve details for.
          schema:
            type: string
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: object
                properties:
                  scope:
                    type: string
                    description: Space-separated list of scopes the data recipient has access to (e.g., ACCOUNT_BASIC ACCOUNT_DETAILED TRANSACTIONS STATEMENTS).
                  redirect_uris:
                    type: array
                    items:
                      type: string
                    description: List of authorized redirect URIs for the data recipient.
                  client_id:
                    type: string
                    description: Unique identifier for the data recipient.
                  name:
                    type: string
                    description: Name of the data recipient.
                  logo_uri:
                    type: string
                    description: URL to the data recipient's logo.
                  description:
                    type: string
                    description: Description of the data recipient.
                  terms_uri:
                    type: string
                    description: URL to the data recipient's terms of service.
                  client_uri:
                    type: string
                    description: URL to the data recipient's website.
                  country:
                    type: string
                    description: Country code of the data recipient (e.g., CA, US).
                  contacts:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: string
                          description: Email address of the contact.
                    description: Contact information for the data recipient.
              example:
                scope: "ACCOUNT_BASIC ACCOUNT_DETAILED ACCOUNT_PAYMENTS INVESTMENTS TRANSACTIONS STATEMENTS CUSTOMER_CONTACT CUSTOMER_PERSONAL"
                redirect_uris:
                  - "https://flinks.fake.com/callback"
                  - "https://flinks.fake.com/callback2"
                client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                name: "Flinks Fake"
                logo_uri: "https://flinks.fake.com/logo.png"
                description: "Description of Flinks Fake"
                terms_uri: "https://flinks.fake.com/callback/terms.html"
                client_uri: "https://flinks.fake.com/"
                country: "CA"
                contacts:
                  - email: "john.doe@flinks.fake.com"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "The recipient \"dc-xyz\" doesn't exists"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"
    put:
      tags:
        - Outbound
      summary: Update a Data Recipient
      description: Use the /api/v1/recipients/{client_id} endpoint to update the redirect URLs for a particular Data Recipient.
      operationId: updateDataRecipient
      parameters:
        - name: client_id
          in: path
          required: true
          description: The id for the Data Recipient you want to update.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                redirect_uris:
                  type: string
                  description: "The new redirect URLs that you want to use. We will replace the existing redirect URLs with the new ones that you pass."
              example: {}
      responses:
        "200":
          description: Result
          content:
            application/json:
              schema:
                type: object
                properties:
                  scope:
                    type: string
                  redirect_uris:
                    type: array
                    items:
                      type: string
                  client_id:
                    type: string
                  name:
                    type: string
                  logo_uri:
                    type: string
                  description:
                    type: string
                  terms_uri:
                    type: string
                  client_uri:
                    type: string
                  country:
                    type: string
                  contacts:
                    type: array
                    items:
                      type: object
                      properties:
                        email:
                          type: array
                          items:
                            type: string
              example:
                scope: "ACCOUNT_BASIC ACCOUNT_DETAILED ACCOUNT_PAYMENTS INVESTMENTS TRANSACTIONS STATEMENTS CUSTOMER_CONTACT CUSTOMER_PERSONAL"
                redirect_uris:
                  - "https://flinks.fake.com/callback"
                  - "https://flinks.fake.com/callback2"
                client_id: "dc-xxxxxxxxxxxxxxxxxxxxxxxxx"
                name: "Flinks Fake"
                logo_uri: "https://flinks.fake.com/logo.png"
                description: "Description of Flinks Fake"
                terms_uri: "https://flinks.fake.com/callback/terms.html"
                client_uri: "https://flinks.fake.com/"
                country: "CA"
                contacts:
                  - email: "john.doe@flinks.fake.com"
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Client Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "The recipient \"dc-xyz\" doesn't exists"
        "500":
          description: Server Error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Internal Server Error"

  /api/fdx/5/accounts/{account_id}:
    get:
      tags:
        - FDX
      summary: Get Account Details
      description: Use the /api/fdx/5/accounts/{accountId} endpoint to get information about a particular customer account in FDX format.
      operationId: fdxGetAccountDetails
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the customer account that you want to retrieve.
          schema:
            type: string
      responses:
        "200":
          description: Returned when the account details are successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  depositAccount:
                    type: object
                    description: Deposit account details, returned for checking/savings accounts.
                    properties:
                      accountId:
                        type: string
                        description: Unique identifier for the account.
                      accountCategory:
                        type: string
                        description: Category of the account (e.g., DEPOSIT_ACCOUNT, LOAN_ACCOUNT).
                      accountType:
                        type: string
                        description: Type of the account (e.g., CHECKING, SAVINGS).
                      accountNumber:
                        type: string
                        description: Full account number.
                      accountNumberDisplay:
                        type: string
                        description: Masked account number for display purposes.
                      productName:
                        type: string
                        description: Name of the product.
                      nickname:
                        type: string
                        description: User-assigned nickname for the account.
                      status:
                        type: string
                        description: Status of the account (e.g., OPEN, CLOSED).
                      description:
                        type: string
                        description: Description of the account.
                      currency:
                        type: object
                        description: Currency information for the account.
                      fiAttributes:
                        type: array
                        items:
                          type: object
                        description: Financial institution-specific attributes.
                      parentAccountId:
                        type: string
                        description: ID of the parent account, if applicable.
                      lineOfBusiness:
                        type: string
                        description: Line of business for the account.
                      routingTransitNumber:
                        type: string
                        description: Routing/transit number for the account.
                      balanceType:
                        type: string
                        description: Type of balance (ASSET or LIABILITY).
                      interestRate:
                        type: number
                        description: Interest rate for the account.
                      interestRateType:
                        type: string
                        description: Type of interest rate (FIXED or VARIABLE).
                      interestRateAsOf:
                        type: string
                        description: Date when the interest rate was last set.
                      priorInterestRate:
                        type: number
                        description: Previous interest rate.
                      transferIn:
                        type: boolean
                        description: Indicates if transfers into this account are allowed.
                      transferOut:
                        type: boolean
                        description: Indicates if transfers out of this account are allowed.
                      micrNumber:
                        type: string
                        description: MICR number for the account.
                      lastActivityDate:
                        type: string
                        description: Date of last activity on the account.
                      transactionsIncluded:
                        type: boolean
                        description: Indicates if transactions are included in the response.
                      balanceAsOf:
                        type: string
                        description: Date and time of the balance.
                      currentBalance:
                        type: number
                        description: Current balance of the account.
                      openingDayBalance:
                        type: number
                        description: Opening day balance.
                      availableBalance:
                        type: number
                        description: Available balance for use.
                      annualPercentageYield:
                        type: number
                        description: Annual percentage yield.
                      interestYtd:
                        type: number
                        description: Year-to-date interest earned.
                      term:
                        type: number
                        description: Term of the account.
                      maturityDate:
                        type: string
                        description: Maturity date for term accounts.
                      transactions:
                        type: array
                        items:
                          type: object
                        description: List of transactions for the account.
                  loanAccount:
                    type: object
                    description: Loan account details, returned for loan accounts.
                    properties:
                      accountId:
                        type: string
                        description: Unique identifier for the account.
                      accountCategory:
                        type: string
                        description: Category of the account.
                      accountType:
                        type: string
                        description: Type of the account.
                      principalBalance:
                        type: number
                        description: Principal balance of the loan.
                      escrowBalance:
                        type: number
                        description: Escrow balance.
                      originalPrincipal:
                        type: number
                        description: Original principal amount.
                      originatingDate:
                        type: string
                        description: Date the loan originated.
                      loanTerm:
                        type: integer
                        description: Term of the loan in months.
                      totalNumberOfPayments:
                        type: number
                        description: Total number of payments.
                      nextPaymentAmount:
                        type: number
                        description: Amount of the next payment.
                      nextPaymentDate:
                        type: string
                        description: Date of the next payment.
                      paymentFrequency:
                        type: string
                        description: Frequency of payments (MONTHLY, ANNUALLY, etc.).
                      compoundingPeriod:
                        type: string
                        description: Compounding period.
                      payOffAmount:
                        type: number
                        description: Payoff amount.
                      lastPaymentAmount:
                        type: number
                        description: Amount of the last payment.
                      lastPaymentDate:
                        type: string
                        description: Date of the last payment.
                      maturityDate:
                        type: string
                        description: Maturity date of the loan.
                      interestPaidYearToDate:
                        type: number
                        description: Interest paid year to date.
                      transactions:
                        type: array
                        items:
                          type: object
                        description: List of transactions for the account.
                  locAccount:
                    type: object
                    description: Line of credit account details.
                    properties:
                      creditLine:
                        type: number
                        description: Total credit line.
                      availableCredit:
                        type: number
                        description: Available credit.
                      principalBalance:
                        type: number
                        description: Principal balance.
                      currentBalance:
                        type: number
                        description: Current balance.
                      nextPaymentAmount:
                        type: number
                        description: Amount of the next payment.
                      nextPaymentDate:
                        type: string
                        description: Date of the next payment.
                      minimumPaymentAmount:
                        type: number
                        description: Minimum payment amount.
                      lastStmtBalance:
                        type: number
                        description: Last statement balance.
                      lastStmtDate:
                        type: string
                        description: Date of the last statement.
                  investmentAccount:
                    type: object
                    description: Investment account details.
                    properties:
                      currentValue:
                        type: number
                        description: Current value of the account.
                      availableCashBalance:
                        type: number
                        description: Available cash balance.
                      margin:
                        type: boolean
                        description: Indicates if margin trading is enabled.
                      marginBalance:
                        type: number
                        description: Margin balance.
                      shortBalance:
                        type: number
                        description: Short balance.
                      rolloverAmount:
                        type: number
                        description: Rollover amount.
                      employerName:
                        type: string
                        description: Employer name (for retirement accounts).
                      holdings:
                        type: array
                        items:
                          type: object
                        description: List of holdings in the account.
                      transactions:
                        type: array
                        items:
                          type: object
                        description: List of transactions.
                      openOrders:
                        type: array
                        items:
                          type: object
                        description: List of open orders.
                  annuityAccount:
                    type: object
                    description: Annuity account details.
                    properties:
                      payoutType:
                        type: string
                        description: Type of payout (DEFERRED, IMMEDIATE).
                      policyProductType:
                        type: string
                        description: Product type (FIXED, VARIABLE).
                      payoutMode:
                        type: string
                        description: Payout mode (ANNUALLY, MONTHLY, etc.).
                      payoutAmount:
                        type: number
                        description: Payout amount.
                      payoutStartDate:
                        type: string
                        description: Payout start date.
                      payoutEndDate:
                        type: string
                        description: Payout end date.
                      surrenderValue:
                        type: number
                        description: Surrender value.
        "401":
          description: Unauthorized - Expired or invalid token.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              example:
                message: "Invalid Bearer Token"
        "400":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "500":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/accounts:
    get:
      tags:
        - FDX
      summary: Get Accounts
      description: Use the /api/fdx/5/accounts endpoint to get a list of customer accounts in FDX format.
      operationId: fdxGetAccounts
      parameters:
        - name: accountIds
          in: query
          required: false
          description: "The ID of the customer account that you want to retrieve. If you are requesting more than one account, separate each accountId with a comma."
          schema:
            type: string
        - name: resultType
          in: query
          required: false
          description: "Specify the type of results you want to see. Possible values include the following: - `lightweight` = Return the metadata fields only - `details` = Return a full list of details The default value of this parameter is `lightweight`."
          schema:
            type: string
        - name: offset
          in: query
          required: false
          description: "An opaque cursor returned by the provider and used to retrieve the next page of results. Clients should pass this value unchanged to continue fetching data. The format of the string is internal and should not be interpreted or modified."
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: "The maximum number of accounts that you want to return with this request. Use this field to set a limit on the amount of data you receive."
          schema:
            type: string
      responses:
        "200":
          description: Returned when the accounts are successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  page:
                    type: object
                    description: Pagination information for the response.
                    properties:
                      nextOffset:
                        type: string
                        description: Opaque cursor for retrieving the next page of results.
                      totalElements:
                        type: integer
                        description: Total number of elements available.
                  links:
                    type: object
                    description: Links for pagination.
                    properties:
                      next:
                        type: object
                        description: Link to the next page of results.
                        properties:
                          href:
                            type: string
                            description: URL for the next page.
                          action:
                            type: string
                            description: Action type for the link.
                          description:
                            type: string
                            description: Description of the link.
                  accounts:
                    type: array
                    description: List of customer accounts.
                    items:
                      type: object
                      properties:
                        depositAccount:
                          type: object
                          description: Deposit account details, returned for checking/savings accounts.
                          properties:
                            accountId:
                              type: string
                              description: Unique identifier for the account.
                            accountCategory:
                              type: string
                              description: Category of the account (e.g., DEPOSIT_ACCOUNT, LOAN_ACCOUNT).
                            accountType:
                              type: string
                              description: Type of the account (e.g., CHECKING, SAVINGS).
                            accountNumber:
                              type: string
                              description: Full account number.
                            accountNumberDisplay:
                              type: string
                              description: Masked account number for display purposes.
                            productName:
                              type: string
                              description: Name of the product.
                            nickname:
                              type: string
                              description: User-assigned nickname for the account.
                            status:
                              type: string
                              description: Status of the account (e.g., OPEN, CLOSED).
                            description:
                              type: string
                              description: Description of the account.
                            currency:
                              type: object
                              description: Currency information for the account.
                            fiAttributes:
                              type: array
                              items:
                                type: object
                              description: Financial institution-specific attributes.
                            parentAccountId:
                              type: string
                              description: ID of the parent account, if applicable.
                            lineOfBusiness:
                              type: string
                              description: Line of business for the account.
                            routingTransitNumber:
                              type: string
                              description: Routing/transit number for the account.
                            balanceType:
                              type: string
                              description: Type of balance (ASSET or LIABILITY).
                            interestRate:
                              type: number
                              description: Interest rate for the account.
                            interestRateType:
                              type: string
                              description: Type of interest rate (FIXED or VARIABLE).
                            interestRateAsOf:
                              type: string
                              description: Date when the interest rate was last set.
                            priorInterestRate:
                              type: number
                              description: Previous interest rate.
                            transferIn:
                              type: boolean
                              description: Indicates if transfers into this account are allowed.
                            transferOut:
                              type: boolean
                              description: Indicates if transfers out of this account are allowed.
                            micrNumber:
                              type: string
                              description: MICR number for the account.
                            lastActivityDate:
                              type: string
                              description: Date of last activity on the account.
                            transactionsIncluded:
                              type: boolean
                              description: Indicates if transactions are included in the response.
                            balanceAsOf:
                              type: string
                              description: Date and time of the balance.
                            currentBalance:
                              type: number
                              description: Current balance of the account.
                            openingDayBalance:
                              type: number
                              description: Opening day balance.
                            availableBalance:
                              type: number
                              description: Available balance for use.
                            annualPercentageYield:
                              type: number
                              description: Annual percentage yield.
                            interestYtd:
                              type: number
                              description: Year-to-date interest earned.
                            term:
                              type: number
                              description: Term of the account.
                            maturityDate:
                              type: string
                              description: Maturity date for term accounts.
                            transactions:
                              type: array
                              items:
                                type: object
                              description: List of transactions for the account.
                        loanAccount:
                          type: object
                          description: Loan account details, returned for loan accounts.
                          properties:
                            accountId:
                              type: string
                              description: Unique identifier for the account.
                            accountCategory:
                              type: string
                              description: Category of the account.
                            accountType:
                              type: string
                              description: Type of the account.
                            principalBalance:
                              type: number
                              description: Principal balance of the loan.
                            escrowBalance:
                              type: number
                              description: Escrow balance.
                            originalPrincipal:
                              type: number
                              description: Original principal amount.
                            originatingDate:
                              type: string
                              description: Date the loan originated.
                            loanTerm:
                              type: integer
                              description: Term of the loan in months.
                            totalNumberOfPayments:
                              type: number
                              description: Total number of payments.
                            nextPaymentAmount:
                              type: number
                              description: Amount of the next payment.
                            nextPaymentDate:
                              type: string
                              description: Date of the next payment.
                            paymentFrequency:
                              type: string
                              description: Frequency of payments (MONTHLY, ANNUALLY, etc.).
                            compoundingPeriod:
                              type: string
                              description: Compounding period.
                            payOffAmount:
                              type: number
                              description: Payoff amount.
                            lastPaymentAmount:
                              type: number
                              description: Amount of the last payment.
                            lastPaymentDate:
                              type: string
                              description: Date of the last payment.
                            maturityDate:
                              type: string
                              description: Maturity date of the loan.
                            interestPaidYearToDate:
                              type: number
                              description: Interest paid year to date.
                            transactions:
                              type: array
                              items:
                                type: object
                              description: List of transactions for the account.
                        locAccount:
                          type: object
                          description: Line of credit account details.
                          properties:
                            creditLine:
                              type: number
                              description: Total credit line.
                            availableCredit:
                              type: number
                              description: Available credit.
                            principalBalance:
                              type: number
                              description: Principal balance.
                            currentBalance:
                              type: number
                              description: Current balance.
                            nextPaymentAmount:
                              type: number
                              description: Amount of the next payment.
                            nextPaymentDate:
                              type: string
                              description: Date of the next payment.
                            minimumPaymentAmount:
                              type: number
                              description: Minimum payment amount.
                            lastStmtBalance:
                              type: number
                              description: Last statement balance.
                            lastStmtDate:
                              type: string
                              description: Date of the last statement.
                        investmentAccount:
                          type: object
                          description: Investment account details.
                          properties:
                            currentValue:
                              type: number
                              description: Current value of the account.
                            availableCashBalance:
                              type: number
                              description: Available cash balance.
                            margin:
                              type: boolean
                              description: Indicates if margin trading is enabled.
                            marginBalance:
                              type: number
                              description: Margin balance.
                            shortBalance:
                              type: number
                              description: Short balance.
                            rolloverAmount:
                              type: number
                              description: Rollover amount.
                            employerName:
                              type: string
                              description: Employer name (for retirement accounts).
                            holdings:
                              type: array
                              items:
                                type: object
                              description: List of holdings in the account.
                            transactions:
                              type: array
                              items:
                                type: object
                              description: List of transactions.
                            openOrders:
                              type: array
                              items:
                                type: object
                              description: List of open orders.
                        annuityAccount:
                          type: object
                          description: Annuity account details.
                          properties:
                            payoutType:
                              type: string
                              description: Type of payout (DEFERRED, IMMEDIATE).
                            policyProductType:
                              type: string
                              description: Product type (FIXED, VARIABLE).
                            payoutMode:
                              type: string
                              description: Payout mode (ANNUALLY, MONTHLY, etc.).
                            payoutAmount:
                              type: number
                              description: Payout amount.
                            payoutStartDate:
                              type: string
                              description: Payout start date.
                            payoutEndDate:
                              type: string
                              description: Payout end date.
                            surrenderValue:
                              type: number
                              description: Surrender value.
        "4XX":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/customers/current:
    get:
      tags:
        - FDX
      summary: Get Customers
      description: Use the /api/fdx/5/customers/current endpoint to get information about a particular customer in FDX format.
      operationId: fdxGetCustomers
      responses:
        "200":
          description: Returned when the customer information is successfully retrieved.
          content:
            application/json:
              schema:
                type: object
                properties:
                  customerId:
                    type: string
                    description: Unique identifier for the customer.
                  name:
                    type: object
                    description: Customer's name information.
                    properties:
                      first:
                        type: string
                        description: Customer's first name.
                      middle:
                        type: string
                        description: Customer's middle name.
                      last:
                        type: string
                        description: Customer's last name.
                      suffix:
                        type: string
                        description: Name suffix (e.g., Jr., Sr.).
                      prefix:
                        type: string
                        description: Name prefix (e.g., Mr., Mrs., Dr.).
                      company:
                        type: string
                        description: Company name if applicable.
                  dateOfBirth:
                    type: string
                    description: Customer's date of birth.
                  email:
                    type: array
                    items:
                      type: string
                    description: List of customer's email addresses.
                  addresses:
                    type: array
                    description: List of customer's addresses.
                    items:
                      type: object
                      properties:
                        line1:
                          type: string
                          description: First line of the address.
                        line2:
                          type: string
                          description: Second line of the address.
                        line3:
                          type: string
                          description: Third line of the address.
                        city:
                          type: string
                          description: City name.
                        region:
                          type: string
                          description: State or province.
                        postalCode:
                          type: string
                          description: Postal or ZIP code.
                        country:
                          type: string
                          description: Country name or code.
                        type:
                          type: string
                          description: Type of address (e.g., HOME, BUSINESS).
                  telephones:
                    type: array
                    description: List of customer's telephone numbers.
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                          description: Type of telephone (e.g., HOME, MOBILE, WORK).
                        number:
                          type: string
                          description: Phone number.
                        country:
                          type: string
                          description: Country code for the phone number.
                  accounts:
                    type: array
                    description: List of accounts associated with the customer.
                    items:
                      type: object
                      properties:
                        accountId:
                          type: string
                          description: Unique identifier for the account.
                        links:
                          type: object
                          description: Links related to the account.
                          properties:
                            href:
                              type: string
                              description: URL for the account resource.
                            action:
                              type: string
                              description: Action type for the link.
                            description:
                              type: string
                              description: Description of the link.
                        relationship:
                          type: string
                          description: Customer's relationship to the account.
        "4XX":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/accounts/{account_id}/payment-networks:
    get:
      tags:
        - FDX
      summary: Get Payment Networks
      description: Use the /api/fdx/5/accounts/{accountId}/payment-networks endpoint to return a list of payment networks for a particular account.
      operationId: fdxGetPaymentNetworks
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the customer account that you want to retrieve.
          schema:
            type: string
        - name: offset
          in: query
          required: false
          description: Opaque cursor used by the provider to send the next set of records.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: "The maximum number of payment networks that you want to return with this request. Use this field to set a limit on the amount of data you receive."
          schema:
            type: string
      responses:
        "200":
          description: Returned when the payment networks are successfully retrieved with pagination.
          content:
            application/json:
              schema:
                type: object
                properties:
                  page:
                    type: object
                    description: Pagination information for the response.
                    properties:
                      nextOffset:
                        type: string
                        description: Opaque cursor for retrieving the next page of results.
                      totalElements:
                        type: integer
                        description: Total number of elements available.
                  links:
                    type: object
                    description: Links for pagination.
                    properties:
                      next:
                        type: object
                        description: Link to the next page of results.
                        properties:
                          href:
                            type: string
                            description: URL for the next page.
                  paymentNetworks:
                    type: array
                    description: List of payment networks for the account.
                    items:
                      type: object
                      properties:
                        bankId:
                          type: string
                          description: Bank identifier for the payment network.
                        identifier:
                          type: string
                          description: Account identifier within the payment network.
                        identifierType:
                          type: string
                          description: Type of identifier (e.g., ACCOUNT_NUMBER).
                        type:
                          type: string
                          description: Payment network type (e.g., US_ACH).
                        transferIn:
                          type: boolean
                          description: Indicates if transfers into this account are allowed.
                        transferOut:
                          type: boolean
                          description: Indicates if transfers out of this account are allowed.
        "4XX":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/accounts/{account_id}/transactions:
    get:
      tags:
        - FDX
      summary: Get Transactions
      description: Use the /api/fdx/5/accounts/{accountId}/transactions endpoint to get the transaction history for a particular account.
      operationId: fdxGetTransactions
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the customer account that you want to retrieve transactions for.
          schema:
            type: string
        - name: startTime
          in: query
          required: false
          description: "The first date in the date range that you want to retrieve transactions for, in ISO format (YYYY-MM-DD)."
          schema:
            type: string
            format: date
        - name: endTime
          in: query
          required: false
          description: "The last date in the date range that you want to retrieve transactions for, in ISO format (YYYY-MM-DD)."
          schema:
            type: string
            format: date
        - name: offset
          in: query
          required: false
          description: Opaque cursor used by the provider to send the next set of records.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: "The maximum number of transactions that you want to return with this request. Use this field to set a limit on the amount of data you receive."
          schema:
            type: string
      responses:
        "200":
          description: Returned when the transactions are successfully retrieved with pagination.
          content:
            application/json:
              schema:
                type: object
                properties:
                  page:
                    type: object
                    description: Pagination information for the response.
                    properties:
                      nextOffset:
                        type: string
                        description: Opaque cursor for retrieving the next page of results.
                      totalElements:
                        type: integer
                        description: Total number of elements available.
                  links:
                    type: object
                    description: Links for pagination.
                    properties:
                      next:
                        type: object
                        description: Link to the next page of results.
                        properties:
                          href:
                            type: string
                            description: URL for the next page.
                  transactions:
                    type: array
                    description: List of transactions for the account, which may include different transaction types.
                    items:
                      type: object
                      properties:
                        depositTransaction:
                          type: object
                          description: Deposit account transaction details.
                          properties:
                            accountId:
                              type: string
                              description: The account identifier.
                            transactionId:
                              type: string
                              description: Unique identifier for the transaction.
                            referenceTransactionId:
                              type: string
                              description: Reference transaction identifier.
                            category:
                              type: string
                              description: Transaction category.
                            subCategory:
                              type: string
                              description: Transaction subcategory.
                            postedTimestamp:
                              type: string
                              description: Timestamp when the transaction was posted.
                            transactionTimestamp:
                              type: string
                              description: Timestamp when the transaction occurred.
                            description:
                              type: string
                              description: Description of the transaction.
                            debitCreditMemo:
                              type: string
                              description: Indicates if the transaction is a CREDIT or DEBIT.
                            amount:
                              type: number
                              description: Transaction amount.
                            foreignAmount:
                              type: number
                              description: Foreign currency amount.
                            foreignCurrency:
                              type: string
                              description: Foreign currency code.
                            status:
                              type: string
                              description: Transaction status (e.g., POSTED, AUTHORIZATION).
                            fiAttributes:
                              type: array
                              description: Financial institution custom attributes.
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: Attribute name.
                                  value:
                                    type: string
                                    description: Attribute value.
                            transactionType:
                              type: string
                              description: Type of transaction (e.g., ADJUSTMENT).
                            payee:
                              type: string
                              description: Payee name.
                        loanTransaction:
                          type: object
                          description: Loan account transaction details.
                          properties:
                            accountId:
                              type: string
                              description: The account identifier.
                            transactionId:
                              type: string
                              description: Unique identifier for the transaction.
                            referenceTransactionId:
                              type: string
                              description: Reference transaction identifier.
                            category:
                              type: string
                              description: Transaction category.
                            subCategory:
                              type: string
                              description: Transaction subcategory.
                            postedTimestamp:
                              type: string
                              description: Timestamp when the transaction was posted.
                            transactionTimestamp:
                              type: string
                              description: Timestamp when the transaction occurred.
                            description:
                              type: string
                              description: Description of the transaction.
                            debitCreditMemo:
                              type: string
                              description: Indicates if the transaction is a CREDIT or DEBIT.
                            amount:
                              type: number
                              description: Transaction amount.
                            foreignAmount:
                              type: number
                              description: Foreign currency amount.
                            foreignCurrency:
                              type: string
                              description: Foreign currency code.
                            status:
                              type: string
                              description: Transaction status (e.g., POSTED, AUTHORIZATION).
                            fiAttributes:
                              type: array
                              description: Financial institution custom attributes.
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: Attribute name.
                                  value:
                                    type: string
                                    description: Attribute value.
                            transactionType:
                              type: string
                              description: Type of transaction (e.g., PAYMENT).
                        locTransaction:
                          type: object
                          description: Line of credit transaction details.
                          properties:
                            accountId:
                              type: string
                              description: The account identifier.
                            transactionId:
                              type: string
                              description: Unique identifier for the transaction.
                            referenceTransactionId:
                              type: string
                              description: Reference transaction identifier.
                            category:
                              type: string
                              description: Transaction category.
                            subCategory:
                              type: string
                              description: Transaction subcategory.
                            postedTimestamp:
                              type: string
                              description: Timestamp when the transaction was posted.
                            transactionTimestamp:
                              type: string
                              description: Timestamp when the transaction occurred.
                            description:
                              type: string
                              description: Description of the transaction.
                            debitCreditMemo:
                              type: string
                              description: Indicates if the transaction is a CREDIT or DEBIT.
                            amount:
                              type: number
                              description: Transaction amount.
                            foreignAmount:
                              type: number
                              description: Foreign currency amount.
                            foreignCurrency:
                              type: string
                              description: Foreign currency code.
                            status:
                              type: string
                              description: Transaction status (e.g., POSTED, AUTHORIZATION).
                            fiAttributes:
                              type: array
                              description: Financial institution custom attributes.
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: Attribute name.
                                  value:
                                    type: string
                                    description: Attribute value.
                            transactionType:
                              type: string
                              description: Type of transaction (e.g., PAYMENT).
                        investmentTransaction:
                          type: object
                          description: Investment account transaction details.
                          properties:
                            accountId:
                              type: string
                              description: The account identifier.
                            transactionId:
                              type: string
                              description: Unique identifier for the transaction.
                            referenceTransactionId:
                              type: string
                              description: Reference transaction identifier.
                            category:
                              type: string
                              description: Transaction category.
                            subCategory:
                              type: string
                              description: Transaction subcategory.
                            postedTimestamp:
                              type: string
                              description: Timestamp when the transaction was posted.
                            transactionTimestamp:
                              type: string
                              description: Timestamp when the transaction occurred.
                            description:
                              type: string
                              description: Description of the transaction.
                            debitCreditMemo:
                              type: string
                              description: Indicates if the transaction is a CREDIT or DEBIT.
                            amount:
                              type: number
                              description: Transaction amount.
                            foreignAmount:
                              type: number
                              description: Foreign currency amount.
                            foreignCurrency:
                              type: string
                              description: Foreign currency code.
                            status:
                              type: string
                              description: Transaction status (e.g., POSTED, AUTHORIZATION).
                            fiAttributes:
                              type: array
                              description: Financial institution custom attributes.
                              items:
                                type: object
                                properties:
                                  name:
                                    type: string
                                    description: Attribute name.
                                  value:
                                    type: string
                                    description: Attribute value.
                            transactionType:
                              type: string
                              description: Type of transaction (e.g., PURCHASED).
                            shares:
                              type: number
                              description: Number of shares.
                            securityIdType:
                              type: string
                              description: Type of security identifier (e.g., CUSIP).
                            orderType:
                              type: string
                              description: Order type (e.g., BUY).
                            securityType:
                              type: string
                              description: Type of security (e.g., BOND).
                            inv401kSource:
                              type: string
                              description: 401k source (e.g., AFTERTAX).
                            incomeType:
                              type: string
                              description: Income type (e.g., CGLONG).
                            subAccountSec:
                              type: string
                              description: Sub-account security (e.g., CASH).
                            subAccountFund:
                              type: string
                              description: Sub-account fund (e.g., CASH).
                            unitType:
                              type: string
                              description: Unit type (e.g., CURRENCY).
                            transactionReason:
                              type: string
                              description: Transaction reason (e.g., CALL).
                            positionType:
                              type: string
                              description: Position type (e.g., LONG).
                            faceValue:
                              type: number
                              description: Face value.
                            price:
                              type: number
                              description: Price per unit.
                            securityId:
                              type: string
                              description: Security identifier.
                            symbol:
                              type: string
                              description: Security symbol.
                            markup:
                              type: number
                              description: Markup amount.
                            commission:
                              type: number
                              description: Commission amount.
                            taxes:
                              type: number
                              description: Tax amount.
                            fees:
                              type: number
                              description: Fee amount.
                            load:
                              type: number
                              description: Load amount.
                            confirmationNumber:
                              type: string
                              description: Confirmation number.
                            fractionalCash:
                              type: number
                              description: Fractional cash amount.
                            oldUnits:
                              type: number
                              description: Old units count.
                            splitRatioNumerator:
                              type: integer
                              description: Split ratio numerator.
                            splitRatioDenominator:
                              type: integer
                              description: Split ratio denominator.
                            newUnits:
                              type: number
                              description: New units count.
                            loanId:
                              type: string
                              description: Loan identifier.
                            loanPrincipal:
                              type: number
                              description: Loan principal amount.
                            loanInterest:
                              type: number
                              description: Loan interest amount.
                            payrollDate:
                              type: string
                              description: Payroll date.
                            priorYearContrib:
                              type: boolean
                              description: Prior year contribution flag.
                            withholding:
                              type: number
                              description: Withholding amount.
                            taxExempt:
                              type: boolean
                              description: Tax exempt flag.
                            gain:
                              type: number
                              description: Gain amount.
                            stateWithholding:
                              type: number
                              description: State withholding amount.
                            penalty:
                              type: number
                              description: Penalty amount.
                            runningBalance:
                              type: number
                              description: Running balance.
                            unitPrice:
                              type: number
                              description: Unit price.
                            units:
                              type: number
                              description: Number of units.
                            accruedInterest:
                              type: number
                              description: Accrued interest amount.
                            digitalUnits:
                              type: string
                              description: Digital units.
                            transferAction:
                              type: string
                              description: Transfer action (e.g., IN).
        "4XX":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/accounts/{account_id}/statements:
    get:
      tags:
        - FDX
      summary: Get Statements
      description: Use the /api/fdx/5/accounts/{accountId}/statements endpoint to retrieve a paginated list of available statements for a particular account.
      operationId: fdxGetStatements
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the customer account that you want to retrieve statements for.
          schema:
            type: string
        - name: startTime
          in: query
          required: false
          description: "The first date in the date range that you want to retrieve statements for, in ISO format (YYYY-MM-DD)."
          schema:
            type: string
            format: date
        - name: endTime
          in: query
          required: false
          description: "The last date in the date range that you want to retrieve statements for, in ISO format (YYYY-MM-DD)."
          schema:
            type: string
            format: date
        - name: offset
          in: query
          required: false
          description: Opaque cursor used by the provider to send the next set of records.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: "The maximum number of statements that you want to return with this request. Use this field to set a limit on the amount of data you receive."
          schema:
            type: integer
      responses:
        "200":
          description: Returned when the statements are successfully retrieved with pagination.
          content:
            application/json:
              schema:
                type: object
                properties:
                  page:
                    type: object
                    description: Pagination information for the response.
                    properties:
                      nextOffset:
                        type: string
                        description: Opaque cursor for retrieving the next page of results.
                      totalElements:
                        type: integer
                        description: Total number of elements available.
                  links:
                    type: object
                    description: Links for pagination.
                    properties:
                      next:
                        type: object
                        description: Link to the next page of results.
                        properties:
                          href:
                            type: string
                            description: URL for the next page.
                  statements:
                    type: array
                    description: List of statements for the account.
                    items:
                      type: object
                      properties:
                        accountId:
                          type: string
                          description: Corresponds to the accountId in the Account entity.
                        statementId:
                          type: string
                          description: Long-term persistent identity of the statement. Use this value to call Download Statement.
                        statementDate:
                          type: string
                          description: Date of the statement.
                        description:
                          type: string
                          description: Description of the statement.
                        status:
                          type: string
                          description: Availability status of the statement.
                          enum:
                            - AVAILABLE
                            - PROCESSING
                            - FAILED
        "206":
          description: Returned when the Data Provider can only return part of the statements. The response body has the same structure as the 200 response.
          content:
            application/json:
              schema:
                type: object
                properties:
                  page:
                    type: object
                    description: Pagination information for the response.
                    properties:
                      nextOffset:
                        type: string
                        description: Opaque cursor for retrieving the next page of results.
                      totalElements:
                        type: integer
                        description: Total number of elements available.
                  links:
                    type: object
                    description: Links for pagination.
                    properties:
                      next:
                        type: object
                        description: Link to the next page of results.
                        properties:
                          href:
                            type: string
                            description: URL for the next page.
                  statements:
                    type: array
                    description: List of statements for the account.
                    items:
                      type: object
                      properties:
                        accountId:
                          type: string
                          description: Corresponds to the accountId in the Account entity.
                        statementId:
                          type: string
                          description: Long-term persistent identity of the statement. Use this value to call Download Statement.
                        statementDate:
                          type: string
                          description: Date of the statement.
                        description:
                          type: string
                          description: Description of the statement.
                        status:
                          type: string
                          description: Availability status of the statement.
                          enum:
                            - AVAILABLE
                            - PROCESSING
                            - FAILED
        "4XX":
          description: Returned when the request contains invalid data or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

  /api/fdx/5/accounts/{account_id}/statements/{statement_id}:
    get:
      tags:
        - FDX
      summary: Download Statement
      description: >-
        Use the /api/fdx/5/accounts/{accountId}/statements/{statementId} endpoint to download the original statement file for a particular account.
        Set the Accept header to the content type you want (application/pdf, image/gif, image/jpeg, image/tiff, or image/png) — defaults to application/pdf.
      operationId: fdxDownloadStatement
      parameters:
        - name: account_id
          in: path
          required: true
          description: The ID of the customer account that the statement belongs to.
          schema:
            type: string
        - name: statement_id
          in: path
          required: true
          description: The statementId returned by Get Statements.
          schema:
            type: string
        - name: Accept
          in: header
          required: false
          description: The content type you want the statement returned as. Defaults to application/pdf if omitted.
          schema:
            type: string
            enum:
              - application/pdf
              - image/gif
              - image/jpeg
              - image/tiff
              - image/png
      responses:
        "200":
          description: The statement file.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
            image/gif:
              schema:
                type: string
                format: binary
            image/jpeg:
              schema:
                type: string
                format: binary
            image/tiff:
              schema:
                type: string
                format: binary
            image/png:
              schema:
                type: string
                format: binary
        "302":
          description: The statement is available at another location. The URL is returned in the Location header.
        "413":
          description: Returned when the statement file is larger than the maximum size Flinks returns directly.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "4XX":
          description: Returned when the request contains invalid data, the statement isn't ready yet, or authentication fails.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.
        "5XX":
          description: Returned when an internal server error occurred.
          content:
            application/json:
              schema:
                type: object
                properties:
                  code:
                    type: integer
                    description: Error code.
                  message:
                    type: string
                    description: A description of the error.
                  debugMessage:
                    type: string
                    description: Provider custom developer-level error details for troubleshooting.

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: Bearer token obtained from the /Token endpoint.

security:
  - BearerAuth: []
