---
swagger: "2.0"
info:
  version: 1.13.0
  title: Consumer Data Right (CDR) Register - Participant Discovery APIs
host: register.cdr.gov.au
basePath: /cdr-register/v1
tags: []
schemes:
- https
paths:
  /.well-known/openid-configuration:
    get:
      tags:
      - Register
      summary: Get OpenId Provider Config
      description: "Endpoint used by participants to discover the CDR Register OpenID configuration and obtain information needed to interact with it, including its OAuth 2.0 endpoint locations."
      operationId: GetOpenIdProviderConfig
      produces:
      - application/json
      parameters: []
      responses:
        "200":
          description: The OpenID Provider Configuration Metadata values
          schema:
            $ref: '#/definitions/ResponseOpenIDProviderConfigMetadata'
  /jwks:
    get:
      tags:
      - Register
      summary: Get JWKS
      description: JWKS endpoint containing the public keys used by the CDR Register to validate the signature of issued SSAs and authenticate outbound calls to participants in the CDR.
      operationId: Get JWKS
      produces:
      - application/json
      parameters: []
      responses:
        "200":
          description: A JSON object that represents a set of JWKs
          schema:
            $ref: '#/definitions/ResponseJWKS'
  /{industry}/data-holders/brands:
    get:
      tags:
      - Register
      summary: Get Data Holder Brands
      description: Allows Data Recipients to discover data holder brands available in the CDR ecosystem.
      operationId: GetDataHolderBrands
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: industry
        in: path
        description: "The industry the participant is retrieving data for (Banking, etc)"
        required: true
        type: string
        enum:
        - banking
      - name: updated-since
        in: query
        description: query filter returns data holder brands updated since the specified date-time
        required: false
        type: string
        format: date-time
      - name: page
        in: query
        description: the page number to return
        required: false
        type: integer
        format: int32
      - name: page-size
        in: query
        description: the number of records to return per page
        required: false
        type: integer
        format: int32
      - name: Authorization Endpoint (Register)
        in: header
        description: "An Authorisation Token as per [RFC6750](https://tools.ietf.org/html/rfc6750)."
        required: true
        type: string
      - name: x-v
        in: header
        description: The version of the API end point requested by the client. Must be set to a positive integer.
        required: false
        type: string
      responses:
        "200":
          description: Success
          headers:
            x-v:
              type: string
              description: The version of the API end point that the CDR Register has responded with.
          schema:
            $ref: '#/definitions/ResponseRegisterDataHolderBrandList'
        "400":
          description: Bad Request</br>Invalid industry path parameter
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "401":
          description: Invalid Bearer Token
        "406":
          description: Invalid x-v header</br>Invalid Accept header
      x-version: "1"
      x-scopes:
      - cdr-register:bank:read
  /{industry}/data-recipients/brands/{dataRecipientBrandId}/software-products/{softwareProductId}/ssa:
    get:
      tags:
      - Register
      summary: Get Data Recipient Software Statement Assertion (SSA)
      description: Get a Software Statement Assertion (SSA) for a Data Recipient software product on the CDR Register to be used for Dynamic Client Registration with a Data Holder Brand.
      operationId: GetSoftwareStatementAssertion
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: industry
        in: path
        description: "The industry the participant is retrieving data for (Banking, etc)"
        required: true
        type: string
        enum:
        - banking
      - name: dataRecipientBrandId
        in: path
        description: Unique id for the Accredited Data Recipient Brand that the Software Product is associated with in the CDR Register. This field is intended to be deprecated in preference for softwareProductId which has the same value
        required: true
        type: string
      - name: softwareProductId
        in: path
        description: Unique id for the Accredited Data Recipient Software Product in the CDR Register
        required: true
        type: string
      - name: Authorization Endpoint (Register)
        in: header
        description: "An Authorisation Token as per [RFC6750](https://tools.ietf.org/html/rfc6750)."
        required: true
        type: string
      - name: x-v
        in: header
        description: The version of the API end point requested by the client. Must be set to a positive integer.
        required: false
        type: string
      responses:
        "200":
          description: Success
          headers:
            x-v:
              type: string
              description: The version of the API end point that the CDR Register has responded with.
          schema:
            type: string
        "400":
          description: Invalid industry path parameter</br>Invalid SoftwareProductId
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "401":
          description: Invalid Bearer Token
        "403":
          description: Invalid BrandId
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "406":
          description: Invalid x-v header</br>Invalid Accept header
        "422":
          description: SSA fields invalid or incomplete
          schema:
            $ref: '#/definitions/ResponseErrorList'
      x-version: "2"
      x-scopes:
      - cdr-register:bank:read
  /{industry}/data-recipients/brands/software-products/status:
    get:
      tags:
      - Register
      summary: Get Data Recipient Software Products Statuses
      description: Endpoint used by participants to discover the statuses for software products from the CDR Register.
      operationId: GetSoftwareProductsStatus
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: industry
        in: path
        description: "The industry the participant is retrieving data for (Banking, etc)"
        required: true
        type: string
        enum:
        - banking
      - name: x-v
        in: header
        description: The version of the API end point requested by the client. Must be set to a positive integer.
        required: false
        type: string
      responses:
        "200":
          description: Success
          headers:
            x-v:
              type: string
              description: The version of the API end point that the CDR Register has responded with.
          schema:
            $ref: '#/definitions/SoftwareProductsStatusList'
        "400":
          description: Bad Request</br>Invalid industry path parameter
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "406":
          description: Invalid x-v header</br>Invalid Accept header
      x-version: "1"
  /{industry}/data-recipients/status:
    get:
      tags:
      - Register
      summary: Get Data Recipient Statuses
      description: Endpoint used by participants to discover the statuses for Data Recipients from the CDR Register.
      operationId: GetDataRecipientsStatus
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: industry
        in: path
        description: "The industry the participant is retrieving data for (Banking, etc)"
        required: true
        type: string
        enum:
        - banking
      - name: x-v
        in: header
        description: The version of the API end point requested by the client. Must be set to a positive integer.
        required: false
        type: string
      responses:
        "200":
          description: Success
          headers:
            x-v:
              type: string
              description: The version of the API end point that the CDR Register has responded with.
          schema:
            $ref: '#/definitions/DataRecipientsStatusList'
        "400":
          description: Bad Request</br>Invalid industry path parameter
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "406":
          description: Invalid x-v header</br>Invalid Accept header
      x-version: "1"
  /{industry}/data-recipients:
    get:
      tags:
      - Register
      summary: Get Data Recipients
      description: "Endpoint used by participants to discover data recipients and associated brands and software products, available in the CDR ecosystem."
      operationId: GetDataRecipients
      consumes:
      - application/json
      produces:
      - application/json
      parameters:
      - name: industry
        in: path
        description: "The industry the participant is retrieving data for (Banking, etc)"
        required: true
        type: string
        enum:
        - banking
      - name: x-v
        in: header
        description: The version of the API end point requested by the client. Must be set to a positive integer.
        required: false
        type: string
      responses:
        "200":
          description: Success
          headers:
            x-v:
              type: string
              description: The version of the API end point that the CDR Register has responded with.
          schema:
            $ref: '#/definitions/ResponseRegisterDataRecipientList'
        "400":
          description: Bad Request</br>Invalid industry path parameter
          schema:
            $ref: '#/definitions/ResponseErrorList'
        "406":
          description: Invalid x-v header</br>Invalid Accept header
      x-version: "2"
