Truist Retail Dynamic Client Registration

Enable data access platforms to manage registrations for fintech applications. Dynamic Client Registration API Truist publishes an OpenAPI 3.1.0 contract (v1.3.0) for this product on the Truist Developer Center.

Operations 4

POST /v1/register Recipient Registration Request #
GET /v1/register/{clientId} Get Recipient #
PUT /v1/register/{clientId} Update a Recipient #
DELETE /v1/register/{clientId} Delete Recipient #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/retail-dynamic-client-registration"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

bbandt-corp-retail-register-recipient-openapi.yml Raw ↑
openapi: 3.1.0
info:
  version: '1.3.0'
  # build: '0'
  title: Data Recipient Registration
  description: Truist Financial, following FDX V5.4.1 Recipient API
  contact:
    name: Truist API Support
    url: 'https://developer.truist.com/contact-us'
servers:
  - url: 'https://api-sandbox.truist.com/retail'
    description: Truist Financial Retail Open Banking APIs - Sandbox environment
  - url: 'https://apicert-secure.truist.com/retail'
    description: Truist Financial Retail Open Banking APIs - Certification environment
  - url: 'https://api-secure.truist.com/retail'
    description: Truist Financial Retail Open Banking APIs - Production environment
tags:
  - name: Recipients
    description: Manage recipients
security:
  - BasicAuth: []

