Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Awesome api app render macro
authHeaderName
linksColor#0052cc
showInfotrue
allowSpecUrlLoadfalse
primaryColor#0052CC
schemaStyletable
methodGetColor#0065FF
authHeaderValue
methodPutColor#6554c0
generalThemeconfluence_light
allowTryfalse
layoutHeight800
allowAdvancedSearchtrue
codeBg#F4F5F7
methodHeadColor#ffab00
navHoverTextColor
showComponentstrue
allowServerSelectiontrue
textColor#172B4D
methodPatchColor#ffab00
navBgColor#FAFBFC
codeFg#172B4D
navTextColor#172B4D
fontSizedefault
sortEndpointsBymethod
usePathInNavBartrue
navAccentColor#6554C0
methodDeleteColor#ff5630
headerColor#fff
allowAuthenticationfalse
bgColor#fff
allowSearchtrue
sortTagstrue
themelight
methodPostColor#36b37e
authTypeNone
inlineCodeFg#6554C0
resourceContentTypejson
showHeaderfalse
allowSpecFileLoadfalse
inlineCodeBg#F4F5F7
renderStyleread
layoutcolumn
headingText
navItemSpacingdefault
infoDescriptionHeadingsInNavbartrue
specUrl
navHoverBgColor
resourceTypeCONTENT
openapi: 3.0.1

servers:
  - url: https://<your-ozone-hh-server>

info:
  title: Headless Heimdall APIs
  contact:
    name: Ozone Financial Technology Limited
  description: |

    This document provides the OAS3 specification for the APIs provided by Headless Heimdall.

    These APIs are implemented by Ozone and should be called by the financial institution at the end of their authorization journeys.

    The interface allows for an financial institution to develop the user interface for customers without
    having to deal with the complexities of OIDC and FAPI and without having to gain a
    thorough understanding of the constraints placed by FAPI.

    __Version 2.2 Release 2024.34

    The interface consists of end-points

    - The __Headless Authorization End-point__ `GET /auth` should be called by the financial institution at the
    begining of an authorization code grant. This is typically immediately after it receives an authorization
    request from a TPP

    - The __Confirmation End-point__ `POST /auth/:interactionId/doConfirm` should be called by the
    financial institution to notify Heimdall that an interaction has completed successfully.

    - The __Failure End-point__ `POST /auth/:interactionId/doFail` should be called by the financial institution
    to notify Heimdall that the interaction has failed.

    #### Changes version:in Release 2024.34.1

tags: - name: headless-heimdall * paths:Refactored Security Scheme /auth:Objects to use common definitions get:across all API Hub APIs
  tags:  
    * Implemented -the headless-heimdallcorrect Security Requirements for this API description, summary:reflecting Startsecurity anpatterns authorisationavailable interactionin API Hub

    descriptionversion: |Version 2024.34.1

tags:
- name: headless-heimdall

security: The
Headless Authorization End-point  should{}
be called by- theOzoneConnectJwtAuth: financial[]
institution
atpaths:
the beginning of/auth:
the    get:
    interaction.  tags:
       The end-point validatesheadless-heimdall
all the parameters that are passed tosummary: itStart toan ensures that theauthorisation interaction

      description: |
        The Headless authorizationAuthorization requestEnd-point isshould FAPIbe compliant,called valid,by correctlythe signedfinancial andinstitution hasat the beginning of the
     appropriate client_id, redirect_uri etcinteraction.

        The end-point respondsvalidates withall onethe ofparameters thethat threeare outcomes:passed to it to ensures that the
   - __Success__: The end-point returns a status 200. The body contains a JSON object with the
        interaction and all the query parameters extracted from the OIDC request object   authorization request is FAPI compliant, valid, correctly signed and has the
        appropriate client_id, redirect_uri etc.

        The end-point responds with one of the three outcomes:

        - __Success__: The end-point returns a status 200. The body contains a JSON object with the
        interaction and all the query parameters extracted from the OIDC request object.

        - __Non-redirectable failure__: This indicates a failure to verify that the end-point was called
        through a valid OIDC client. The financial institution should render an error page and end the interaction.

        - __Redirectable failure__: This indicates a failure where the end-point was called by a potentially valid OIDC client.
        Headless Heimdall responds with a 303 redirect. The financial institution must respond to the TPP with the same redirect without any modifications.

        - __Non-redirectable failure__: This indicates a failure to verify that the end-point was called
        through a valid OIDC client. The financial institution should render an error page and end the interaction.### Processing a success response
        There are three key fields in the success response that financial institutions are likely to be interested in:

        - __Redirectable failure__`interaction.interactionId`: This indicatesis athe failureinteraction whereidentifier thethat end-pointshould wasbe calledused bywith
