openapi: 3.2.0 info: title: Dynamic Client Registration Register API description: On-board to Barclays API Exchange using an EIDAS certificate, and retrieve credentials to consume our PSD2 APIs. version: v1.10 tags: - name: Register paths: /register: post: description: This endpoint enables a TPP to submit a request to Barclays, for the purpose of creating OAuth clients, that are registered with Barclays Authorization server. operationId: post_register parameters: - name: Correlation-ID in: header description: An identifier for the current call chain that can be used to tie together log entries on multiple layers (e.g. client, server, mainframe). This identifier must be designed to be unique across all applications in the bank. required: true schema: type: string description: An identifier for the current call chain that can be used to tie together log entries on multiple layers (e.g. client, server, mainframe). This identifier must be designed to be unique across all applications in the bank. maxLength: 64 minLength: 16 pattern: ^[a-zA-Z0-9-+/=_]{16,64}$ - name: X-Forwarded-For in: header description: IP Address of requesting client required: false schema: type: string description: IP Address of requesting client maxLength: 4094 minLength: 7 pattern: ^(?!\s)([0-9a-z.,:\s]{7,4094})$ - name: X-SSLClientCert in: header description: EIDAS client certificate from Mutual TLS required: false schema: type: string description: EIDAS client certificate from Mutual TLS maxLength: 8192 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9-+\/=]{1,8192})$ - name: X-SSLClientCertDN in: header description: EIDAS certificate DN required: true schema: type: string description: EIDAS certificate DN maxLength: 1024 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9-.,@_%\/=\s]{1,1024})$ - name: X-SSLClientCertIssuerDN in: header description: EIDAS certificate Issuer DN required: true schema: type: string description: EIDAS certificate Issuer DN maxLength: 1024 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9-.,@_%\/=\s\\]{1,1024})$ - name: X-SSLClientCertSN in: header description: EIDAS certificate Serial Number required: true schema: type: string description: EIDAS certificate Serial Number maxLength: 256 minLength: 1 pattern: ^(?!\s)([\w.:\s]{1,256})$ - name: X-SSLClientCertChain in: header description: EIDAS certificate chain as it received as part of Mutual TLS required: false schema: type: string description: EIDAS certificate chain as it received as part of Mutual TLS maxLength: 8192 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9-+\/=\s]{1,8192})$ requestBody: content: application/json: schema: $ref: '#/components/schemas/DCRRequestType' example: null responses: '201': description: '' content: application/json: schema: $ref: '#/components/schemas/DCRResponseType' example: null '400': description: '' content: application/json: schema: $ref: '#/components/schemas/PostRegister400Response' example: null '500': description: '' content: application/json: schema: $ref: '#/components/schemas/PostRegister500Response' example: null '503': description: '' content: application/json: example: null '429': description: '' content: application/json: schema: $ref: '#/components/schemas/PostRegister429Response' example: null tags: - Register summary: Post register x-summary-source: derived components: schemas: PostRegister400Response: type: object properties: error_description: type: string error: type: string required: - error PostRegister429Response: type: object properties: error_description: type: string error: type: string required: - error DCRRequestType: type: object properties: token_endpoint_auth_signing_alg: type: string enum: - PS256 client_uri: type: string maxLength: 263 minLength: 9 pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ jwks: $ref: '#/components/schemas/JWKSObjectType' grant_types: type: array items: type: string enum: - client_credentials - authorization_code - implicit - refresh_token - urn:ietf:params:oauth:grant-type:jwt-bearer maxItems: 10 minItems: 1 application_type: type: string enum: - web - mobile logo_uri: type: string maxLength: 263 minLength: 9 pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ tls_client_auth_subject_dn: type: string maxLength: 128 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,128})$ redirect_uris: type: array items: type: string maxLength: 263 minLength: 8 pattern: ^(?!\s)(https|http)(\:\/\/)([A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ maxItems: 10 minItems: 1 token_endpoint_auth_method: type: string enum: - private_key_jwt software_id: type: string maxLength: 22 minLength: 1 pattern: ^(?!\s)([\w]{1,22})$ scope: type: string maxLength: 256 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,256})$ jwks_uri: type: string maxLength: 263 minLength: 9 pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ tos_uri: type: string maxLength: 263 minLength: 9 pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ software_version: type: string maxLength: 128 minLength: 1 pattern: ^(?!\s)([a-zA-Z0-9.\-\s]{1,128})$ request_object_signing_alg: type: string enum: - PS256 client_name: type: string maxLength: 64 minLength: 1 pattern: ^(?!\s)([\w\s$£"ÖÄÜß"öäü!@#,.§$-]{1,64})$ contacts: type: array items: type: string maxLength: 256 minLength: 5 pattern: ^(?=.{1,256}$)^([a-zA-Z0-9.!#$%&'*+\/=?^_`~-]{1,64})@(([a-zA-Z0-9-]{1,180}(\.[a-zA-Z0-9-]{1,62}){1,9}))$ maxItems: 10 minItems: 1 policy_uri: type: string maxLength: 263 minLength: 9 pattern: ^(?!\s)(https\:\/\/[A-Za-z0-9.#&=%\?\-:\/_\s]{1,255})$ response_types: type: array items: type: string enum: - code - token - id_token - id_token token - code id_token - code token - code id_token token - none maxItems: 10 minItems: 1 id_token_signed_response_alg: type: string enum: - PS256 required: - client_name - contacts - grant_types - redirect_uris - response_types - scope - token_endpoint_auth_method JWKSObjectType: type: object properties: keys: type: array items: {} maxItems: 100 minItems: 1 required: - keys PostRegister500Response: type: object properties: error_description: type: string error: type: string required: - error DCRResponseType: type: object properties: token_endpoint_auth_signing_alg: type: string enum: - PS256 client_uri: type: string jwks: $ref: '#/components/schemas/JWKSObjectType' grant_types: type: array items: type: string enum: - client_credentials - authorization_code - implicit - refresh_token - urn:ietf:params:oauth:grant-type:jwt-bearer application_type: type: string enum: - web - mobile logo_uri: type: string tls_client_auth_subject_dn: type: string redirect_uris: type: array items: type: string token_endpoint_auth_method: type: string enum: - private_key_jwt client_id: type: string software_id: type: string client_secret_expires_at: type: number scope: type: string jwks_uri: type: string tos_uri: type: string software_version: type: string request_object_signing_alg: type: string enum: - PS256 client_secret: type: string client_id_issued_at: type: number client_name: type: string contacts: type: array items: type: string policy_uri: type: string response_types: type: array items: type: string enum: - code - token - id_token - id_token token - code id_token - code token - code id_token token - none id_token_signed_response_alg: type: string enum: - PS256 required: - client_id - client_name - contacts - grant_types - redirect_uris - response_types - scope - token_endpoint_auth_method