paths:
  ############################################################
  #
  # Recipient Registration paths
  #
  ############################################################

  /v1/register:
    parameters:
      - $ref: '#/components/parameters/FapiInteractionIdHeader'
    post:
      summary: Recipient Registration Request
      description: Request to Register Recipient by Creating a Recipient Record
      operationId: createRecipient
      tags:
        - Recipients
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientRequest'
            examples:
              Create Recipient Record at Provider:
                value:
                  client_name: My Example Client
                  description: Recipient application for specified financial use case
                  redirect_uris:
                    - https://partner.example.net/callback
                  logo_uri: https://client.example.org/logo.png
                  auto_connect: true
                  client_uri: https://example.net/
                  contacts:
                    - support@example.net
                    - https://example.net/contact-us
                  scope: ACCOUNT_DETAILED TRANSACTIONS
                  duration_type:
                    - TIME_BOUND
                  duration_period: 365
                  lookback_period: 180
                  intermediaries:
                    - name: Data Access Platform Name
                      description: Company servicing permissioned financial data sharing
                      uri: https://partner.example/
                      logo_uri: https://partner.example/logo.png
                      contacts:
                        - support@dap-partner.com
                        - https://dap-partner.com/contact-us
                    - name: Digital Service Provider Name
                      description: Digital Service Provider to the Recipient
                      uri: https://sub-partner-one.example/
                      logo_uri: https://sub-partner-one.example/logo.png
                      contacts:
                        - support@sub-partner-one.com
                        - https://sub-partner-one.com/contact-us
      responses:
        '201':
          description: Created
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            text/plain:
              schema:
                type: string
              examples:
                Provider Response With Full Record Of Recipient:
                  value:
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg
        '202':
          description: Accepted
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            text/plain:
              schema:
                type: string
              examples:
                Accepted DR registration still pending its Payment Networks setup:
                  value:
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg
                Accepted DR registration still pending authorization server setup:
                  value:
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg
        '400':
          description: Bad Request
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                MISSING_REQUIRED_PARAMETER:
                  value:
                    code: '401'
                    message: Following required parameters are missing - {client_name,
                      redirect_uris, client_uri, contacts, scope, duration_type,
                      intermediary name, intermediary uri, intermediary contacts}
                INVALID_CLIENT_METADATA:
                  value:
                    code: '401'
                    message: Following request fields have invalid values - {redirect_uris, logo_uri,
                      client_uri, auto_connect, contacts, scope, duration_type, duration_period,
                      lookback_period, intermediary uri, intermediary logo_uri, contacts}
                OUT_OF_CONTRACT_METADATA:
                  value:
                    code: '401'
                    message: Following request fields have out of contract metadata - {scope,
                      duration_type, duration_period, lookback_period}
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'

  /v1/register/{clientId}:
    parameters:
      - $ref: '#/components/parameters/ClientIdPath'
      - $ref: '#/components/parameters/FapiInteractionIdHeader'
    get:
      summary: Get Recipient
      operationId: getRecipient
      tags:
        - Recipients
      description: Get a specific recipient data identified with clientId
      responses:
        '200':
          description: OK
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            text/plain:
              schema:
                type: string
              examples:
                Provider Response With Full Record Of Recipient:
                  value:
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    put:
      summary: Update a Recipient
      operationId: updateRecipient
      tags:
        - Recipients
      description: Update data for a specific recipient identified with clientId
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/RecipientRequest'
      responses:
        '200':
          description: OK
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            text/plain:
              schema:
                type: string
              examples:
                Updated Provider Response With Full Record Of Recipient:
                  value:
                    eyJhbGciOiJSUzI1NiIsImtpZCI6IjFlOWdkazcifQ.ewogImlzcyI6ICJodHRwOi8vc2VydmVyLmV4YW1wbGUuY29tIiwKICJzdWIiOiAiMjQ4Mjg5NzYxMDAxIiwKICJhdWQiOiAiczZCaGRSa3F0MyIsCiAibm9uY2UiOiAibi0wUzZfV3pBMk1qIiwKICJleHAiOiAxMzExMjgxOTcwLAogImlhdCI6IDEzMTEyODA5NzAKfQ.ggW8hZ1EuVLuxNuuIJKX_V8a_OMXzR0EHR9R6jgdqrOOF4daGU96Sr_P6qJp6IcmD3HP99Obi1PRs-cwh3LO-p146waJ8IhehcwL7F09JdijmBqkvPeB2T9CJNqeGpe-gccMg4vfKjkM8FcGvnzZUN4_KSP0aAp1tOJ1zZwgjxqGByKHiOtX7TpdQyHE5lcMiKPXfEIQILVq0pc_E2DzL7emopWoaoZTF_m0_N0YzFC6g6EJbOEoRoSK5hoDalrcvRYLSrQAZZKflyuVCyixEoV9GfNQC3_osjzw2PAithfubEEBLuVVk4XUVrWOLrLl0nx7RkKU8NXNHq-rvKMzqg
        '400':
          description: Bad Request
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              examples:
                MISSING_REQUIRED_PARAMETER:
                  value:
                    code: '401'
                    message: Following required parameters are missing - {client_name,
                      redirect_uris, client_uri, contacts, scope, duration_type,
                      intermediary name, intermediary uri, intermediary contacts}
                INVALID_CLIENT_METADATA:
                  value:
                    code: '401'
                    message: Following request fields have invalid values - {redirect_uris, logo_uri,
                      client_uri, auto_connect, contacts, scope, duration_type, duration_period,
                      lookback_period, intermediary uri, intermediary logo_uri, contacts}
                OUT_OF_CONTRACT_METADATA:
                  value:
                    code: '401'
                    message: Following request fields have out of contract metadata - {scope,
                      duration_type, duration_period, lookback_period}
                UPDATE_NOT_YET_IMPLEMENTED:
                  value:
                    code: '401'
                    message: Following requested field updates are not yet supported
                      by Truist - {client_name, auto_connect, duration_type, duration_period}
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '409':
          $ref: '#/components/responses/409'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'
    delete:
      summary: Delete Recipient
      operationId: deleteRecipient
      tags:
        - Recipients
      description: Delete data for a specific recipient identified with clientId
      responses:
        '204':
          description: No Content
          headers:
            x-fapi-interaction-id:
              $ref: '#/components/headers/x-fapi-interaction-id'
        '401':
          $ref: '#/components/responses/401'
        '403':
          $ref: '#/components/responses/403'
        '404':
          $ref: '#/components/responses/404'
        '405':
          $ref: '#/components/responses/405'
        '429':
          $ref: '#/components/responses/429'
        '500':
          $ref: '#/components/responses/500'
        '503':
          $ref: '#/components/responses/503'
        '504':
          $ref: '#/components/responses/504'