a potentially valid OIDC client.    subsequent calls   to Headless Heimdall respondswhen withthis aauthorization 303request redirect.is Thecompleted financialby institution must respond to the TPP with the same redirect without any modifications.the financial institution.

        - `interaction.params.claims.id_token.openbanking_intent_id`: If this interaction is for ###a ProcessingUK aOBIE successconsent
response        authorisation, Therethe areConsent threeId keyis fieldscontained in thethis successfield. responseThe that financial institutionsinstitution arecan likelyuse tothe beOzone interestedConsent in:Manager 
 API
      - `interaction.interactionId`: Thisto isretrieve the interactionconsent
identifier
that should be used with    - `tpp.directoryRecord`: Where Ozone is subsequentintegrated callswith toa HeadlessDirectory HeimdallService, whenthis thiscontains authorizationa requestrecord
is completed by the financial institution.   of the TPP record as held on -the `interactionsdirectory.consentIdsList`: The structure of Consentthe Idrecord iswill containeddepend inon thisthe fielddirectory. TheDirectory financial institutionrecord canas useheld theby Ozone Consent Manager APIin base 64 encoded format.


      to retrieve the### consentParameters
        OAS3 - `tpp.directoryRecord`: Where Ozone is integrated withdoes not have a way to indicate a Directoryflexible Service,set thisof containsquery aparameters.
record
        ofWhen thecalling TPPthis recordAPI, asthe heldfinancial oninstitution theshould directory.pass Theon structure ofall the record willquery dependparameters onor thehash directory.parameters Directoryreceived recordfrom asthe heldTPP
by Ozone in base 64 encoded format.  in the authorization request.

    ### Parameters operationId: headlessAuthorization

     OAS3 doesresponses:
not have a way to indicate a flexible set"200":
of query parameters.        description: |
When calling this API, the financial institution should pass on all the queryThis parametersindicates orthat hashthe parameters received from thewere TPPsuccessfully validated.

      in the authorization request.   The financial institution should continue operationId:with headlessAuthorizationthe next stages of the interaction, keeping track responses:of the
       "200":     returned interactionId.

   description: |      content:
      This indicates that the parameters were successfully validated.application/json:
              Theschema:
financial institution should continue with the next stages of the interaction, keeping track of the  $ref: '#/components/schemas/AuthSuccessResponse'

        returned interactionId."303":
            contentdescription: |
           application/json: This indicates that the parameters were not successfully verified.

    schema:        However, there were no indications that the request originated $ref: '#/components/schemas/AuthSuccessResponse'

from an invalid client.

      "303":      The financial institution should respond description:to |the customer with a redirect         This indicates thatto the URI returned by the parametersAPI
were not successfully verified.         (including the query or hash However,parameters thereincluded werein nothe indicationsURL)
that
the request originated from an invalid client.  "400":
          description: The|
financial institution should respond to the customer with a redirect to the URIThis returnedindicates bythat the parameters APIwere not successfully verified.

        (including  the query orHeimdall hashcould parametersnot includedverify inthat the URL)request originated from a valid client.

   "400":         The financial institution description:should |render an error page.

        This indicates that the parametersThe werefinancial notinstitution successfully verified.

   __must not__ redirect back to the TPP.

       Heimdall could not verifycontent:
that the request originated from a valid client.     application/json:
        The financial institution should render an errorschema:
