|
1 | 1 | openapi: 3.1.0 |
2 | 2 | info: |
3 | 3 | title: Open Payments Authorization Server |
4 | | - version: '1.2.0' |
| 4 | + version: '1.3.0' |
5 | 5 | license: |
6 | 6 | name: Apache 2.0 |
7 | 7 | identifier: Apache-2.0 |
@@ -164,6 +164,23 @@ paths: |
164 | 164 | - read |
165 | 165 | identifier: 'http://ilp.interledger-test.dev/bob' |
166 | 166 | client: 'https://webmonize.com/.well-known/pay' |
| 167 | + Grant request with directed identity (JWK): |
| 168 | + value: |
| 169 | + access_token: |
| 170 | + access: |
| 171 | + - type: incoming-payment |
| 172 | + actions: |
| 173 | + - create |
| 174 | + - read |
| 175 | + identifier: 'http://ilp.interledger-test.dev/bob' |
| 176 | + client: |
| 177 | + jwk: |
| 178 | + kid: example-key-1 |
| 179 | + alg: EdDSA |
| 180 | + use: sig |
| 181 | + kty: OKP |
| 182 | + crv: Ed25519 |
| 183 | + x: 11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo |
167 | 184 | Grant request for subject information: |
168 | 185 | value: |
169 | 186 | subject: |
@@ -565,15 +582,41 @@ components: |
565 | 582 | additionalProperties: false |
566 | 583 | client: |
567 | 584 | title: client |
568 | | - type: string |
569 | 585 | description: |- |
570 | | - Wallet address of the client instance that is making this request. |
| 586 | + Client identification for grant requests. |
571 | 587 |
|
572 | 588 | When sending a non-continuation request to the AS, the client instance MUST identify itself by including the client field of the request and by signing the request. |
573 | 589 |
|
| 590 | + Can be either: |
| 591 | + - A wallet address string (backwards compatible format) |
| 592 | + - An object with either `jwk` (for directed identity) or `walletAddress` (mutually exclusive) |
| 593 | +
|
| 594 | + When using a wallet address string or the `walletAddress` property: |
574 | 595 | A JSON Web Key Set document, including the public key that the client instance will use to protect this request and any continuation requests at the AS and any user-facing information about the client instance used in interactions, MUST be available at the wallet address + `/jwks.json` url. |
575 | 596 |
|
| 597 | + When using the `jwk` property (directed identity approach): |
| 598 | + The client instance provides its public key directly in the request, eliminating the need for the AS to fetch it from a wallet address. This approach enhances privacy by not requiring the client to expose a persistent wallet address identifier. The `jwk` property can only be used for non-interactive grant requests (i.e.: incoming payments). |
| 599 | +
|
576 | 600 | If sending a grant initiation request that requires RO interaction, the wallet address MUST serve necessary client display information. |
| 601 | + oneOf: |
| 602 | + - type: string |
| 603 | + format: uri |
| 604 | + description: 'DEPRECATED: This string format of the client wallet address is maintained only for backwards compatibility. Migrate to the object form with `jwk` or `walletAddress`.' |
| 605 | + deprecated: true |
| 606 | + - type: object |
| 607 | + required: [walletAddress] |
| 608 | + properties: |
| 609 | + walletAddress: |
| 610 | + type: string |
| 611 | + format: uri |
| 612 | + description: Wallet address of the client instance that is making this request. |
| 613 | + additionalProperties: false |
| 614 | + - type: object |
| 615 | + required: [jwk] |
| 616 | + properties: |
| 617 | + jwk: |
| 618 | + $ref: '#/components/schemas/json-web-key' |
| 619 | + additionalProperties: false |
577 | 620 | continue: |
578 | 621 | title: continue |
579 | 622 | type: object |
@@ -783,6 +826,48 @@ components: |
783 | 826 | maxItems: 1 |
784 | 827 | required: |
785 | 828 | - sub_ids |
| 829 | + json-web-key: |
| 830 | + type: object |
| 831 | + properties: |
| 832 | + kid: |
| 833 | + type: string |
| 834 | + alg: |
| 835 | + type: string |
| 836 | + description: 'The cryptographic algorithm family used with the key. The only allowed value is `EdDSA`. ' |
| 837 | + enum: |
| 838 | + - EdDSA |
| 839 | + use: |
| 840 | + type: string |
| 841 | + enum: |
| 842 | + - sig |
| 843 | + kty: |
| 844 | + type: string |
| 845 | + enum: |
| 846 | + - OKP |
| 847 | + crv: |
| 848 | + description: 'The cryptographic curve used with the key. This parameter identifies the elliptic curve (for EC keys) or the Edwards curve (for OKP keys). The only allowed value is `Ed25519`.' |
| 849 | + type: string |
| 850 | + enum: |
| 851 | + - Ed25519 |
| 852 | + x: |
| 853 | + type: string |
| 854 | + pattern: '^[a-zA-Z0-9-_]+$' |
| 855 | + description: The base64 url-encoded public key. |
| 856 | + required: |
| 857 | + - kid |
| 858 | + - alg |
| 859 | + - kty |
| 860 | + - crv |
| 861 | + - x |
| 862 | + title: Ed25519 Public Key |
| 863 | + description: A JWK representation of an Ed25519 Public Key |
| 864 | + examples: |
| 865 | + - kid: key-1 |
| 866 | + alg: EdDSA |
| 867 | + use: sig |
| 868 | + kty: OKP |
| 869 | + crv: Ed25519 |
| 870 | + x: 11qYAYKxCrfVS_7TyWQHOg7hcvPapiMlrwIaaPcHURo |
786 | 871 | securitySchemes: |
787 | 872 | GNAP: |
788 | 873 | name: Authorization |
|
0 commit comments