@inklok/api-spec 7.8.0 → 7.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/openapi.yaml +57 -82
  2. package/package.json +1 -1
package/openapi.yaml CHANGED
@@ -8,7 +8,7 @@ info:
8
8
  Authenticate using an API key or bearer token, then use the resources below to manage
9
9
  templates, agreements, documents, and signing. For your first integration, start with
10
10
  the Quick Start guide.
11
- version: "7.8.0"
11
+ version: "7.8.2"
12
12
  contact:
13
13
  name: Inklok API Support
14
14
  email: support@inklok.com
@@ -1816,6 +1816,12 @@ paths:
1816
1816
  description: Document identifier
1817
1817
  schema:
1818
1818
  type: string
1819
+ - name: executionId
1820
+ in: query
1821
+ required: false
1822
+ description: Required for signer-token access; binds document access to the verified signing execution.
1823
+ schema:
1824
+ type: string
1819
1825
  responses:
1820
1826
  '200':
1821
1827
  description: Base64-encoded document encryption key for client-side decryption
@@ -2624,63 +2630,6 @@ paths:
2624
2630
  '500':
2625
2631
  $ref: '#/components/responses/InternalServerError'
2626
2632
 
2627
- /v1/signing/managed-regrant:
2628
- post:
2629
- operationId: managedScopeRegrant
2630
- summary: Regrant authorized managed scope envelopes
2631
- x-visibility: internal
2632
- x-required-roles: []
2633
- description: |
2634
- Derives the caller's authorized managed scopes from the verified Cognito
2635
- membership or signer token, recovers those scope DEKs inside the managed
2636
- recovery boundary, and returns only RSA-OAEP envelopes for the caller's
2637
- validated registered transient public key. The request cannot select scope
2638
- IDs and the response never contains plaintext values or raw DEKs.
2639
- tags:
2640
- - Signing
2641
- security:
2642
- - bearerAuth: []
2643
- requestBody:
2644
- required: true
2645
- content:
2646
- application/json:
2647
- schema:
2648
- type: object
2649
- required: [executionId, destinationPublicKeyId]
2650
- properties:
2651
- executionId:
2652
- type: string
2653
- destinationPublicKeyId:
2654
- type: string
2655
- responses:
2656
- '200':
2657
- description: Scoped managed envelopes for the authenticated principal
2658
- content:
2659
- application/json:
2660
- schema:
2661
- type: object
2662
- required: [keyScopes, envelopes]
2663
- properties:
2664
- keyScopes:
2665
- type: array
2666
- items:
2667
- $ref: '#/components/schemas/KeyScope'
2668
- envelopes:
2669
- type: array
2670
- items:
2671
- $ref: '#/components/schemas/KeyEnvelope'
2672
- '400':
2673
- $ref: '#/components/responses/BadRequest'
2674
- '401':
2675
- $ref: '#/components/responses/Unauthorized'
2676
- '403':
2677
- $ref: '#/components/responses/Forbidden'
2678
- '404':
2679
- $ref: '#/components/responses/NotFound'
2680
- '500':
2681
- $ref: '#/components/responses/InternalServerError'
2682
- x-inklok-lambda: managed-scope-regrant
2683
-
2684
2633
  /v1/agreements/{executionId}/resend-completion-emails:
2685
2634
  post:
2686
2635
  operationId: agreementResendCompletionEmails
@@ -2884,6 +2833,7 @@ paths:
2884
2833
  value_encrypted:
2885
2834
  type: string
2886
2835
  nullable: true
2836
+ description: JSON-serialized ScopedEncryptedFieldValue (v2). The server stores this string verbatim only after structural and authoritative binding validation.
2887
2837
  required:
2888
2838
  type: boolean
2889
2839
  '401':
@@ -2975,6 +2925,8 @@ paths:
2975
2925
  type: string
2976
2926
  value_encrypted:
2977
2927
  type: string
2928
+ minLength: 1
2929
+ description: JSON-serialized ScopedEncryptedFieldValue. The server validates its exact v2 envelope, authoritative keyScopeId, and canonical AAD before persistence.
2978
2930
  metadata:
2979
2931
  type: object
2980
2932
  additionalProperties: true
@@ -3175,16 +3127,15 @@ paths:
3175
3127
 
3176
3128
  /v1/signing/scope-envelopes:
3177
3129
  post:
3178
- operationId: resolveSigningScopeEnvelopes
3179
- summary: Resolve signer-authorized scope envelopes
3130
+ operationId: managedScopeRegrant
3131
+ summary: Regrant authorized managed scope envelopes
3180
3132
  x-visibility: internal
3181
3133
  description: |
3182
- Returns wrapped key material scoped to the authenticated signer.
3183
-
3184
- - Requires a signing access token
3185
- - Returns document key material for current PDF compatibility
3186
- - Returns only scope envelopes authorized for the signer
3187
- - Audited for signer access
3134
+ Derives the caller's authorized managed scopes from the verified Cognito
3135
+ membership or signer token, recovers those scope DEKs inside the managed
3136
+ recovery boundary, and returns only RSA-OAEP envelopes for the caller's
3137
+ validated registered transient public key. The request cannot select scope
3138
+ IDs and the response never contains plaintext values or raw DEKs.
3188
3139
  tags:
