openapi: 3.2.0 info: contact: email: contact@dsb.gov.au name: Data Standards Body url: https://dsb.gov.au/ description: Specifications for Dynamic Client Registration endpoints applicable to all data holders (except secondary data holders). title: CDR Dynamic Client Registration Data Holder Client Registration API version: 1.36.0 servers: - description: MTLS url: https://mtls.dh.example.com/cds-au/v1 tags: - description: Data Holder Client Registration endpoints name: Data Holder Client Registration x-shortName: Client Registration paths: /register: post: description: "Register a client using a CDR Register issued Software Statement Assertion. \n\nThis endpoint does not require [CORS](#cors)." operationId: postClientRegistration requestBody: $ref: '#/components/requestBodies/RequestClientRegistration' responses: '201': content: application/json: schema: $ref: '#/components/schemas/RegistrationProperties' description: Client registration success '400': content: application/json: schema: $ref: '#/components/schemas/RegistrationError' description: Request failed due to client error summary: Register Data Recipient oAuth Client tags: - Data Holder Client Registration /register/{ClientId}: delete: description: Delete a Client Registration for a given Client ID. operationId: deleteClientRegistration parameters: - description: The client ID issued by the target Data Holder. explode: false in: path name: ClientId required: true schema: type: string style: simple - description: An Authorisation Token as per **[[RFC6750]](#nref-RFC6750)**. explode: false in: header name: Authorization required: true schema: type: string style: simple x-cds-type: ExternalRef responses: '204': description: Client deleted '401': description: Request failed due to unknown or invalid Client or invalid access token headers: WWW-Authenticate: description: The Response Header Field as per **[[RFC6750]](#nref-RFC6750)**. explode: false schema: type: string style: simple x-cds-type: ExternalRef '403': description: The client does not have permission to read, update or delete the Client '405': description: Method Not Allowed. The requested method is unsupported summary: Delete Data Recipient oAuth Client Registration tags: - Data Holder Client Registration x-scopes: - cdr:registration get: description: Get a Client Registration for a given Client ID. operationId: getClientRegistration parameters: - description: The client ID issued by the target Data Holder. explode: false in: path name: ClientId required: true schema: type: string style: simple - description: An Authorisation Token as per **[[RFC6750]](#nref-RFC6750)**. explode: false in: header name: Authorization required: true schema: type: string style: simple x-cds-type: ExternalRef responses: '200': content: application/json: schema: $ref: '#/components/schemas/RegistrationProperties' description: Client registration retrieval success '401': description: Request failed due to unknown or invalid Client or invalid access token headers: WWW-Authenticate: description: The Response Header Field as per **[[RFC6750]](#nref-RFC6750)**. explode: false schema: type: string style: simple x-cds-type: ExternalRef '403': description: The client does not have permission to read, update or delete the Client summary: Get oAuth Client Registration tags: - Data Holder Client Registration x-scopes: - cdr:registration put: description: Update a Client Registration for a given Client ID. operationId: putClientRegistration parameters: - description: The client ID issued by the target Data Holder. explode: false in: path name: ClientId required: true schema: type: string style: simple - description: An Authorisation Token as per **[[RFC6750]](#nref-RFC6750)**. explode: false in: header name: Authorization required: true schema: type: string style: simple x-cds-type: ExternalRef requestBody: $ref: '#/components/requestBodies/RequestClientRegistration' responses: '200': content: application/json: schema: $ref: '#/components/schemas/RegistrationProperties' description: Client registration update success '400': content: application/json: schema: $ref: '#/components/schemas/RegistrationError' description: Request failed due to client error '401': description: Request failed due to unknown or invalid Client or invalid access token headers: WWW-Authenticate: description: The Response Header Field as per **[[RFC6750]](#nref-RFC6750)**. explode: false schema: type: string style: simple x-cds-type: ExternalRef '403': description: The client does not have permission to read, update or delete the Client summary: Update Data Recipient Registration tags: - Data Holder Client Registration x-scopes: - cdr:registration components: schemas: ClientRegistrationRequestV1: description: The registration request JWT to be used to register with a Data Holder. The schema of the payload section of the decoded string(JWT) is defined in [ClientRegistration](#cdr-dynamic-client-registration-api_schemas_tocSclientregistration). example: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9... format: JWT type: string RegistrationError: properties: error: description: Predefined error code as described in [section 3.3 OIDC Dynamic Client Registration](https://openid.net/specs/openid-connect-registration-1_0.html). enum: - invalid_redirect_uri - invalid_client_metadata - invalid_software_statement - unapproved_software_statement type: string error_description: description: Additional text description of the error for debugging. type: string x-cds-type: ASCIIString required: - error type: object RegistrationProperties: properties: client_id: description: Data Holder issued client identifier string. example: 2cfefa98-7d4a-4bcb-95da-47063b84d410 type: string client_id_issued_at: description: Time at which the client identifier was issued expressed as seconds since 1970-01-01T00:00:00Z as measured in UTC. example: 1574398833 type: integer x-cds-type: ExternalRef client_name: description: Human-readable string name of the software product to be presented to the end-user during authorization. example: Mock Software type: string client_description: description: Human-readable string name of the software product description to be presented to the end user during authorization. example: A mock software product type: string client_uri: description: URL string of a web page providing information about the client. example: https://adr.example.com type: string x-cds-type: URIString legal_entity_id: description: A unique identifier string assigned by the CDR Register that identifies the Accredited Data Recipient Legal Entity. example: 3B0B0A7B-3E7B-4A2C-9497-E357A71D07C7 type: string legal_entity_name: description: Human-readable string name of the Accredited Data Recipient Legal Entity. example: Mock Company Pty Ltd. type: string org_id: description: A unique identifier string assigned by the CDR Register that identifies the Accredited Data Recipient Brand. example: 3B0B0A7B-3E7B-4A2C-9497-E357A71D07C8 type: string org_name: description: Human-readable string name of the Accredited Data Recipient to be presented to the end user during authorization. example: Mock Company Brand type: string redirect_uris: description: Array of redirection URI strings for use in redirect-based flows. If used, _redirect_uris_ **MUST** match or be a subset of the _redirect_uris_ as defined in the SSA. example: - https://adr.example.com/redirects/redirect1 - https://adr.example.com/redirects/redirect2 items: type: string x-cds-type: URIString type: array sector_identifier_uri: description: URL string referencing the client sector identifier URI, used as an optional input to the Pairwise Identifier. example: https://adr.example.com/sector_identifier.json type: string x-cds-type: URIString logo_uri: description: URL string that references a logo for the client. If present, the server **SHOULD** display this image to the end-user during approval. example: https://adr.example.com/logos/logo1.png type: string x-cds-type: URIString tos_uri: description: URL string that points to a human-readable terms of service document for the Software Product. example: https://adr.example.com/tos.html type: string x-cds-type: URIString policy_uri: description: URL string that points to a human-readable policy document for the Software Product. example: https://adr.example.com/policy.html type: string x-cds-type: URIString jwks_uri: description: URL string referencing the client JSON Web Key (JWK) Set **[[RFC7517]](#nref-RFC7517)** document, which contains the client public keys. example: https://adr.example.com/jwks type: string x-cds-type: URIString revocation_uri: description: URI string that references the location of the Software Product consent revocation endpoint. example: https://adr.example.com/revocation type: string x-cds-type: URIString recipient_base_uri: description: Base URI for the Consumer Data Standard Data Recipient endpoints. This should be the base to provide reference to all other Data Recipient Endpoints. example: https://adr.example.com type: string x-cds-type: URIString token_endpoint_auth_method: description: The requested authentication method for the token endpoint. enum: - private_key_jwt type: string token_endpoint_auth_signing_alg: description: The algorithm used for signing the JWT. enum: - PS256 - ES256 type: string grant_types: description: Array of OAuth 2.0 grant type strings that the client can use at the token endpoint. example: - client_credentials - authorization_code - refresh_token items: enum: - client_credentials - authorization_code - refresh_token type: string type: array response_types: description: Array of the OAuth 2.0 _response_type_ strings that the client can use at the authorization endpoint.