definitions:
  ResponseOpenIDProviderConfigMetadata:
    type: object
    required:
    - claims_supported
    - code_challenge_methods_supported
    - grant_types_supported
    - id_token_signing_alg_values_supported
    - issuer
    - jwks_uri
    - request_object_signing_alg_values_supported
    - response_types_supported
    - scopes_supported
    - subject_types_supported
    - tls_client_certificate_bound_access_tokens
    - token_endpoint
    - token_endpoint_auth_methods_supported
    properties:
      issuer:
        type: string
        description: URL using the https scheme with no query or fragment component that the CDR Register asserts as its Issuer Identifier
      jwks_uri:
        type: string
        description: "URL of the CDR Register's JSON Web Key Set [JWK] document. This contains the signing key(s) used to validate access tokens issued from the CDR Register. Note that this differs from the JWKS endpoint used to validate SSAs and CDR Register client authentication"
      token_endpoint:
        type: string
        description: URL of the CDR Register's OAuth 2.0 Token Endpoint
      claims_supported:
        type: array
        description: JSON array containing a list of the Claim Names of the Claims that the CDR Register supplies values for
        items:
          type: string
      id_token_signing_alg_values_supported:
        type: array
        description: "JSON array containing a list of the JWS signing algorithms (alg values) supported by the CDR Register for the ID Token to encode the Claims in a JWT. Given the CDR Register does not issue ID tokens, this field can be safely ignored"
        items:
          type: string
      subject_types_supported:
        type: array
        description: "JSON array containing a list of the Subject Identifier types that the CDR Register supports. Given the CDR Register does not issue ID tokens, this field can be safely ignored"
        items:
          type: string
      code_challenge_methods_supported:
        type: array
        description: "JSON array containing a list of Proof Key for Code Exchange (PKCE) [RFC7636] code challenge methods supported by this authorization server. Given the CDR Register does not support PKCE, this field can be safely ignored"
        items:
          type: string
      scopes_supported:
        type: array
        description: "JSON array containing a list of the OAuth 2.0 [RFC6749] scope values that the CDR Register supports"
        items:
          type: string
      response_types_supported:
        type: array
        description: JSON array containing a list of the OAuth 2.0 response_type values that the CDR Registrer supports
        items:
          type: string
      grant_types_supported:
        type: array
        description: JSON array containing a list of the OAuth 2.0 Grant Type values that the CDR Register supports
        items:
          type: string
      token_endpoint_auth_methods_supported:
        type: array
        description: JSON array containing a list of Client Authentication methods supported by this Token Endpoint
        items:
          type: string
      tls_client_certificate_bound_access_tokens:
        type: boolean
        description: Boolean value indicating server support for mutual TLS client certificate bound access tokens
      request_object_signing_alg_values_supported:
        type: array
        description: JSON array containing a list of the JWS signing algorithms (alg values) supported by the CDR Register for Request Objects.
        items:
          type: string
    description: Response containing the Open ID Provider Configuration Metadata
  ResponseJWKS:
    type: object
    required:
    - keys
    properties:
      keys:
        type: array
        description: The value of the "keys" parameter is an array of JWK values
        items:
          $ref: '#/definitions/JWK'
    description: Response containing the JSON Web Key Set
  JWK:
    type: object
    required:
    - alg
    - e
    - key_ops
    - kid
    - kty
    - "n"
    properties:
      alg:
        type: string
        description: The "alg" (algorithm) parameter identifies the algorithm intended for use with the key
      e:
        type: string
        description: The "e" RSA public exponent parameter
      key_ops:
        type: array
        description: The "key_ops" (key operations) parameter identifies the operation(s) for which the key is intended to be used
        items:
          type: string
      kid:
        type: string
        description: The "kid" (key ID) parameter is partially used to match a specific key. Note the "kid" parameter is not guaranteed unique and additional parameters should be used to progressively to identify a key within a set
      kty:
        type: string
        description: The "kty" (key type) parameter identifies the cryptographic algorithm family used with the key
      n:
        type: string
        description: The "n" RSA public modulus parameter
    description: Object representing a JSON Web Key
  ResponseRegisterDataHolderBrandList:
    type: object
    required:
    - data
    - links
    - meta
    properties:
      data:
        type: array
        description: Response data for the query
        items:
          $ref: '#/definitions/RegisterDataHolderBrand'
      links:
        $ref: '#/definitions/LinksPaginated'
      meta:
        $ref: '#/definitions/MetaPaginated'
    description: Response containing a list of CDR Register Data Holder Brand objects
  RegisterDataHolderBrand:
    type: object
    required:
    - authDetails
    - brandName
    - dataHolderBrandId
    - endpointDetail
    - industry
    - lastUpdated
    - legalEntity
    - logoUri
    - status
    properties:
      dataHolderBrandId:
        type: string
        description: Unique id of the Data Holder Brand issued by the CDR Register
      brandName:
        type: string
        description: The name of Data Holder Brand
      industry:
        type: string
        description: "The industry the Data Holder brand belongs to (Banking, etc)"
        enum:
        - banking
      logoUri:
        type: string
        description: Brand logo URI
        x-cds-type: URIString
      legalEntity:
        $ref: '#/definitions/LegalEntityDetail'
      status:
        type: string
        enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
      endpointDetail:
        $ref: '#/definitions/RegisterDataHolderBrandServiceEndpoint'
      authDetails:
        type: array
        items:
          $ref: '#/definitions/RegisterDataHolderAuth'
      lastUpdated:
        type: string
        format: date-time
        description: The date/time that the Data Holder Brand data was last updated in the Register
        x-cds-type: DateTimeString
  SoftwareProductsStatusList:
    type: object
    required:
    - softwareProducts
    properties:
      softwareProducts:
        type: array
        uniqueItems: true
        items:
          $ref: '#/definitions/SoftwareProductStatus'
  SoftwareProductStatus:
    type: object
    required:
    - softwareProductId
    - softwareProductStatus
    properties:
      softwareProductId:
        type: string
        description: Unique id of the software product issued by the CDR Register
      softwareProductStatus:
        type: string
        description: Software product status in the CDR Register
        enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
  DataRecipientsStatusList:
    type: object
    required:
    - dataRecipients
    properties:
      dataRecipients:
        type: array
        uniqueItems: true
        items:
          $ref: '#/definitions/DataRecipientStatus'
  DataRecipientStatus:
    type: object
    required:
    - dataRecipientId
    - dataRecipientStatus
    properties:
      dataRecipientId:
        type: string
        description: Unique id of the Data Recipient issued by the CDR Register
      dataRecipientStatus:
        type: string
        description: Data Recipient status in the CDR Register
        enum:
        - ACTIVE
        - SUSPENDED
        - REVOKED
        - SURRENDERED
  ResponseRegisterDataRecipientList:
    type: object
    required:
    - data
    properties:
      data:
        type: array
        description: Response data for the query
        items:
          $ref: '#/definitions/RegisterDataRecipient'
    description: Response containing a list of Data Recipients in the CDR Register
  RegisterDataRecipient:
    type: object
    required:
    - accreditationNumber
    - industry
    - lastUpdated
    - legalEntityId
    - legalEntityName
    - logoUri
    - status
    properties:
      legalEntityId:
        type: string
        description: Unique id of the Data Recipient Legal Entity issued by the CDR Register
      legalEntityName:
        type: string
        description: Legal name of the Data Recipient
      accreditationNumber:
        type: string
        description: CDR Register issued human readable unique number given to Data Recipients upon accreditation
      industry:
        type: string
        enum:
        - banking
      logoUri:
        type: string
        description: Legal Entity logo URI
        x-cds-type: URIString
      dataRecipientBrands:
        type: array
        uniqueItems: true
        items:
          $ref: '#/definitions/DataRecipientBrandMetaData'
      status:
        type: string
        enum:
        - ACTIVE
        - SUSPENDED
        - REVOKED
        - SURRENDERED
      lastUpdated:
        type: string
        format: date-time
        description: The date/time that the Legal Entity was last updated in the CDR Register
        x-cds-type: DateTimeString
  DataRecipientBrandMetaData:
    type: object
    required:
    - brandName
    - dataRecipientBrandId
    - logoUri
    - status
    properties:
      dataRecipientBrandId:
        type: string
        description: Unique id of the Data Recipient brand issued by the CDR Register
      brandName:
        type: string
        description: Data Recipient Brand name
      logoUri:
        type: string
        description: Data Recipient Brand logo URI
        x-cds-type: URIString
      softwareProducts:
        type: array
        uniqueItems: true
        items:
          $ref: '#/definitions/SoftwareProductMetaData'
      status:
        type: string
        enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
    description: Metadata related to Data Recipient Brand
  SoftwareProductMetaData:
    type: object
    required:
    - logoUri
    - softwareProductId
    - softwareProductName
    - status
    properties:
      softwareProductId:
        type: string
        description: Unique id of the Data Recipient software product issued by the CDR Register
      softwareProductName:
        type: string
        description: Name of the software product
      softwareProductDescription:
        type: string
        description: Description of the software product
      logoUri:
        type: string
        description: Software product logo URI
        x-cds-type: URIString
      status:
        type: string
        enum:
        - ACTIVE
        - INACTIVE
        - REMOVED
    description: Data Recipient Brand Software Products
  LegalEntityDetail:
    type: object
    required:
    - legalEntityId
    - legalEntityName
    - logoUri
    properties:
      legalEntityId:
        type: string
        description: Unique id of the organisation issued by the CDR Register
      legalEntityName:
        type: string
        description: Unique legal name of the organisation
      logoUri:
        type: string
        description: Legal Entity logo URI
        x-cds-type: URIString
      registrationNumber:
        type: string
        description: Unique registration number (if the company is registered outside Australia)
      registrationDate:
        type: string
        format: date
        description: Date of registration (if the company is registered outside Australia)
        x-cds-type: DateString
      registeredCountry:
        type: string
        description: Country of registeration (if the company is registered outside Australia)
      abn:
        type: string
        description: Australian Business Number for the organisation
      acn:
        type: string
        description: Australian Company Number for the organisation
      arbn:
        type: string
        description: Australian Registered Body Number.  ARBNs are issued to registrable Australian bodies and foreign companies
      industryCode:
        type: string
        description: "Industry Code for the organisation. [ANZSIC (2006)](http://www.abs.gov.au/anzsic)"
      organisationType:
        type: string
        description: Legal organisation type
        enum:
        - SOLE_TRADER
        - COMPANY
        - PARTNERSHIP
        - TRUST
        - GOVERNMENT_ENTITY
        - OTHER
    description: "The data that is common to all organisations, regardless of the type (e.g. company, trust, partnership, government)"
  RegisterDataHolderBrandServiceEndpoint:
    type: object
    required:
    - infosecBaseUri
    - publicBaseUri
    - resourceBaseUri
    - version
    - websiteUri
    properties:
      version:
        type: string
        description: "The major version of the high level standards. This is not the version of the endpoint or the payload being requested but the version of the overall standards being applied. This version number will be \"v\" followed by the major version of the standards as a positive integer (e.g. v1, v12 or v76)"
      publicBaseUri:
        type: string
        description: Base URI for the Data Holder's Consumer Data Standard public endpoints
        x-cds-type: URIString
      resourceBaseUri:
        type: string
        description: Base URI for the Data Holder's Consumer Data Standard resource endpoints
        x-cds-type: URIString
      infosecBaseUri:
        type: string
        description: Base URI for the Data Holder's Consumer Data Standard information security endpoints
        x-cds-type: URIString
      extensionBaseUri:
        type: string
        description: Base URI for the Data Holder extension endpoints to the Consumer Data Standard (optional)
        x-cds-type: URIString
      websiteUri:
        type: string
        description: Publicly available website or web resource URI
        x-cds-type: URIString
    description: Endpoints related to Data Holder Brand services
  RegisterDataHolderAuth:
    type: object
    required:
    - jwksEndpoint
    - registerUType
    properties:
      registerUType:
        type: string
        description: The type of authentication and authorisation mechanism in use
        enum:
        - SIGNED-JWT
      jwksEndpoint:
        type: string
        description: JWKS endpoint for private_key_jwt client authentication with Data Recipient
        x-cds-type: URIString
    description: Provides details of authorisation endpoints for Data Holders
  LinksPaginated:
    type: object
    required:
    - self
    properties:
      first:
        type: string
        description: URI to the first page of this set. Mandatory if this response is not the first page
      last:
        type: string
        description: URI to the last page of this set. Mandatory if this response is not the last page
      next:
        type: string
        description: URI to the next page of this set. Mandatory if this response is not the last page
      prev:
        type: string
        description: URI to the previous page of this set. Mandatory if this response is not the first page
      self:
        type: string
        description: Fully qualified link to this API call
  MetaPaginated:
    type: object
    required:
    - totalPages
    - totalRecords
    properties:
      totalPages:
        type: integer
        format: int32
        description: The total number of pages in the full set
      totalRecords:
        type: integer
        format: int32
        description: The total number of records in the full set
  ResponseErrorList:
    type: object
    required:
    - errors
    properties:
      errors:
        type: array
        items:
          $ref: '#/definitions/Error'
  Error:
    type: object
    required:
    - code
    - detail
    - title
    properties:
      code:
        type: string
        description: Error code
      title:
        type: string
        description: Error title
      detail:
        type: string
        description: Error detail
      meta:
        type: object
        description: Optional additional data for specific error types
        properties: {}
parameters:
  Authorization:
    name: Authorization Endpoint (Register)
    in: header
    description: "An Authorisation Token as per [RFC6750](https://tools.ietf.org/html/rfc6750)."
    required: true
    type: string
  XV:
    name: x-v
    in: header
    description: The version of the API end point requested by the client. Must be set to a positive integer.
    required: false
    type: string
  Industry:
    name: industry
    in: path
    description: "The industry the participant is retrieving data for (Banking, etc)"
    required: true
    type: string
    enum:
    - banking