page.              The financial institution __must not__ redirect back to the TPP.

 $ref: '#/components/schemas/AuthErrorResponse'

  /auth/:interactionId/doConfirm:
    post:
      operationId: doConfirm
content:      tags:
      application/json:  - headless-heimdall
      summary: Ends an authorisation interaction schema:with a success response

      description: |
    $ref: '#/components/schemas/AuthErrorResponse'   The Confirmation End-point should be security:called by the financial institution once the user interaction
- bearerAuth: []    /auth/:interactionId/doConfirm:  has been completed post:and the resource owner has authorized access.
operationId:
doConfirm       tags: The doConfirm call updates the interaction state generates -an headless-heimdallOIDC `code` and the rest of the
summary: Ends an authorisation interaction with a success response that should be returned to the  description:TPP.
|
        The financial institution Confirmationcan End-pointspecify shouldthe beset calledof byclaims theto financialbe institutionadded onceto the user interaction
 id_token. Heimdall creates an
      has been completedid_token andwith thethese resourceclaims owneralong haswith authorizedany access.claims required by FAPI and OIDC.

   The doConfirm call updates the interactionHeimdall statereturns generatesa an303 OIDCwith `code`a andredirect theuri. restThis ofresource theowner should be redirected to this URI.

 response that should be returned to the TPP.### Parameters
        The financialrequest institutionbody can specifycontain an thearbitrary set of claims to be added to the id_token. Heimdall creates an
        `application/x-www-form-urlencoded` name-value pairs.

        These are added by Heimdall to the id_token. withThe claim thesename claimsis alongset withto anythe claimsparameter requiredname
by FAPI and OIDC.     and the claim value to Heimdallthe returnsparameter avalue.
303
with a redirect uri. This resource owner should beClaim redirectednames toprefixed thisby URI`heimdall.` act as control parameters for the tokens that are ###produced.
Parameters        These Theclaims requestare bodynot canadded containto an arbitrary set of `application/x-www-form-urlencoded` name-value pairs.
the id_token.


      requestBody:
        Thesecontent:
are added by Heimdall to the id_token. The claim name is set to the parameter name application/x-www-form-urlencoded:
            schema:
and the claim value to the parameter value.       type: object
 Claim names prefixed by `heimdall.` act as control parameters for the tokens that areproperties:
produced.         These claims are not added to the id_token."heimdall.suppressRefreshToken":
        requestBody:          contenttype: boolean
         application/x-www-form-urlencoded:         description: |
   schema:               type: object Suppresses the generation of a refresh token.

      properties:              If set  "heimdall.suppressRefreshToken":
     to true, a refresh token is not generated.

           type: boolean        If set to false, a refresh token is generated only if description:Heimdall |has been
                   Suppresses theconfigured generationto ofsupport athe refresh_token tokengrant type.

                    If setnot to truespecified, aHeimdall refreshtreats tokenthis isas not generatedfalse.

                    IfNote setthat tothis false,feature a*must refreshnot* tokenbe isused generatedfor onlyCBUAE
if
Heimdall has been              "heimdall.accessTokenValidity":
      configured to support the refresh_token grant type.           type: integer
          If not specified, Heimdall treats this as false. description: |
                   Note thatSpecifies this(in featureno *must not* be used for CBUAE

    of seconds) how long the generated access token should be valid for.

          "heimdall.accessTokenValidity":          If not specified, the system default is used.

type: integer                   description:Note |that this feature *must not* be used for CBUAE

           Specifies (in no of seconds) how long the generated access token should be valid for. "heimdall.refreshTokenValidity":
                  type: integer
          If not specified, the system default is used. description: |
                   Note thatSpecifies this(in featurenumber *must not* be used for CBUAE

of seconds) how long the generated refresh token
               "heimdall.refreshTokenValidity":     should be valid for.

         type: integer          If not specified, the system default is used.

description: |                   Note that Specifiesthis (infeature number*must ofnot* seconds)be howused longfor theCBUAE
generated
refresh token             additionalProperties: true

     should beparameters:
valid for.       - $ref: '#/components/parameters/interactionId'

      responses:
    If not specified, the system"303":