_response_type_ value `code` is required for Authorization Code Flow.
_response_type_ value `code id_token` is required for OIDC Hybrid Flow. items: enum: - code - code id_token type: string type: array application_type: default: web description: Kind of the application. The only supported application type will be `web`. enum: - web type: string id_token_signed_response_alg: description: Algorithm with which an id_token is to be signed. enum: - PS256 - ES256 type: string id_token_encrypted_response_alg: description: 'JWE _alg_ algorithm with which an id_token is to be encrypted.

Required only if OIDC Hybrid Flow (_response_type_: `code id_token`) is registered.' example: RSA-OAEP type: string x-cds-type: ExternalRef id_token_encrypted_response_enc: description: 'JWE `enc` algorithm with which an id_token is to be encrypted.

Required only if OIDC Hybrid Flow (_response_type_: `code id_token`) is registered.' example: A256GCM type: string x-cds-type: ExternalRef authorization_signed_response_alg: description: The JWS _alg_ algorithm required for signing authorization responses. If this is specified, the response will be signed using JWS and the configured algorithm. The algorithm `none` is not allowed.

Required if _response_type_ of `code` is registered by the client. enum: - PS256 - ES256 example: PS256 type: string x-conditional: true authorization_encrypted_response_alg: description: The JWE _alg_ algorithm required for encrypting authorization responses. If unspecified, the default is that no encryption is performed.

