{"openapi":"3.1.0","info":{"title":"QR+ Service Provider Registry API","version":"1.2.0","description":"The Paylink Registry service is used by Service Providers to manage their QR+ services and as an authoritative reference to build local, cached service registries for use during QR+ enrichment flows.\n\nThe high level entity relationships exposed by this interface are:\n\n![sequence diagram](data:image/png;base64,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)\n\nThe api exposes the following perspectives:\n\n- **Service Administration:** The `/profile` endpoints expose functionality for an authorized user to administer Service Provider services. This includes setting up Authorization Authorities and linking these authorities to Payer- and Payee- services.\n- **Service Registry:** The `/service-providers` and `/flow-types` endpoints expose a registry of all service providers and registered services. This enables service provider infrastructure to create local mapping tables to derive host location and authorization authorities during QR+ flows.\n","x-logo":{"url":"https://imagedelivery.net/ipmJ55bBDVfBJxiG3wVbtg/c6121c60-dcc9-4bf5-f7d1-72b607507c00/public"}},"servers":[{"url":"http://localhost:3000"}],"tags":[{"name":"Copyright and Liability Disclaimer","description":"<details>\n<summary>Full Copyright and Liability Disclaimer</summary>\n\nThe QR+ Standard has been developed by the South African Reserve Bank for use by participants in the National Payment System. All intellectual property rights, including copyright and any related rights in and to the QR+ Standard, are owned by, or vest in, the South African Reserve Bank. No participant or other person acquires any ownership right, title or interest in the QR+ Standard by virtue of its access to, implementation of or use of the QR+ Standard. The QR+ Standard may not be copied, reproduced, adapted, amended, transferred, ceded, assigned, sublicensed, published, distributed or otherwise made available to any third party, in whole or in part, without the prior written consent of the South African Reserve Bank, except to the extent expressly permitted by the South African Reserve Bank.\n\nParticipants are responsible for developing, implementing, maintaining and operating their own systems, processes and controls to ensure compliance with the QR+ Standard and with all applicable laws, regulatory requirements and industry standards. The South African Reserve Bank does not warrant that the QR+ Standard, or any implementation thereof by a participant, will be error-free, uninterrupted, fit for any particular purpose or suitable for any participant’s specific operational or commercial requirements.\n\nTo the fullest extent permitted by law, the South African Reserve Bank shall not be liable for any loss, damage, claim, cost or expense, whether direct, indirect, special, incidental or consequential, arising from or in connection with a participant’s access to, reliance on, implementation of, or use of the QR+ Standard, including any failure by a participant to comply with the QR+ Standard or any applicable legal or regulatory requirement.\n\n</details>\n"},{"name":"Version Comments","description":"<details>\n    <summary>Version: 1.2.0 (2026-06-05)</summary>\n\nRelease candidate 1.2.0-rc3 approved for publication\n\n</details>\n"},{"name":"Profile - Services","description":"As a Service Provider, use these endpoints to manage your services.\n"},{"name":"Profile - Authorization Authorities","description":"As a Service Provider, use these endpoints to manage your authorization authorities.\n"},{"name":"Service Provider Registry","description":"Use the `/service-providers` endpoints to discover the owners of services.\n"},{"name":"Services Registry","description":"Use these endpoints to create a local cache of QR+ services.\n\n### For Payer Service Providers (PrSP)\n\nAs PrSP you will create a local Registry Cache to:\n\n- Do a lookup to find the PeSP service host address corresponding to the spIndicator extracted from a scanned Paylink\n- Authenticate PeSP calls to your API and confirm their rights to execute specific QR+ flow types.\n\n**Building Payee Services Registry:**\n\n1. Get flow types: `GET /flow-types`\n2. Retrieve all services by:\n   1. Either, retrieving the service list by flow type `GET /flow-types/{flowType}/payee-services` and then, for each service, doing `GET /flow-types/{flowType}/payee-services/{serviceId}`\n   2. Or, downloading the full registry `GET /flow-types/{flowType}/payee-registry-cache`\n3. Build a local cache for:\n   1. Paylink service provider host resolution `(encoding, flowTypeIndicator, spIndicator) → {host}`\n   2. JWT validation `(iss, sub, aud) → {authzAuthority keys}`\n\n### For Payee Service Providers (PeSP)\n\nAs a PeSP you will create a local Payer Services Registry to:\n\n- Do a lookup to find the PrSP service host address corresponding to the spIndicator extracted from a scanned Paylink\n- Authenticate PrSP calls to your API and confirm their rights to execute specific QR+ flow types.\n\n**Building Payer Services Registry:**\n\n1. Get flow types: `GET /flow-types`\n2. Retrieve all services by:\n   1. Either, retrieving the service list by flow type `GET /flow-types/{flowType}/payer-services` and then, for each service, doing `GET /flow-types/{flowType}/payer-services/{serviceId}`\n   2. Or, downloading the full registry `GET /flow-types/{flowType}/payer-registry-cache`\n3. Build a local cache for:\n   1. Paylink service provider host resolution `(encoding, flowTypeIndicator, spIndicator) → {host}`\n   2. JWT validation `(iss, sub, aud) → {authzAuthority keys}`\n"},{"name":"Implementation Requirements","description":"### Registry Cache Refresh\n\nA key responsibility of the QR+ Registry is to enable Clients to refresh their local Registry Cache.\n\n- Clients MUST NOT initiate a cache refresh request more than once in any 30 minute period\n- Clients SHOULD initiate a cache refresh request every 3 hours\n- Clients MUST initiate a cache refresh request at least once every 24 hours. If a Client has not executed a successful cache refresh request within this period, it should consider the cache stale and NOT execute QR+ flows using the configuration data.\n\n#### Registry Config Data Migration\n\nClient implementations of the Registry API must take care to assure system configuration integrity over the cache refresh cycles described above. All configuration changes must assure secure and functional operation of all current Registry Cache versions. To achieve this:\n\n- When updating the service `host` address, the service MUST be available at both old and new address for the next 24 hours\n- When associating a new Authorization Authority public key with a service (either by linking a Authorization Authority to a service or by adding a new key) the key MUST only enter use 24 hours after the update\n- When deploying a new Authorization Authority key for authentication, the related public key MUST be associated with the service for at least 24 hours.\n- When disassociating an Authorization Authority public key from a service (either by unlinking a Authorization Authority from a service or by deleting a key) the key MUST NOT be in use and the alternative MUST have been configured for at least 24 hours\n\n### Bearer Token Validation\n\nThis API uses a JWT based (RFC7519), http bearer token security scheme. The JWT MUST be signed by an authorization authority registered to the QR+ Registry against a Service Provider profile. The API user identity is derived from the JWT issuer and key id.\n\n### JWT claims\n\nThe JWT MUST contain the following Claims:\n\n- `iss` : Issuer Claim containing the `authzAuthorityId` as allocated by the QR+ Registry\n- `sub` : The Service Provider's `spId` as allocated by the QR+ Registry.\n- `aud` : Audience Claim containing the value `registry`\n- `exp` : Expiration time Claim defining a time of expiry for this token\n- `permissions` : An array of permissions for authorization from:\n  - `view:profile` - Can view SP registry profile,\n  - `update:profile` - Can update SP registry profile,\n  - `view:registry` - Can view registry and build local cache\n\n### JWT header\n\nThe JWT header must contain the following parameters:\n\n- `alg` : The JOSE algorithm used for JWT generation\n- `kid` : The key id of the authorization authority key used to generate the JWT\n\n### JWT Validation\n\nImplementers of this API must satisfy the following minimum requirements when validating a presented JWT:\n\n- **Best Practice:** Follow best practices as outlined in RFC8725 and related standards\n- **User Identity:** The API user identity MUST be determined as the Service Provider (`sub`) only when (i) the Issuer claim (`iss`) matches an Authorization Authority belonging to the Service Provider and (ii) The key id of the key used is linked to the Authorization Authority\n- **Algorithms:** JWT MUST fail if the `alg` property in the header is set to 'none' or if it does not align with the key type of the referenced kid\n- **Audience validation:** The `aud` Claim MUST be `registry` to access Registry functionality.\n- **Registry authority validation:** The referenced issuer Authorization Authority MUST have its `isRegistryAuthority` flag on the Registry set to `true`.\n"},{"name":"Glossary","description":"| Term                            | Description                                                                                                                                                                                                                                                                   |\n| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| Acceptance Option               | A payload specifying a payment rail supported by a Payee for payment. (Option Payload)                                                                                                                                                                                        |\n| Anchor Domain                   | The common domain used for all Paylink web URIs, allowing deep linking through officially registered mobile applications.                                                                                                                                                     |\n| Authorization Authority         | An entity, managed on the QR+ Registry, which represents a Service Provider IdP that issues bearer tokens to authenticate API calls. A Service Provider manages Authorization Authorities according to their governance and security policies.                                |\n| Extended Number Encoded Paylink | A 27-character alphanumeric Paylink format (ZA-FTI-SPII-PLV) optimized for Code128 barcode scanning with extended PLV namespace for medium lifespan experiences.                                                                                                              |\n| Facilitated Experience          | The experience where the Scanner uses a Paylink Facilitator Application to start a QR+ Flow.                                                                                                                                                                                  |\n| Flow                            | A Flow is the set of actions executed between a PrSP and PeSP as part of one QR+ session.                                                                                                                                                                                     |\n| Flow Record                     | An audit trail record, created by both PrSP and PeSP, capturing all Service Provider Interactions exchanged as part of a unique Flow.                                                                                                                                         |\n| Flow Session                    | A time-bound session that tracks the lifecycle of a Flow with states OPEN, TERMINATED, or EXPIRED. A PrSP only process PeSP Requests while a Flow Session is OPEN.                                                                                                            |\n| Flow Tracker                    | A structured object within Service Provider Interactions containing Flow identifiers and Message Sequence Numbers to coordinate and track messages within a Flow.                                                                                                             |\n| Flow Type                       | A classification of QR+ Flows which govern use case requirements, Paylink lifespan constraints, supported encodings, and security requirements (e.g., pep-general, pep-shortcode, prp-connected, prp-disconnected). Service Providers are licensed for individual Flow Types. |\n| Flow Type Indicator             | An encoding-specific identifier that indicates which Flow Type is being used (e.g., 'general' representing the pep-general Flow Type in URI encoded Paylinks and '1' representing the prp-shortcode Flow TYpe in number encoded Paylinks).                                    |\n| Identity Request                | A QR+ Request for Payer identity information initiated by the PeSP on behalf of the Payee.                                                                                                                                                                                    |\n| Loyalty Request                 | A QR+ Request for Payer loyalty membership information initiated by the PeSP on behalf of the Payee.                                                                                                                                                                          |\n| Message Sequence Number         | An incrementing counter maintained by each Service Provider to track the ordering and uniqueness of messages sent within a Flow. Used for audit, idempotency and replay detection.                                                                                            |\n| Number Encoded Paylink          | A 13-digit numeric Paylink format (FTI-SPII-PLV-Luhn) optimized for human reproduction via voice or manual keypad entry with built-in error detection.                                                                                                                        |\n| Payee (actor)                   | A party who interacts with a Paylink with the intention of receiving payment. The Payee can be either a Scanner or a Presenter depending on the use case.                                                                                                                     |\n| Payee Service Provider (PeSP)   | A registered organization that executes QR+ enrichment flows on behalf of a Payee. The PeSP may deploy Paylink Provider and/or Paylink Facilitator functionality depending on its supported experiences.                                                                      |\n| Payer (actor)                   | A party who interacts with a Paylink with intention to pay. The Payer can be either a Scanner or a Presenter depending on the use case.                                                                                                                                       |\n| Payer Service Provider (PrSP)   | A registered organization that executes QR+ enrichment flows on behalf of a Payer. The PrSP may deploy Paylink Provider and/or Paylink Facilitator functionality depending on its supported experiences.                                                                      |\n| Paylink                         | A structured identifier, encoded and presented in various formats, used by Payers and Payees to initiate a financial interaction.                                                                                                                                             |\n| Paylink actioning               | The Scanner scanning the Paylink and submitting it to its Service Provider for processing.                                                                                                                                                                                    |\n| Paylink Encoding Format         | A Paylink Encoding Format is a specific way the Paylink attributes are encoded. For example, URI encoded format.                                                                                                                                                              |\n| Paylink Facilitator (role)      | A PrSP or PeSP organization registered to process Paylinks for Scanners.                                                                                                                                                                                                      |\n| Paylink generation              | An exchange between the Presenter (Payee or Payer) and the Service Provider (PeSP or PrSP) to generate a new Paylink.                                                                                                                                                         |\n| Paylink presentment             | The Presenter presenting the Paylink to the Scanner for scanning.                                                                                                                                                                                                             |\n| Paylink Presentment Format      | A Paylink presentment format specifies the technology used to present the Paylink for scanning. For example, QR code, Barcode and web click.                                                                                                                                  |\n| Paylink Provider (role)         | A PrSP or PeSP registered to create Paylinks for Presenters.                                                                                                                                                                                                                  |\n| Paylink Quarantine Period       | The period, after a Paylink has been cancelled, during which the PLV must not be used for a new Paylink.                                                                                                                                                                      |\n| Paylink resolution              | The Paylink Facilitator presenting the Paylink to the Paylink Provider to initiate a QR+ flow.                                                                                                                                                                                |\n| Paylink Value (PLV)             | The cryptographically secure random identifier component within a Paylink that uniquely identifies a specific Paylink instance.                                                                                                                                               |\n| Payment Confirmation            | A rail-specific payload passed by the PrSP to the PeSP confirming successful initiation of a Push Payment, without claiming settlement status.                                                                                                                                |\n| Payment Conclusion              | A rail-specific payload passed by the PeSP to the PrSP to provide its view on the outcome of a Payment Request.                                                                                                                                                               |\n| Payment Delegation              | A rail-specific payload passed by the PrSP to the PeSP containing Pull Payment credentials and transaction details, delegating payment initiation to the PeSP.                                                                                                                |\n| Payment Request                 | A QR+ Request for payment initiated by the PeSP on behalf of the Payee.                                                                                                                                                                                                       |\n| Presenter (role)                | A Payer or Payee who presents a Paylink to a Scanner party to action. The Presenter interacts with her Service Provider to create the Paylink according to her requirements.                                                                                                  |\n| Pull Payment                    | A payment mechanism that is initiated by a PeSP.                                                                                                                                                                                                                              |\n| Push Payment                    | A payment mechanism that is initiated by a PrSP.                                                                                                                                                                                                                              |\n| QR+ Flow Orchestration          | The process of coordinating actions between the PrSP, PeSP, Payer and Payee to achieve a successful transaction outcome.                                                                                                                                                      |\n| QR+ Registry Service            | A service operated by NPU to enable service discovery of registered Service Providers and Services.                                                                                                                                                                           |\n| QR+ Service Provider            | An organization registered to take part in QR+ flows on behalf of Payers and/or Payees.                                                                                                                                                                                       |\n| Scanner (role)                  | A party who actions a Paylink by submitting it to their chosen Paylink Facilitator.                                                                                                                                                                                           |\n| Service Provider Indicator      | An encoding-specific identifier, assigned by SARB to a registered Service Provider, which allows all Service Providers to identify them as the creator of a Paylink.                                                                                                          |\n| Service Provider Interaction    | A request and response exchange between a PrSP and a PeSP during a Flow, captured for audit trail, Flow analysis, and idempotency purposes.                                                                                                                                   |\n| Signed CBOR Encoded Paylink     | A cryptographically signed Concise Binary Object Representation (CBOR) Paylink format using ECDSA signatures for high-security use cases requiring cryptographic attestation.                                                                                                 |\n| URI Encoded Paylink             | A non-URL, RFC3986-compliant URI format for Paylinks (`qr-plus://<anchor domain>/v1/<flowTypeIndicator>/<spIndicator>/<plv>`) supporting deep linking and extended lifespans.                                                                                                 |\n"}],"security":[{"bearerAuth":["view:registry"]}],"paths":{"/profile/services":{"get":{"operationId":"getProfileServices","summary":"Get SP services list","description":"As SP Administrator, use this endpoint to retrieve a list of all services configured for your Service Provider.","tags":["Profile - Services"],"security":[{"bearerAuth":["view:profile"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileServicesSummaryInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/services/{serviceId}":{"get":{"operationId":"getProfileService","summary":"Get SP service info","description":"As SP Administrator, use this endpoint to retrieve detailed information about a specific service configured for your Service Provider.","tags":["Profile - Services"],"security":[{"bearerAuth":["view:profile"]}],"parameters":[{"in":"path","name":"serviceId","description":"Service Id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfileServiceInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/services/{serviceId}/authz-authorities":{"post":{"operationId":"linkAuthzAuthority","summary":"Link service authorization authority","description":"As SP Administrator, use this endpoint to link an authorization authority to a service, enabling token-based authentication for that service.","tags":["Profile - Services"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"serviceId","description":"Service Id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LinkAuthzAuthorityPayload"}}},"required":true},"responses":{"204":{"description":"No Content"},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/services/{serviceId}/authz-authorities/{authzAuthorityId}":{"delete":{"operationId":"unlinkAuthzAuthority","summary":"Unlink service authorization authority","description":"As SP Administrator, use this endpoint to unlink an authorization authority from a service, removing its ability to authorize token-based authentication for that service.","tags":["Profile - Services"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"serviceId","description":"Service Id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId"}},{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}}],"responses":{"204":{"description":"No Content"},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/services/{serviceId}/host":{"post":{"operationId":"setServiceHost","summary":"Set service host","description":"As SP Administrator, use this endpoint to configure the host URL for a service where API calls should be directed.","tags":["Profile - Services"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"serviceId","description":"Service Id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetServiceHostPayload"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetServiceHostInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}},"delete":{"operationId":"deleteServiceHost","summary":"Delete service host","description":"As SP Administrator, use this endpoint to remove the configured host URL for a service. This effectively decommissions the service from the network.","tags":["Profile - Services"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"serviceId","description":"Service Id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId"}}],"responses":{"204":{"description":"No Content"},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/authz-authorities":{"get":{"operationId":"getAuthzAuthorities","summary":"Get authorization authorities list","description":"As SP Administrator, use this endpoint to retrieve a list of all authorization authorities configured for your Service Provider.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["view:profile"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthoritySummaryInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthoritySummaryInfo"}}}}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}},"post":{"operationId":"createAuthzAuthority","summary":"Create authorization authority","description":"As SP Administrator, use this endpoint to create a new authorization authority for your Service Provider to manage API token authentication.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["update:profile"]}],"requestBody":{"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityPayload"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityPayload"}}}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}}}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/authz-authorities/{authzAuthorityId}":{"get":{"operationId":"getAuthzAuthority","summary":"Get authorization authority","description":"As SP Administrator, use this endpoint to retrieve detailed information about a specific authorization authority.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["view:profile"]}],"parameters":[{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}}}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}},"post":{"operationId":"patchAuthzAuthority","summary":"Patch authorization authority","description":"As SP Administrator, use this endpoint to update specific fields of an authorization authority configuration.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityPatch"}}},"required":true},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityInfo"}}}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}},"delete":{"operationId":"deleteAuthzAuthority","summary":"Delete authorization authority","description":"As SP Administrator, use this endpoint to delete an authorization authority. ","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}}],"responses":{"204":{"description":"No Content"},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/authz-authorities/{authzAuthorityId}/keys":{"post":{"operationId":"addAuthzAuthorityKey","summary":"Add authorization authority key","description":"As SP Administrator, use this endpoint to add a cryptographic public key (JWK) to an authorization authority for token verification.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthzAuthorityJWK"}}},"required":true},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthzAuthorityJWK"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/profile/authz-authorities/{authzAuthorityId}/keys/{kid}":{"delete":{"operationId":"deleteAuthzAuthorityKey","summary":"Delete authorization authority key","description":"As SP Administrator, use this endpoint to remove a cryptographic key from an authorization authority.","tags":["Profile - Authorization Authorities"],"security":[{"bearerAuth":["update:profile"]}],"parameters":[{"in":"path","name":"authzAuthorityId","description":"Authorization Authority Id","required":true,"schema":{"$ref":"#/components/schemas/AuthzAuthorityId","description":"Authorization Authority Id"}},{"in":"path","name":"kid","description":"Key Id","required":true,"schema":{"$ref":"#/components/schemas/Kid","description":"Key Id"}}],"responses":{"204":{"description":"No Content"},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/service-providers":{"get":{"operationId":"getServiceProviders","summary":"Get service providers list","description":"As SP Operator, use this endpoint to retrieve a list of all Service Providers registered in the QR+ network.","tags":["Service Provider Registry"],"security":[{"bearerAuth":["view:registry"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProvidersSummaryInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/service-providers/{spId}":{"get":{"operationId":"getServiceProvider","summary":"Get service provider","description":"As SP Operator, use this endpoint to retrieve detailed information about a specific Service Provider.","tags":["Service Provider Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"spId","description":"Unique service provider id","required":true,"schema":{"$ref":"#/components/schemas/ServiceProviderId","description":"Unique service provider id"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ServiceProviderInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types":{"get":{"operationId":"getFlowTypes","summary":"Get flow types list","description":"As SP Operator, use this endpoint to retrieve the list of supported flow types in the QR+ network.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/FlowType"},"description":"List of supported flow types","example":["pep-general","pep-shortcode","prp-connected","prp-disconnected"]}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payer-services":{"get":{"operationId":"getPayerRegistryServices","summary":"Get payer registry services list","description":"As SP Operator, use this endpoint to retrieve a list of all Payer services for a specific flow type to build your local registry cache.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryPayerServicesSummary"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payer-services/{serviceId}":{"get":{"operationId":"getPayerRegistryService","summary":"Get payer registry service","description":"As SP Operator, use this endpoint to retrieve detailed information about a specific Payer service supporting a flow type.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}},{"in":"path","name":"serviceId","description":"Service id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId","description":"Service id"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryPayerServiceInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payer-registry-cache":{"get":{"operationId":"getPayerRegistryCache","summary":"Download payer registry cache","description":"As SP Operator, use this endpoint as an alternative to download a complete registry cache of all Payer services for a specific flow type. The cache is a JSON document that conforms to the published Payer Registry Cache schema. Response includes ETag header for efficient conditional updates.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}},{"name":"If-None-Match","in":"header","description":"Conditional request header containing ETag value from previous response. If the cache has not changed (ETag matches), server returns 304 Not Modified with no body.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Registry cache document. Includes ETag header based on cache creation timestamp and Link header referencing the JSON schema.","headers":{"ETag":{"description":"Entity tag for cache versioning, based on createdAt timestamp","schema":{"type":"string"}},"Link":{"description":"Link to JSON Schema definition with rel=\"describedby\"","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"serviceType":{"type":"string","const":"PAYER"},"createdAt":{"$ref":"#/components/schemas/TimeStampRo"},"flowType":{"$ref":"#/components/schemas/FlowType"},"services":{"type":"array","items":{"$ref":"#/components/schemas/RegistryPayerServiceInfo"}}},"required":["serviceType","createdAt","flowType","services"]}}}},"304":{"description":"Not Modified - Cache has not changed since last request. ETag header included but no response body.","headers":{"ETag":{"description":"Entity tag for cache versioning, based on createdAt timestamp","schema":{"type":"string"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payee-services":{"get":{"operationId":"getPayeeRegistryServices","summary":"Get payee registry services list","description":"As SP Operator, use this endpoint to retrieve a list of all Payee services supporting a specific flow type to build your local registry cache.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryPayeesServiceSummary"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payee-services/{serviceId}":{"get":{"operationId":"getPayeeRegistryService","summary":"Get payee registry service","description":"As SP Operator, use this endpoint to retrieve detailed information about a specific Payee service supporting a flow type.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}},{"in":"path","name":"serviceId","description":"Payee service id","required":true,"schema":{"$ref":"#/components/schemas/ServiceId","description":"Payee service id"}}],"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegistryPayeeServiceInfo"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}},"/flow-types/{flowType}/payee-registry-cache":{"get":{"operationId":"getPayeeRegistryCache","summary":"Download payee registry cache","description":"As SP Operator, use this endpoint as an alternative to download a complete registry cache of all Payee services for a specific flow type. The cache is a JSON document that conforms to the published Payee Registry Cache schema. Response includes ETag header for efficient conditional updates.","tags":["Services Registry"],"security":[{"bearerAuth":["view:registry"]}],"parameters":[{"in":"path","name":"flowType","description":"Flow type","required":true,"schema":{"$ref":"#/components/schemas/FlowType","description":"Flow type"}},{"name":"If-None-Match","in":"header","description":"Conditional request header containing ETag value from previous response. If the cache has not changed (ETag matches), server returns 304 Not Modified with no body.","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Registry cache document. Includes ETag header based on cache creation timestamp and Link header referencing the JSON schema.","headers":{"ETag":{"description":"Entity tag for cache versioning, based on createdAt timestamp","schema":{"type":"string"}},"Link":{"description":"Link to JSON Schema definition with rel=\"describedby\"","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"serviceType":{"type":"string","const":"PAYEE"},"createdAt":{"$ref":"#/components/schemas/TimeStampRo"},"flowType":{"$ref":"#/components/schemas/FlowType"},"services":{"type":"array","items":{"$ref":"#/components/schemas/RegistryPayeeServiceInfo"}}},"required":["serviceType","createdAt","flowType","services"]}}}},"304":{"description":"Not Modified - Cache has not changed since last request. ETag header included but no response body.","headers":{"ETag":{"description":"Entity tag for cache versioning, based on createdAt timestamp","schema":{"type":"string"}}}},"default":{"description":"error response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DefaultErrorResponse"}}}}}}}},"components":{"securitySchemes":{"bearerAuth":{"type":"http","name":"Authorization","in":"header","scheme":"bearer","bearerFormat":"JWT","description":"AuthzAuthority signed API token"}},"schemas":{"ProfileServicesSummaryInfo":{"type":"array","items":{"$ref":"#/components/schemas/ProfileServiceSummaryInfo"},"description":"Service Summary Information list"},"ProfileServiceSummaryInfo":{"oneOf":[{"$ref":"#/components/schemas/ProfilePayeeServiceSummary"},{"$ref":"#/components/schemas/ProfilePayerServiceSummary"}],"discriminator":{"propertyName":"kind","mapping":{"PAYEE":"#/components/schemas/ProfilePayeeServiceSummary","PAYER":"#/components/schemas/ProfilePayerServiceSummary"}}},"ProfilePayeeServiceSummary":{"type":"object","properties":{"kind":{"type":"string","const":"PAYEE"},"id":{"$ref":"#/components/schemas/ServiceId"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"alias":{"$ref":"#/components/schemas/ServiceAlias"}},"required":["kind","id","spId","flowType"]},"ServiceId":{"type":"string","format":"uuid","description":"Service Id"},"ServiceProviderId":{"type":"string","pattern":"^[a-z]+(?:-[a-z]+)*$","minLength":5,"maxLength":36,"description":"A unique value identifying the QR+ service provider. Must be in kebab-case (lowercase letters separated by single hyphens).","example":"north-big-bank"},"FlowType":{"type":"string","pattern":"^[a-zA-Z0-9-._~]*$","minLength":2,"maxLength":32,"description":"Flow Type","example":"pep-general"},"ServiceAlias":{"type":"string","maxLength":128,"description":"Recognizable name for the service, assigned by the Service Provider.","example":"Payer presented offline service B"},"ProfilePayerServiceSummary":{"type":"object","properties":{"kind":{"type":"string","const":"PAYER"},"id":{"$ref":"#/components/schemas/ServiceId"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"alias":{"$ref":"#/components/schemas/ServiceAlias"}},"required":["kind","id","spId","flowType"]},"DefaultErrorResponse":{"type":"object","properties":{"statusCode":{"type":"integer","minimum":400,"maximum":599,"description":"HTTP status code","example":403},"title":{"type":"string","maxLength":255,"description":"A short, human-readable summary of the problem type.","example":"Forbidden: The client does not have access rights to the content or functionality."},"detail":{"type":"string","maxLength":255,"description":"A human-readable explanation specific to this occurrence of the problem.","example":"You do not have permission to access this resource"},"instance":{"type":"string","format":"uuid","description":"Unique identifier for the instance of the error for further investigation","example":"0540fa0f-ccfa-4625-b006-725b4b580879"},"extensions":{"type":"array","items":{"type":"object","propertyNames":{"type":"string","maxLength":64},"additionalProperties":{"anyOf":[{"type":"string","maxLength":255},{"type":"number"},{"type":"boolean"},{"type":"null"}]}},"description":"An array of optional, additional error information objects","example":[{"requiredPermission":"profile:read"}]}},"required":["statusCode","title","instance"],"description":"An RFC9457 based error response payload"},"ProfileServiceInfo":{"oneOf":[{"$ref":"#/components/schemas/ProfilePayeeServiceInfo"},{"$ref":"#/components/schemas/ProfilePayerServiceInfo"}],"discriminator":{"propertyName":"kind","mapping":{"PAYEE":"#/components/schemas/ProfilePayeeServiceInfo","PAYER":"#/components/schemas/ProfilePayerServiceInfo"}}},"ProfilePayeeServiceInfo":{"type":"object","properties":{"kind":{"type":"string","const":"PAYEE"},"id":{"$ref":"#/components/schemas/ServiceId"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"alias":{"$ref":"#/components/schemas/ServiceAlias"},"indicatorMappings":{"type":"array","items":{"$ref":"#/components/schemas/IndicatorMapping"},"description":"List of paylink indicator mappings with encoding-specific flowTypeIndicators and spIndicators"},"host":{"oneOf":[{"$ref":"#/components/schemas/ServiceHost"},{"type":"null"}]},"authzAuthorities":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}}},"description":"List of authorization authorities"}},"required":["kind","id","spId","flowType","indicatorMappings","host","authzAuthorities"]},"IndicatorMapping":{"oneOf":[{"$ref":"#/components/schemas/UriEncodedIndicatorMapping"},{"$ref":"#/components/schemas/NumberEncodedIndicatorMapping"},{"$ref":"#/components/schemas/ExtNumberEncodedIndicatorMapping"},{"$ref":"#/components/schemas/SignedCborEncodedIndicatorMapping"}],"discriminator":{"propertyName":"encoding","mapping":{"URI_ENCODED":"#/components/schemas/UriEncodedIndicatorMapping","NUMBER_ENCODED":"#/components/schemas/NumberEncodedIndicatorMapping","EXTENDED_NUMBER_ENCODED":"#/components/schemas/ExtNumberEncodedIndicatorMapping","SIGNED_CBOR_ENCODED":"#/components/schemas/SignedCborEncodedIndicatorMapping"}},"description":"Paylink indicator mapping with encoding-specific validation for both flowTypeIndicator and spIndicator"},"UriEncodedIndicatorMapping":{"type":"object","properties":{"encoding":{"type":"string","const":"URI_ENCODED"},"flowTypeIndicator":{"$ref":"#/components/schemas/UriFlowTypeIndicator"},"spIndicator":{"$ref":"#/components/schemas/UriSpIndicator"}},"required":["encoding","flowTypeIndicator","spIndicator"]},"UriFlowTypeIndicator":{"type":"string","pattern":"^[a-zA-Z0-9-._~]*$","minLength":2,"maxLength":16,"description":"Uri encoded Flow Type Indicator","example":"general"},"UriSpIndicator":{"type":"string","pattern":"^[a-zA-Z0-9-._~]*$","minLength":2,"maxLength":16,"description":"Uri encoded Service Provider Indicator","example":"xmpl"},"NumberEncodedIndicatorMapping":{"type":"object","properties":{"encoding":{"type":"string","const":"NUMBER_ENCODED"},"flowTypeIndicator":{"$ref":"#/components/schemas/NFlowTypeIndicator"},"spIndicator":{"$ref":"#/components/schemas/NSpIndicator"}},"required":["encoding","flowTypeIndicator","spIndicator"]},"NFlowTypeIndicator":{"type":"string","pattern":"^[1-9]*$","minLength":1,"maxLength":1,"description":"Number encoded Flow Type Indicator","example":"2"},"NSpIndicator":{"type":"string","pattern":"^[0-9]*$","minLength":2,"maxLength":2,"description":"Number encoded Service Provider Indicator","example":"48"},"ExtNumberEncodedIndicatorMapping":{"type":"object","properties":{"encoding":{"type":"string","const":"EXTENDED_NUMBER_ENCODED"},"flowTypeIndicator":{"$ref":"#/components/schemas/NExtFlowTypeIndicator"},"spIndicator":{"$ref":"#/components/schemas/NExtSpIndicator"}},"required":["encoding","flowTypeIndicator","spIndicator"]},"NExtFlowTypeIndicator":{"type":"string","pattern":"^[1-9]*$","minLength":1,"maxLength":1,"description":"Extended number encoded Flow Type Indicator","example":"1"},"NExtSpIndicator":{"type":"string","pattern":"^[0-9]*$","minLength":4,"maxLength":4,"description":"Extended number encoded Service Provider Indicator","example":"3713"},"SignedCborEncodedIndicatorMapping":{"type":"object","properties":{"encoding":{"type":"string","const":"SIGNED_CBOR_ENCODED"},"flowTypeIndicator":{"$ref":"#/components/schemas/CborFlowTypeIndicator"},"spIndicator":{"$ref":"#/components/schemas/CborSpIndicator"}},"required":["encoding","flowTypeIndicator","spIndicator"]},"CborFlowTypeIndicator":{"type":"string","pattern":"^[0-9A-Fa-f]*$","minLength":1,"maxLength":1,"description":"CBOR encoded Flow Type Indicator (hex encoded)","example":"disconnected"},"CborSpIndicator":{"type":"string","pattern":"^[0-9A-Fa-f]*$","minLength":3,"maxLength":3,"description":"CBOR encoded Service Provider Type Indicator (hex encoded)","example":"d2b"},"ServiceHost":{"type":"string","format":"uri","maxLength":128,"description":"The https url where the service is hosted.","example":"https://best-link-provider.com/paylink/payer"},"SignedBearerAuthzAuthorityServiceInfo":{"type":"object","properties":{"kind":{"type":"string","const":"SIGNED_BEARER_TOKEN"},"id":{"$ref":"#/components/schemas/AuthzAuthorityId"},"keys":{"type":"array","items":{"$ref":"#/components/schemas/AuthzAuthorityJWK"}}},"required":["kind","id","keys"],"description":"Authorization authority service information for a signed bearer authority"},"AuthzAuthorityId":{"type":"string","format":"uuid","description":"Authorization Authority Identifier","example":"c4dbf68e-9be0-4780-9e30-08d5414f3467"},"AuthzAuthorityJWK":{"oneOf":[{"$ref":"#/components/schemas/ECJWK"},{"$ref":"#/components/schemas/RSAJWK"},{"$ref":"#/components/schemas/OKPJWK"}],"discriminator":{"propertyName":"kty","mapping":{"EC":"#/components/schemas/ECJWK","RSA":"#/components/schemas/RSAJWK","OKP":"#/components/schemas/OKPJWK"}},"description":"Public JSON Web Key (JWK) as defined in RFC7517 for validating JWT API access tokens"},"ECJWK":{"type":"object","properties":{"kty":{"type":"string","const":"EC","description":"Key Type"},"alg":{"type":"string","enum":["ES256","ES384","ES512"],"description":"ECDSA Algorithm","example":"ES256"},"kid":{"$ref":"#/components/schemas/Kid"},"use":{"type":"string","const":"sig","description":"Public key use - signature verification only"},"crv":{"type":"string","enum":["P-256","P-384","P-521"],"description":"NIST P-curve (FIPS 186-4 compliant)","example":"P-256"},"x":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","maxLength":128,"description":"X Coordinate - Base64Url encoded","example":"f83OJ3D2xF4a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5l"},"y":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","maxLength":128,"description":"Y Coordinate - Base64Url encoded","example":"x_FEzRu9u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5lFh9a8u5l"}},"required":["kty","alg","kid","use","crv","x","y"],"description":"EC JSON Web Key (JWK) for signature verification (RFC 7517)"},"Kid":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","minLength":36,"maxLength":128,"description":"Cryptographic key identifier - UUID or base64url-encoded thumbprint (min 36 chars for collision resistance)","example":"bq2wK4mVA6ahC1aUooSHO7i5PO_gbIkOQ5U2cYg5mnU"},"RSAJWK":{"type":"object","properties":{"kty":{"type":"string","const":"RSA","description":"Key Type"},"alg":{"type":"string","enum":["RS256","RS384","RS512","PS256","PS384","PS512"],"description":"RSA Signature Algorithm","example":"RS256"},"kid":{"$ref":"#/components/schemas/Kid"},"use":{"type":"string","const":"sig","description":"Public key use - signature verification only"},"n":{"type":"string","description":"RSA Modulus - Base64Url encoded"},"e":{"type":"string","description":"RSA Exponent - Base64Url encoded"}},"required":["kty","alg","kid","use","n","e"],"description":"RSA JSON Web Key (JWK) for signature verification (RFC 7517)"},"OKPJWK":{"type":"object","properties":{"kty":{"type":"string","const":"OKP","description":"Key Type"},"alg":{"type":"string","enum":["EdDSA"],"description":"EdDSA Signature Algorithm","example":"EdDSA"},"kid":{"$ref":"#/components/schemas/Kid"},"use":{"type":"string","const":"sig","description":"Public key use - signature verification only"},"crv":{"type":"string","enum":["Ed25519","Ed448"],"description":"Edwards Curve","example":"Ed25519"},"x":{"type":"string","pattern":"^[A-Za-z0-9_-]+$","maxLength":128,"description":"Public Key - Base64Url encoded","example":"11qYAYLefZBTm8gk1zo5d4z1Z8gk1zo5d4z1Z8gk1zo5d4z1Z8gk1zo5d4z1Z8gk1"}},"required":["kty","alg","kid","use","crv","x"],"description":"OKP JSON Web Key (JWK) for signature verification (RFC 7517)"},"ProfilePayerServiceInfo":{"type":"object","properties":{"kind":{"type":"string","const":"PAYER"},"id":{"$ref":"#/components/schemas/ServiceId"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"alias":{"$ref":"#/components/schemas/ServiceAlias"},"indicatorMappings":{"type":"array","items":{"$ref":"#/components/schemas/IndicatorMapping"},"description":"List of paylink indicator mappings with encoding-specific flowTypeIndicators and spIndicators"},"host":{"oneOf":[{"$ref":"#/components/schemas/ServiceHost"},{"type":"null"}]},"authzAuthorities":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}}},"description":"List of authorization authorities"}},"required":["kind","id","spId","flowType","indicatorMappings","host","authzAuthorities"]},"LinkAuthzAuthorityPayload":{"type":"object","properties":{"authorityId":{"$ref":"#/components/schemas/AuthzAuthorityId"}},"required":["authorityId"],"description":"Link services to authorization authority"},"SetServiceHostPayload":{"type":"object","properties":{"host":{"$ref":"#/components/schemas/ServiceHost"}},"required":["host"],"description":"Update service host"},"SetServiceHostInfo":{"type":"object","properties":{"host":{"$ref":"#/components/schemas/ServiceHost"}},"required":["host"],"description":"Updated service host value"},"SignedBearerAuthzAuthoritySummaryInfo":{"type":"object","properties":{"kind":{"type":"string","const":"SIGNED_BEARER_TOKEN"},"id":{"$ref":"#/components/schemas/AuthzAuthorityId"},"createdAt":{"$ref":"#/components/schemas/TimeStampRo"},"isRegistryAuthority":{"type":"boolean","description":"Stipulates whether this authority can authorize registry updates","default":false},"alias":{"$ref":"#/components/schemas/AuthzAuthorityAlias"}},"required":["kind","id","createdAt","isRegistryAuthority"],"description":"Authorization authority summary information for a signed bearer authority"},"TimeStampRo":{"type":"string","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.\\d{3}Z$","description":"RFC3339 date-time with millisecond precision in UTC (Z)","example":"2026-07-02T17:32:26.581Z","format":"date-time","readOnly":true},"AuthzAuthorityAlias":{"type":"string","maxLength":128,"description":"A Member recognizable name for the authorization authority","example":"Paylink Auth Key 2025-06"},"SignedBearerAuthzAuthorityPayload":{"type":"object","properties":{"kind":{"type":"string","const":"SIGNED_BEARER_TOKEN"},"isRegistryAuthority":{"type":"boolean","description":"Stipulates whether this authority can authorize registry updates","default":false},"alias":{"$ref":"#/components/schemas/AuthzAuthorityAlias"}},"required":["kind"],"description":"Authorization authority creation payload for a signed bearer authority"},"SignedBearerAuthzAuthorityInfo":{"type":"object","properties":{"kind":{"type":"string","const":"SIGNED_BEARER_TOKEN"},"id":{"$ref":"#/components/schemas/AuthzAuthorityId"},"linkedPayerServices":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"PAYER"},"serviceId":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"}},"required":["kind","serviceId","flowType"]}},"linkedPayeeServices":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string","const":"PAYEE"},"serviceId":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"}},"required":["kind","serviceId","flowType"]}},"createdAt":{"$ref":"#/components/schemas/TimeStampRo"},"alias":{"$ref":"#/components/schemas/AuthzAuthorityAlias"},"isRegistryAuthority":{"type":"boolean","description":"Stipulates whether this authority can authorize registry updates","default":false},"keys":{"type":"array","items":{"$ref":"#/components/schemas/AuthzAuthorityJWK"}}},"required":["kind","id","linkedPayerServices","linkedPayeeServices","createdAt","isRegistryAuthority","keys"],"description":"Authorization authority information for a signed bearer authority"},"SignedBearerAuthzAuthorityPatch":{"type":"object","properties":{"kind":{"type":"string","const":"SIGNED_BEARER_TOKEN"},"isRegistryAuthority":{"type":"boolean","description":"Stipulates whether this authority can authorize registry updates","default":false},"alias":{"oneOf":[{"$ref":"#/components/schemas/AuthzAuthorityAlias"},{"type":"null"}]}},"required":["kind"],"description":"Authorization authority patch payload for a signed bearer authority"},"ServiceProvidersSummaryInfo":{"type":"array","items":{"$ref":"#/components/schemas/ServiceProviderSummaryInfo"},"description":"Summary information about all members"},"ServiceProviderSummaryInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceProviderId"},"companyName":{"$ref":"#/components/schemas/CompanyName"}},"required":["id","companyName"],"description":"Summary information about a member"},"CompanyName":{"type":"string","maxLength":128,"description":"Company name","example":"Big Company Pty Ltd"},"ServiceProviderInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceProviderId"},"name":{"$ref":"#/components/schemas/CompanyName"},"serviceSupportPhone":{"$ref":"#/components/schemas/PhoneNumberZa"},"serviceSupportEmail":{"$ref":"#/components/schemas/Email"},"payerServices":{"type":"array","items":{"$ref":"#/components/schemas/ServiceReference"},"description":"List of ServiceProvider's payer services"},"payeeServices":{"type":"array","items":{"$ref":"#/components/schemas/ServiceReference"},"description":"'List of ServiceProvider's payee services"}},"required":["id","name","serviceSupportPhone","serviceSupportEmail","payerServices","payeeServices"],"description":"Service provider information"},"PhoneNumberZa":{"type":"string","pattern":"^\\+27\\d{9}$","maxLength":25,"description":"South African phone number in E.164 format","example":"+27821234567"},"Email":{"type":"string","format":"email","description":"Email address","example":"email@example.com"},"ServiceReference":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"}},"required":["id","flowType"],"description":"Service reference"},"RegistryPayerServicesSummary":{"type":"array","items":{"$ref":"#/components/schemas/RegistryPayerServiceSummary"},"description":"PrSP service summary list"},"RegistryPayerServiceSummary":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"}},"required":["id","flowType","spId"],"description":"Payer service summary information"},"RegistryPayerServiceInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"authzAuthorities":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}}},"description":"List of authorization authorities linked to the service"},"indicatorMappings":{"type":"array","items":{"$ref":"#/components/schemas/IndicatorMapping"},"description":"List of paylink indicator mappings with encoding-specific flowTypeIndicators and spIndicators"},"host":{"oneOf":[{"$ref":"#/components/schemas/ServiceHost"},{"type":"null"}],"description":"The Public https host address where this payer service is hosted. If null then service is not currently active"}},"required":["id","flowType","spId","authzAuthorities","indicatorMappings","host"],"description":"Payer service registry information"},"RegistryPayeesServiceSummary":{"type":"array","items":{"$ref":"#/components/schemas/RegistryPayeeServiceSummary"},"description":"PeSP service summary list"},"RegistryPayeeServiceSummary":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"}},"required":["id","flowType","spId"],"description":"Summary information about a PeSP service"},"RegistryPayeeServiceInfo":{"type":"object","properties":{"id":{"$ref":"#/components/schemas/ServiceId"},"flowType":{"$ref":"#/components/schemas/FlowType"},"spId":{"$ref":"#/components/schemas/ServiceProviderId"},"authzAuthorities":{"type":"array","items":{"oneOf":[{"$ref":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}],"discriminator":{"propertyName":"kind","mapping":{"SIGNED_BEARER_TOKEN":"#/components/schemas/SignedBearerAuthzAuthorityServiceInfo"}}},"description":"List of authorization authority public keys"},"indicatorMappings":{"type":"array","items":{"$ref":"#/components/schemas/IndicatorMapping"},"description":"List of paylink indicator mappings with encoding-specific flowTypeIndicators and spIndicators"},"host":{"oneOf":[{"$ref":"#/components/schemas/ServiceHost"},{"type":"null"}],"description":"The Public https host address where this payee service is hosted. If null then service is not currently active"}},"required":["id","flowType","spId","authzAuthorities","indicatorMappings","host"],"description":"Payee service information"}}}}