default is used.        description: |
            NoteHeimdall thatreturns thisa featureredirect *musturi not*that becontains usedan forauthorization CBUAEcode along with
            additional additionalProperties:parameters trueas required by OIDC.

   parameters:         -In $ref: '#/components/parameters/interactionId'

      responses:
case an internal error occurred while processing the request, heimdall returns
       "303":     an error parameter.

  description: |         In both cases, the Heimdallfinancial returnsinstitution amust redirect urithe thatresource containsowner anto authorization code along with
the redirect uri.

  /auth/:interactionId/doFail:
    post:
  additional parameters as required byoperationId: OIDC.doFail
      tags:
      In case an- internalheadless-heimdall
error occurred while processing the request, heimdallsummary: returnsEnds an authorisation interaction with a failure response

    an error parameter.description: |
        The failure End-point should Inbe bothcalled cases,by the financial institution mustonce redirect the resource owner to the redirect uri.user interaction
        security:has been completed and has resulted in a failure -to bearerAuth: []gain access.

  /auth/:interactionId/doFail:     post: (e.g. when the user declines to operationId:authorise, doFaildoes not provide the appropriate credentials etc.)
tags:
        -The headless-heimdalldoFail call updates the interaction state, generates summary:an EndsOIDC an`error` authorisationand interactionthe withrest aof failurethe
response        description:response |that should be returned to the TPP.

 The failure End-point should be called by theThe financial institution oncecan specify the user`error` interactionand `error_description` as x-www-form-urlencoded parameters.

   has been completed and has resultedHeimdall inreturns a failure303 with toa gainredirect accessuri. This resource owner should be redirected to this  (e.gURI.
when
the user declines to authorise, does notrequestBody:
provide the appropriate credentials etc.)     content:
    The doFail call updates the interaction state, generates an OIDC `error` and the rest of the application/x-www-form-urlencoded:
            schema:
    response that should be returned to the TPP.   type: object
     The financial institution can specify the `error` and `error_description` as x-www-form-urlencoded parameters.properties:
           Heimdall returns a 303 with aerror:
redirect uri. This resource owner should be redirected to this URI.        requestBodytype: string
       content:           application/x-www-form-urlencodeddescription: |
           schema:         An OAuth2.0 or OIDC error

type: object               properties:error_description:
                  type: string

      errorparameters:
        - $ref: '#/components/parameters/interactionId'

      typeresponses:
string        "303":
          description: |
            Heimdall returns a redirect uri that contains an authorization code Analong OAuth2.0with
or OIDC error          additional parameters as required by OIDC.

 error_description:           In case an internal error occurred while processing type:the stringrequest, heimdall returns
     parameters:       an error -parameter.
$ref:
'#/components/parameters/interactionId'        responses:    In both cases, the financial "303":institution must redirect the resource owner to the redirect uri.

descriptioncomponents:
|  schemas:
    AuthSuccessResponse:
     Heimdall returnstype: aobject
redirect uri that contains an authorization codeproperties:
along with       interaction:
     additional parameters as required by OIDC.type: object
          properties:
 In case an internal error occurred while processing the request, heimdall returnsinteractionId:
            an error parameter.type: string
            In both cases,description: the financial institution must redirect the resource owner to the redirect uri.An identifier for this interaction
            securityparams:
        - bearerAuth: []  components:   schemasdescription: |
   AuthSuccessResponse:       type: object     Query parameters properties:unbunbled from the original authorization  request.

 interaction:           type: object   This includes both query parameters and hash parameters.
properties:
            interactionId:    This also includes parameters extracted from the OIDC request object.
 type: string            type: object
 description: An identifier for this interaction        properties:
    params:            client_id:
  description: |               description: |
Query parameters unbunbled from the original authorization request.             The clientId that the caller Thisclaims includesto bothhave.
query
parameters and hash parameters.                 At Thisthis alsostage, includesHeimdall parametershas extractedverified fromthat the OIDCclient requestid objectexists.
 
            type: object     type: string
        properties:        response_type:
        client_id:          type: string
       description: |        scope:
            The clientId that the caller claims totype: have.string
                request:
    At this stage, Heimdall has verified that the client id exists.    type: string
             type: string  scopes:
              response_type:    description: |
             type: string      The requested scope in the authorization request broken down into an scope:array
                  type: array