Required if _authorization_encrypted_response_enc_ is included. enum: - RSA-OAEP - RSA-OAEP-256 example: RSA-OAEP type: string x-conditional: true authorization_encrypted_response_enc: description: The JWE _enc_ algorithm required for encrypting authorization responses. If _authorization_encrypted_response_alg_ is specified, the default for this value is `A128CBC-HS256`. enum: - A256GCM - A128CBC-HS256 example: A128CBC-HS256 type: string request_object_signing_alg: description: Algorithm which the ADR expects to sign the request object if a request object will be part of the authorization request sent to the Data Holder. enum: - PS256 - ES256 type: string software_statement: description: The Software Statement Assertion, as defined in the CDR Data Standards. format: JWT type: string software_id: description: String representing a unique identifier assigned by the Register and used by registration endpoints to identify the software product to be dynamically registered.

The _software_id_ will remain the same for the lifetime of the product, across multiple updates and versions. example: 740C368F-ECF9-4D29-A2EA-0514A66B0CDE type: string software_roles: default: data-recipient-software-product description: String containing a role of the software in the CDR Regime. Initially the only value used will be `data-recipient-software-product`. enum: - data-recipient-software-product example: data-recipient-software-product type: string scope: description: String containing a space-separated list of scope values that the client can use when requesting access tokens. example: openid profile bank:accounts.basic:read bank:accounts.detail:read bank:transactions:read bank:payees:read bank:regular_payments:read common:customer.basic:read common:customer.detail:read cdr:registration type: string required: - client_description - client_id - client_name - client_uri - grant_types - id_token_signed_response_alg - jwks_uri - logo_uri - org_id - org_name - redirect_uris - request_object_signing_alg - response_types - scope - software_id - software_statement - token_endpoint_auth_method - token_endpoint_auth_signing_alg type: object x-conditional: - id_token_encrypted_response_alg - id_token_encrypted_response_enc - authorization_signed_response_alg - authorization_encrypted_response_alg requestBodies: RequestClientRegistration: content: application/jwt: schema: $ref: '#/components/schemas/ClientRegistrationRequestV1' description: The registration request JWT to be used to register with a Data Holder. required: true