components:
  securitySchemes:
    BasicAuth:
      type: http
      scheme: basic
      description: Base64(client_id:client_secret)

  parameters:
    ############################################################
    #
    # Recipient Registration request parameters
    #
    ############################################################

    ClientIdPath:
      name: clientId
      in: path
      description: Client Identifier. Uniquely identifies a Client
      required: true
      schema:
        $ref: '#/components/schemas/Identifier'
      example: 'uYrD4LD7P9948lzy3UCPHLWljGqcRWx06Tn'

    FapiInteractionIdHeader:
      name: x-fapi-interaction-id
      in: header
      description: Unique request identifier
      schema:
        $ref: '#/components/schemas/FapiInteractionId'
      required: true
      example: c770aef3-6784-41f7-8e0e-ff5f97bddb3a

  headers:
    ############################################################
    #
    # Standard response headers
    #
    ############################################################

    x-fapi-interaction-id:
      description: Unique request identifier
      schema:
        $ref: '#/components/schemas/FapiInteractionId'
      required: true
      example: c770aef3-6784-41f7-8e0e-ff5f97bddb3a

  examples:
    ############################################################
    #
    # Examples of decrypted responses
    #
    ############################################################

    Provider-Response-With-Full-Record-Of-Recipient:
      description: >-
        Completed recipient creation will return the submitted request attribute
        values plus new client_id and client_secret with status APPROVED
      value:
        client_name: My Example Client
        description: Recipient Application servicing financial use case requiring permissioned data sharing
        redirect_uris:
          - 'https://partner.example.net/callback-one'
          - 'https://partner.example.net/callback-two'
        logo_uri: 'https://client.example.org/logo.png'
        auto_connect: true
        client_uri: 'https://example.net/'
        contacts:
          - support@example.net
          - 'https://example.net/contact-us'
        scope: ACCOUNT_DETAILED TRANSACTIONS INVESTMENTS
        duration_type:
          - TIME_BOUND
        duration_period: 365
        lookback_period: 180
        intermediaries:
          - name: Data Access Platform Name
            description: Data Access Platform specializing in servicing permissioned data sharing for Data Recipients
            uri: 'https://partner.example/'
            logo_uri: 'https://partner.example/logo.png'
            contacts:
              - support@dap-partner.com
              - 'https://dap-partner.com/contact-us'
          - name: Digital Service Provider Name
            description: Digital Service Provider to the Recipient
            uri: 'https://sub-partner-one.example/'
            logo_uri: 'https://sub-partner-one.example/logo.png'
            contacts:
              - support@sub-partner-one.com
              - 'https://sub-partner-one.com/contact-us'
        client_id: V8tvEkZWhDAdxSaKGUJZ
        client_secret: SpsuwZIxnp8bBEhp5sk1EKiIKTZ4X4DKU
        status: APPROVED

    Accepted-DR-registration-still-pending-its-Payment-Networks-setup:
      description: >-
        Recipient created and can begin creating customer consents
        but is not yet available for Tokenized Account Numbers.
        Response will return the submitted request attribute values plus
        new client_id and client_secret with status PAYMENT_SUPPORT_ERROR
      value:
        client_name: My Example Client
        description: Recipient Application servicing financial use case requiring permissioned data sharing
        redirect_uris:
          - 'https://partner.example.net/callback-one'
          - 'https://partner.example.net/callback-two'
        logo_uri: 'https://client.example.org/logo.png'
        auto_connect: true
        client_uri: 'https://example.net/'
        contacts:
          - support@example.net
          - 'https://example.net/contact-us'
        scope: ACCOUNT_DETAILED TRANSACTIONS INVESTMENTS PAYMENT_SUPPORT
        duration_type:
          - TIME_BOUND
        duration_period: 365
        lookback_period: 180
        intermediaries:
          - name: Data Access Platform Name
            description: Data Access Platform specializing in servicing permissioned data sharing for Data Recipients
            uri: 'https://partner.example/'
            logo_uri: 'https://partner.example/logo.png'
            contacts:
              - support@dap-partner.com
              - 'https://dap-partner.com/contact-us'
          - name: Digital Service Provider Name
            description: Digital Service Provider to the Recipient
            uri: 'https://sub-partner-one.example/'
            logo_uri: 'https://sub-partner-one.example/logo.png'
            contacts:
              - support@sub-partner-one.com
              - 'https://sub-partner-one.com/contact-us'
        client_id: V8tvEkZWhDAdxSaKGUJZ
        client_secret: SpsuwZIxnp8bBEhp5sk1EKiIKTZ4X4DKU
        status: PAYMENT_SUPPORT_ERROR

    Accepted-DR-registration-still-pending-authorization-server-setup:
      description: >-
        Recipient created but is not yet available for customer consents,
        response will return the submitted request attribute values plus
        new client_id and client_secret with status PENDING
      value:
        client_name: My Example Client
        description: Recipient Application servicing financial use case requiring permissioned data sharing
        redirect_uris:
          - 'https://partner.example.net/callback-one'
          - 'https://partner.example.net/callback-two'
        logo_uri: 'https://client.example.org/logo.png'
        auto_connect: true
        client_uri: 'https://example.net/'
        contacts:
          - support@example.net
          - 'https://example.net/contact-us'
        scope: ACCOUNT_DETAILED TRANSACTIONS INVESTMENTS PAYMENT_SUPPORT
        duration_type:
          - TIME_BOUND
        duration_period: 365
        lookback_period: 180
        intermediaries:
          - name: Data Access Platform Name
            description: Data Access Platform specializing in servicing permissioned data sharing for Data Recipients
            uri: 'https://partner.example/'
            logo_uri: 'https://partner.example/logo.png'
            contacts:
              - support@dap-partner.com
              - 'https://dap-partner.com/contact-us'
          - name: Digital Service Provider Name
            description: Digital Service Provider to the Recipient
            uri: 'https://sub-partner-one.example/'
            logo_uri: 'https://sub-partner-one.example/logo.png'
            contacts:
              - support@sub-partner-one.com
              - 'https://sub-partner-one.com/contact-us'
        client_id: V8tvEkZWhDAdxSaKGUJZ
        client_secret: SpsuwZIxnp8bBEhp5sk1EKiIKTZ4X4DKU
        status: PENDING

  schemas:
    ############################################################
    #
    # Recipient Registration data entities
    #
    ############################################################

    Recipient:
      title: Recipient Provider
      type: object
      description: Record of Recipient at the Provider in snake case to match IETF RFC 7591 naming formats
      allOf:
        - $ref: '#/components/schemas/RecipientRequest'
        - type: object
          properties:
            client_id:
              type: string
              description: OAuth 2.0 client identifier. Unique ID representing Data Recipient and Identity Chain combination
            client_secret:
              type: string
              description: OAuth 2.0 client secret string
            status:
              $ref: '#/components/schemas/RecipientStatus'
              description: Status of Recipient creation through dynamic client registration per
                FDX RFC 0117 and FDX Recipient Registration Guidelines document
      required:
        - client_id
        - status

    ############################################################
    #
    # Shared data entities (usable by core and all extensions)
    #
    ############################################################

    Intermediary:
      title: Intermediary
      description: >-
        Data Access Platform, Service Provider, or any other entity in
        the data sharing chain between a Data Provider to a Data Recipient.
        In snake case to match IETF RFC 7591 naming formats
      type: object
      properties:
        name:
          type: string
          description: Name of intermediary party
        description:
          type: string
          description: A short description of the intermediary
        uri:
          type: string
          format: uri
          description: A URL string of a web page providing information about the intermediary
        logo_uri:
          type: string
          format: uri
          description: A URL string that references a logo for this intermediary
        contacts:
          type: array
          items:
            type: string
          description: Array of strings representing ways to contact people responsible for this intermediary
      required:
        - name
        - uri
        - contacts

    RecipientRequest:
      title: Recipient Request
      type: object
      description: Used to request a recipient registration.
        In snake case to match IETF RFC 7591 naming formats
      properties:
        client_name:
          $ref: '#/components/schemas/Identifier'
          description: >-
            The Data Recipient or Data Recipient Application name displayed by Data Provider during
            the consent Flow as well as in the Consent Dashboard.
            Must be unique from all previously registered client names.
            Truist allows alphanumeric, spaces and these special characters: underscore (_), hyphen (-),
            period (.), pound sign (#), dollar sign ($), percent (%), ampersand (&) and comma (,).
            Prior name value must be sent in Truist PUT /register/{id} update call,
            even though functionality to permit update of name field is still being built.
        description:
          type: string
          description: A short description of the Data Recipient application.
            If not sent in an update request the prior value will be cleared
        redirect_uris:
          type: array
          items:
            type: string
          description: An array of eligible Redirect URI targets
        logo_uri:
          type: string
          description: Data Recipient Logo URL location.
            If not sent in an update request the prior value will be cleared
          format: uri
        auto_connect:
          type: boolean
          description: Flag which provides information whether Data Recipient customers can auto-connect new accounts.
            Prior auto_connect value, if true, must be sent in Truist PUT /register/{id} update call,
            even though functionality to permit update of auto_connect field is still being built
        client_uri:
          type: string
          description: The URI which provides additional information about the Data Recipient
          format: uri
        contacts:
          type: array
          items:
            type: string
          description: Array of strings representing ways to contact individuals responsible for the Data Recipient application
        scope:
          type: string
          description: String form field with a list of data clusters.
            Prior or updated scope value must be sent in Truist PUT /register/{id} update call,
            Data Recipient scope will be set to the value in PUT request
        duration_type:
          type: array
          items:
            $ref: '#/components/schemas/ConsentDurationType'
          description: The type of consent duration for the Data Recipient consumers.
            Only value of duration_type which Truist currently supports and accepts is ['TIME_BOUND']
        duration_period:
          type: number
          description: The maximum consent duration in days that can be requested for a Recipient consumer.
            Maximum value is 365. Prior duration_period value must be sent in Truist PUT /register/{id} update call,
            even though functionality to permit update of duration_period field is still being built
        lookback_period:
          type: number
          description: >-
            The maximum number of days allowed for Data Recipient consumers to obtain in transaction history,
            effective from the current date.
            If not sent in an update request the prior value will be left unchanged
        intermediaries:
          type: array
          items:
            $ref: '#/components/schemas/Intermediary'
          description: An array of the intermediaries for this data recipient.
            If not sent in an update request the prior values will be cleared
      required:
        - client_name
        - redirect_uris
        - client_uri
        - contacts
        - scope
        - duration_type

    ############################################################
    #
    # Shared data types (usable by core and all extensions)
    #
    ############################################################

    ConsentDurationType:
      title: Consent Duration Type
      description: Duration of the Consent Grant, per FDX UX Guidelines v1.0 (pp 18 - 20)
      type: string
      enum:
        - TIME_BOUND

    RecipientStatus:
      title: Status
      description: Status of Recipient creation through dynamic client registration per
        FDX RFC 0117 and FDX Recipient Registration Guidelines document
      type: string
      enum:
        - APPROVED
        - PAYMENT_SUPPORT_ERROR
        - PENDING
        - SUSPENDED
        - TERMINATED

    Error:
      title: Error
      description: >-
        An error entity which can be used at the API level for error responses
        or at the account level to indicate a problem specific to a particular
        account
      type: object
      properties:
        code:
          type: string
          description: >-
            Error code defined by FDX API Specification or Data Provider
            indicating the error situation which has occurred
        message:
          type: string
          description: >-
            End user displayable information which might help the customer
            diagnose an error

    Identifier:
      title: Identifier
      description: Value for a unique identifier
      type: string
      maxLength: 256

    FapiInteractionId:
      title: FAPI Interaction ID
      description: >-
        Universally unique identifier for this interaction,
        used across all FDX API requests and responses
      type: string
      format: uuid
      minLength: 36
      maxLength: 36
      example: c770aef3-6784-41f7-8e0e-ff5f97bddb3a

  responses:
    ############################################################
    #
    # Standard error responses
    #
    ############################################################

    '401':
      description: Unauthorized
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            INVALID_BASICAUTHENTICATION_SOURCE:
              value:
                code: '603'
                message: Authentication failed

    '403':
      description: Forbidden
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            NO_APIPRODUCT_MATCHFOUND:
              value:
                code: '403'
                message: Forbidden, inadequate authorization

    '404':
      description: Not Found
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            RESOURCE_NOT_FOUND:
              value:
                code: '1107-1206'
                message: URI does not represent a recognized resource

    '405':
      description: Client called an unimplemented REST method
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            INVALID_METHOD:
              value:
                code: '1206'
                message: Method Not Allowed

    '409':
      description: Conflict
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            DUPLICATE_CLIENT:
              value:
                code: '409'
                message: Duplicate Client Name request

    '429':
      description: Too Many Requests
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            SPIKE_ARREST_VIOLATION:
              value:
                code: '1207'
                message: Traffic spike, too many requests
            QUOTA_VIOLATION:
              value:
                code: '1207'
                message: Quota violation, too many requests

    '500':
      description: Internal Server Error
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            INTERNAL_SERVER_ERROR:
              value:
                code: '500'
                message: System down for maintenance

    '503':
      description: Service unavailable / system down for maintenance
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interaction-id'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          examples:
            SERVICE_UNAVAILABLE:
              value:
                code: '503'
                message: Scheduled Maintenance

    '504':
      description: Service Timed out
      headers:
        x-fapi-interaction-id:
          $ref: '#/components/headers/x-fapi-interact

# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bbandt-corp/refs/heads/main/openapi/bbandt-corp-retail-register-recipient-openapi.yml