3189
3140
  - Signing
3190
3141
  security:
@@ -3195,30 +3146,24 @@ paths:
3195
3146
  application/json:
3196
3147
  schema:
3197
3148
  type: object
3198
- required: [executionId]
3149
+ required: [executionId, destinationPublicKeyId]
3199
3150
  properties:
3200
3151
  executionId:
3201
3152
  type: string
3153
+ destinationPublicKeyId:
3154
+ type: string
3202
3155
  example:
3203
3156
  executionId: "exec_123"
3157
+ destinationPublicKeyId: "session_key_123"
3204
3158
  responses:
3205
3159
  '200':
3206
- description: Wrapped document material and signer-visible scoped field envelopes
3160
+ description: Scoped managed envelopes for the authenticated principal
3207
3161
  content:
3208
3162
  application/json:
3209
3163
  schema:
3210
3164
  type: object
3211
- required: [documentDek, placeholders]
3165
+ required: [keyScopes, envelopes]
3212
3166
  properties:
3213
- documentDek:
3214
- type: object
3215
- required: [encrypted, alg]
3216
- properties:
3217
- encrypted:
3218
- type: string
3219
- alg:
3220
- type: string
3221
- enum: [KMS-WRAPPED-BASE64, RSA-OAEP]
3222
3167
  keyScopes:
3223
3168
  type: array
3224
3169
  items:
@@ -3228,9 +3173,6 @@ paths:
3228
3173
  items:
3229
3174
  $ref: '#/components/schemas/KeyEnvelope'
3230
3175
  example:
3231
- documentDek:
3232
- encrypted: "base64..."
3233
- alg: "KMS-WRAPPED-BASE64"
3234
3176
  keyScopes: []
3235
3177
  envelopes: []
3236
3178
  '400':
@@ -3243,7 +3185,7 @@ paths:
3243
3185
  $ref: '#/components/responses/NotFound'
3244
3186
  '500':
3245
3187
  $ref: '#/components/responses/InternalServerError'
3246
- x-inklok-lambda: signing-scope-envelopes
3188
+ x-inklok-lambda: managed-scope-regrant
3247
3189
 
3248
3190
  components:
3249
3191
  securitySchemes:
@@ -5689,6 +5631,7 @@ components:
5689
5631
  type:
5690
5632
  type: string
5691
5633
  enum: [PARTY_PRIVATE, SHARED, ORG_AUTHORIZED, WORKSPACE_AUTHORIZED]
5634
+ description: Current managed signing creation accepts PARTY_PRIVATE and SHARED. Other enum values are reserved for future modes and are rejected at creation time.
5692
5635
  partyId:
5693
5636
  type: string
5694
5637
  members:
@@ -5708,6 +5651,7 @@ components:
5708
5651
  protectionMode:
5709
5652
  type: string
5710
5653
  enum: [MANAGED, STRICT_ZK]
5654
+ description: Current signing creation accepts MANAGED only. STRICT_ZK is reserved and not enabled.
5711
5655
  createdAt:
5712
5656
  type: string
5713
5657
  format: date-time
@@ -5788,6 +5732,37 @@ components:
5788
5732
  kmsWrappedScopeDek:
5789
5733
  type: string
5790
5734
 
5735
+ ScopedEncryptedFieldValue:
5736
+ type: object
5737
+ additionalProperties: false
5738
+ description: |
5739
+ Parsed form of the JSON string carried by signing field value_encrypted.
5740
+ v2 binds AES-GCM authentication to the agreement, authoritative scope,
5741
+ field, and encryption version. The server validates structure and AAD
5742
+ metadata but does not decrypt managed values.
5743
+ required: [alg, keyScopeId, encryptionVersion, ciphertext, iv, authTag, aad]
5744
+ properties:
5745
+ alg:
5746
+ type: string
5747
+ enum: [AES-256-GCM]
5748
+ keyScopeId:
5749
+ type: string
5750
+ encryptionVersion:
5751
+ type: integer
5752
+ enum: [2]
5753
+ ciphertext:
5754
+ type: string
5755
+ description: Canonical base64 ciphertext bytes, without the GCM tag.
5756
+ iv:
5757
+ type: string
5758
+ description: Canonical base64 12-byte AES-GCM IV.
5759
+ authTag:
5760
+ type: string
5761
+ description: Canonical base64 16-byte AES-GCM authentication tag.
5762
+ aad:
5763
+ type: string
5764
+ description: 'Exact UTF-8 AAD string: inklok:field-value:v2:{"agreementId":"…","keyScopeId":"…","fieldId":"…","encryptionVersion":2}'
5765
+
5791
5766
  CryptoPrincipal:
5792
5767
  type: object
5793
5768
  required: [principalId, type, subjectId]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inklok/api-spec",
3
- "version": "7.8.0",
3
+ "version": "7.8.2",
4
4
  "description": "Canonical OpenAPI specification for the Inklok public API.",
5
5
  "main": "openapi.yaml",
6
6
  "license": "MIT",