@inklok/api-spec 7.8.1 → 7.8.3

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 +178 -1
  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.1"
11
+ version: "7.8.3"
12
12
  contact:
13
13
  name: Inklok API Support
14
14
  email: support@inklok.com
@@ -239,6 +239,96 @@ paths:
239
239
  $ref: '#/components/responses/Unauthorized'
240
240
  '403':
241
241
  $ref: '#/components/responses/Forbidden'
242
+ '409':
243
+ $ref: '#/components/responses/Conflict'
244
+ '500':
245
+ $ref: '#/components/responses/InternalServerError'
246
+
247
+ /v1/crypto/identities/{publicKeyId}/recovery:
248
+ get:
249
+ operationId: getCryptoIdentityRecoveryBundleV1
250
+ summary: Get crypto identity recovery bundle
251
+ x-visibility: internal
252
+ description: |
253
+ Returns the encrypted client-side recovery bundle for an authorized account crypto identity. Recovery Keys are never accepted by this API.
254
+ x-required-roles: [workflow-editor, workflow-operator, agreement-auditor, organization-admin]
255
+ tags:
256
+ - Crypto Identities
257
+ parameters:
258
+ - name: publicKeyId
259
+ in: path
260
+ required: true
261
+ schema:
262
+ type: string
263
+ - name: X-Inklok-Org-Id
264
+ in: header
265
+ required: false
266
+ schema:
267
+ type: string
268
+ responses:
269
+ '200':
270
+ description: Encrypted recovery bundle
271
+ content:
272
+ application/json:
273
+ schema:
274
+ type: object
275
+ required: [bundle]
276
+ properties:
277
+ bundle:
278
+ $ref: '#/components/schemas/CryptoIdentityRecoveryBundle'
279
+ '401':
280
+ $ref: '#/components/responses/Unauthorized'
281
+ '403':
282
+ $ref: '#/components/responses/Forbidden'
283
+ '404':
284
+ $ref: '#/components/responses/NotFound'
285
+ '500':
286
+ $ref: '#/components/responses/InternalServerError'
287
+ put:
288
+ operationId: putCryptoIdentityRecoveryBundleV1
289
+ summary: Replace crypto identity recovery bundle
290
+ x-visibility: internal
291
+ description: |
292
+ Stores an encrypted client-side recovery bundle for an authorized account crypto identity. The plaintext private key and Recovery Key are never accepted.
293
+ x-required-roles: [workflow-editor, workflow-operator, agreement-auditor, organization-admin]
294
+ tags:
295
+ - Crypto Identities
296
+ parameters:
297
+ - name: publicKeyId
298
+ in: path
299
+ required: true
300
+ schema:
301
+ type: string
302
+ - name: X-Inklok-Org-Id
303
+ in: header
304
+ required: false
305
+ schema:
306
+ type: string
307
+ requestBody:
308
+ required: true
309
+ content:
310
+ application/json:
311
+ schema:
312
+ $ref: '#/components/schemas/CryptoIdentityRecoveryBundle'
313
+ responses:
314
+ '200':
315
+ description: Stored encrypted recovery bundle
316
+ content:
317
+ application/json:
318
+ schema:
319
+ type: object
320
+ required: [bundle]
321
+ properties:
322
+ bundle:
323
+ $ref: '#/components/schemas/CryptoIdentityRecoveryBundle'
324
+ '400':
325
+ $ref: '#/components/responses/BadRequest'
326
+ '401':
327
+ $ref: '#/components/responses/Unauthorized'
328
+ '403':
329
+ $ref: '#/components/responses/Forbidden'
330
+ '404':
331
+ $ref: '#/components/responses/NotFound'
242
332
  '500':
243
333
  $ref: '#/components/responses/InternalServerError'
244
334
 
@@ -2833,6 +2923,7 @@ paths:
2833
2923
  value_encrypted:
2834
2924
  type: string
2835
2925
  nullable: true
2926
+ description: JSON-serialized ScopedEncryptedFieldValue (v2). The server stores this string verbatim only after structural and authoritative binding validation.
2836
2927
  required:
2837
2928
  type: boolean
2838
2929
  '401':
@@ -2924,6 +3015,8 @@ paths:
2924
3015
  type: string
2925
3016
  value_encrypted:
2926
3017
  type: string
3018
+ minLength: 1
3019
+ description: JSON-serialized ScopedEncryptedFieldValue. The server validates its exact v2 envelope, authoritative keyScopeId, and canonical AAD before persistence.
2927
3020
  metadata:
2928
3021
  type: object
2929
3022
  additionalProperties: true
@@ -5628,6 +5721,7 @@ components:
5628
5721
  type:
5629
5722
  type: string