string                  requestitems:
                    type: string
                scopesclaims:
                  description: |
                    The requested scope in the authorization request broken down into an arrayclaims in the authorization request.
                  type: arrayobject
                  itemsadditionalProperties: true
              additionalProperties: true
    type: string       claims:
         claims:     type: object
            descriptionstatus:
|              type:    string
  The requested claims in the authorization request.    consentId:
              type: objectstring
              description: An identifier for additionalProperties: trueconsent
              additionalPropertiesdeprecated: true
            claimsconsentIdsList:
              type: objectarray
            status:  description: |
           type: string             consentId:
   Consent Ids associated with the interaction.
          type: string     Note that RAR requests may contain multiple consents. However, support description:for Anthis identifieris fornot consentrequired in the CBUAE 2024 standards and LFIs may consider
     deprecated: true          that this array consentIdsList:may have a single value.
          type: array   items:
           description: |    type: string
        tpp:
  Consent Ids associated with the interaction.   $ref: "#/components/schemas/tpp"

    AuthErrorResponse:
      Notetype: thatobject
RAR requests may contain multiple consents. However,properties:
support for this is not required in the CBUAEnoRedirect:
2024 standards and LFIs may consider     type: boolean
        error:
 that this array may have a single value.  type: string
           itemserror_description:
          type: string
    type: string   interactionId:
     tpp:     type: string

   $ref: "#/components/schemas/tpp"tpp:
      AuthErrorResponsetype: object
     type description: object|
      properties:  The TPP record as held by Ozone.
noRedirect:
        If Ozone type:TPP booleanConnect has been integrated into a directory, the `directoryRecord` error:provides the TPP's directory record as held by Ozone in base type:64 stringencoded format.

      error_descriptionrequired:
        - clientId
  type: string     - orgId
  interactionId:      - softwareStatementId
   type: string    - tppName
tpp:
      typeproperties:
 object       descriptionclientId:
|         The TPPtype: recordstring
as held by Ozone.       description: The clientId Iffor Ozonethe TPP Connect has been integrated into a directory, the `directoryRecord` provides the TPP's directory record as held by Ozone in base 64 encoded format.as issued by Ozone

        orgId:
          type: string
        required:  description: The organization id for the TPP
-
clientId        softwareStatementId:
- orgId         -type: softwareStatementIdstring
        - tppName description: The organization id for the TPP
properties:
        clientIdtppName:
          type: string
          description: The clientIdname forof the TPP as
issued
by Ozone          orgIddirectoryRecord:
          type: string
          description: The organizationlatest idcopy forof the TPP directory record if the TPP has registered with a directory
softwareStatementId:
  parameters:
    interactionId:
  type: string   name: interactionId
      descriptionin: query
The organization id for the TPP schema:
        tppNametype: string
         type: string
  required: true
       description: TheIdentifier namefor of the TPPinteraction


  securitySchemes:
    directoryRecordOzoneConnectJwtAuth:
      description: | 
     type: string  Communications between the API Hub and the LFI Ozone description:Connect Theimplementation latestare copysecured ofusing the TPP"JWT directoryAuth" recordmechanism, ifwhere the TPP has registered with Client presents a signed JSON Web Token as a directorycredential.
   parameters:     interactionId:
      name: interactionId The Server MUST verify the signature in: queryorder to authenticate the Client.

 schema:       Please note type:that stringthe value of the `scheme` parameter is required:not truea registered HTTP Authentication Scheme, to indicate description:it Identifieris forspecific theto interactionOzone Connect. Please refer to securitySchemes:API Hub documentation for further bearerAuth:details.
      type: http
      scheme: bearer
      bearerFormat: JWTOzone-Connect-JWT-Auth

2. Attachments

View file
namecbuae-headless-heimdall-specopenapi.yaml