5630
5723
  enum: [PARTY_PRIVATE, SHARED, ORG_AUTHORIZED, WORKSPACE_AUTHORIZED]
5724
+ description: Current managed signing creation accepts PARTY_PRIVATE and SHARED. Other enum values are reserved for future modes and are rejected at creation time.
5631
5725
  partyId:
5632
5726
  type: string
5633
5727
  members:
@@ -5647,6 +5741,7 @@ components:
5647
5741
  protectionMode:
5648
5742
  type: string
5649
5743
  enum: [MANAGED, STRICT_ZK]
5744
+ description: Current signing creation accepts MANAGED only. STRICT_ZK is reserved and not enabled.
5650
5745
  createdAt:
5651
5746
  type: string
5652
5747
  format: date-time
@@ -5727,6 +5822,37 @@ components:
5727
5822
  kmsWrappedScopeDek:
5728
5823
  type: string
5729
5824
 
5825
+ ScopedEncryptedFieldValue:
5826
+ type: object
5827
+ additionalProperties: false
5828
+ description: |
5829
+ Parsed form of the JSON string carried by signing field value_encrypted.
5830
+ v2 binds AES-GCM authentication to the agreement, authoritative scope,
5831
+ field, and encryption version. The server validates structure and AAD
5832
+ metadata but does not decrypt managed values.
5833
+ required: [alg, keyScopeId, encryptionVersion, ciphertext, iv, authTag, aad]
5834
+ properties:
5835
+ alg:
5836
+ type: string
5837
+ enum: [AES-256-GCM]
5838
+ keyScopeId:
5839
+ type: string
5840
+ encryptionVersion:
5841
+ type: integer
5842
+ enum: [2]
5843
+ ciphertext:
5844
+ type: string
5845
+ description: Canonical base64 ciphertext bytes, without the GCM tag.
5846
+ iv:
5847
+ type: string
5848
+ description: Canonical base64 12-byte AES-GCM IV.
5849
+ authTag:
5850
+ type: string
5851
+ description: Canonical base64 16-byte AES-GCM authentication tag.
5852
+ aad:
5853
+ type: string
5854
+ description: 'Exact UTF-8 AAD string: inklok:field-value:v2:{"agreementId":"…","keyScopeId":"…","fieldId":"…","encryptionVersion":2}'
5855
+
5730
5856
  CryptoPrincipal:
5731
5857
  type: object
5732
5858
  required: [principalId, type, subjectId]
@@ -5823,6 +5949,57 @@ components:
5823
5949
  format: date-time
5824
5950
  readOnly: true
5825
5951
 
5952
+ CryptoIdentityRecoveryBundle:
5953
+ type: object
5954
+ description: Client-encrypted account private-key recovery payload. The Recovery Key is never included.
5955
+ required: [identityId, encryptedPrivateKey, salt, iv, kdf, kdfVersion, kdfParams, encryptionAlg, encryptionVersion, aad]
5956
+ properties:
5957
+ identityId:
5958
+ type: string
5959
+ encryptedPrivateKey:
5960
+ type: string
5961
+ description: Base64 AES-GCM ciphertext of the account private key export.
5962
+ salt:
5963
+ type: string
5964
+ iv:
5965
+ type: string
5966
+ kdf:
5967
+ type: string
5968
+ enum: [PBKDF2-SHA-256]
5969
+ kdfVersion:
5970
+ type: integer
5971
+ enum: [1]
5972
+ kdfParams:
5973
+ type: object
5974
+ required: [iterations, hash, saltBytes]
5975
+ properties:
5976
+ iterations:
5977
+ type: integer
5978
+ minimum: 310000
5979
+ hash:
5980
+ type: string
5981
+ enum: [SHA-256]
5982
+ saltBytes:
5983
+ type: integer
5984
+ enum: [16]
5985
+ encryptionAlg:
5986
+ type: string
5987
+ enum: [AES-GCM-256]
5988
+ encryptionVersion:
5989
+ type: integer
5990
+ enum: [1]
5991
+ aad:
5992
+ type: string
5993
+ description: Identity-bound AES-GCM additional authenticated data.
5994
+ createdAt:
5995
+ type: string
5996
+ format: date-time
5997
+ readOnly: true
5998
+ updatedAt:
5999
+ type: string
6000
+ format: date-time
6001
+ readOnly: true
6002
+
5826
6003
  AppendExecutionEventRequest:
5827
6004
  type: object
5828
6005
  required: [type, actorType]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inklok/api-spec",
3
- "version": "7.8.1",
3
+ "version": "7.8.3",
4
4
  "description": "Canonical OpenAPI specification for the Inklok public API.",
5
5
  "main": "openapi.yaml",
6
6
  "license": "MIT",