@inklok/api-spec 7.10.0 → 7.11.0

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 +138 -4
  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.10.0"
11
+ version: "7.11.0"
12
12
  contact:
13
13
  name: Inklok API Support
14
14
  email: support@inklok.com
@@ -2567,6 +2567,38 @@ paths:
2567
2567
  '500':
2568
2568
  $ref: '#/components/responses/InternalServerError'
2569
2569
 
2570
+ /v1/templates/{workflowId}/agreements/prepare:
2571
+ post:
2572
+ operationId: prepareAgreementGuestInvitationsV1
2573
+ summary: Prepare an agreement cryptographic context
2574
+ description: |
2575
+ First stage of agreement creation. Reserves the authoritative execution and party IDs,
2576
+ then returns short-lived one-time bootstrap material used by the client to construct the
2577
+ guest invitation capabilities required by the create/finalize request. Preparation does
2578
+ not create a Vault-visible agreement or consume agreement creation usage.
2579
+
2580
+ The response must be finalized against the same workflow, organization, and authenticated
2581
+ principal before `expiresIn` elapses. Raw bootstrap values are never persisted by Inklok.
2582
+ x-required-roles: [workflow-operator, organization-admin]
2583
+ x-required-scopes: [agreements:write]
2584
+ tags: [Agreements]
2585
+ parameters:
2586
+ - name: workflowId
2587
+ in: path
2588
+ required: true
2589
+ schema: { type: string }
2590
+ responses:
2591
+ '200':
2592
+ description: Short-lived authoritative context and one-time material for agreement creation
2593
+ content:
2594
+ application/json:
2595
+ schema:
2596
+ $ref: '#/components/schemas/PrepareGuestInvitationsResponse'
2597
+ '401': { $ref: '#/components/responses/Unauthorized' }
2598
+ '403': { $ref: '#/components/responses/Forbidden' }
2599
+ '404': { $ref: '#/components/responses/NotFound' }
2600
+ '500': { $ref: '#/components/responses/InternalServerError' }
2601
+
2570
2602
  /v1/agreements/{executionId}:
2571
2603
  get:
2572
2604
  operationId: getAgreementV1
@@ -3075,6 +3107,10 @@ paths:
3075
3107
  properties:
3076
3108
  execution_id:
3077
3109
  type: string
3110
+ expires_at:
3111
+ type: string
3112
+ format: date-time
3113
+ description: Immutable agreement deadline; signing is rejected at or after this instant.
3078
3114
  agreement_title:
3079
3115
  type: string
3080
3116
  nullable: true
@@ -3131,6 +3167,19 @@ paths:
3131
3167
  type: string
3132
3168
  example: RSA-OAEP-256
3133
3169
  description: Encrypted document key metadata for this signer
3170
+ key_scopes:
3171
+ type: array
3172
+ items:
3173
+ $ref: '#/components/schemas/KeyScope'
3174
+ key_envelopes:
3175
+ type: array
3176
+ items:
3177
+ $ref: '#/components/schemas/KeyEnvelope'
3178
+ invitation_capabilities:
3179
+ type: array
3180
+ description: Active agreement-specific guest capabilities. Only the authenticated party receives its encrypted private-key package; other parties expose public addressing data only.
3181
+ items:
3182
+ $ref: '#/components/schemas/GuestInvitationCapability'
3134
3183
  parties:
3135
3184
  type: array
3136
3185
  items:
@@ -6183,7 +6232,7 @@ components:
6183
6232
 
6184
6233
  ExecutionStatus:
6185
6234
  type: string
6186
- enum: [pending, in_progress, completed, cancelled]
6235
+ enum: [pending, in_progress, completed, cancelled, expired]
6187
6236
 
6188
6237
  ParticipantStatus:
6189
6238
  type: string
@@ -6288,8 +6337,16 @@ components:
6288
6337
 
6289
6338
  CreateExecutionRequest:
6290
6339
  type: object
6291
- required: [agreementTitle, participants, crypto]
6340
+ required: [agreementTitle, participants, crypto, preparedExecutionId, guestInvitations]
6292
6341
  properties:
6342
+ preparedExecutionId:
6343
+ type: string
6344
+ format: uuid
6345
+ guestInvitations:
6346
+ type: array
6347
+ minItems: 1
6348
+ items:
6349
+ $ref: '#/components/schemas/CreateGuestInvitationInput'
6293
6350
  agreementTitle:
6294
6351
  type: string
6295
6352
  minLength: 1
@@ -6324,6 +6381,65 @@ components:
6324
6381
  items:
6325
6382
  $ref: '#/components/schemas/ManagedRecoveryCapability'
6326
6383
 
6384
+ PrepareGuestInvitationsResponse:
6385
+ type: object
6386
+ required: [executionId, expiresIn, parties]
6387
+ properties:
6388
+ executionId: { type: string, format: uuid }
6389
+ expiresIn: { type: integer }
6390
+ parties:
6391
+ type: array
6392
+ items:
6393
+ type: object
6394
+ required: [roleId, partyId, authorizationCode, bootstrapSecret]
6395
+ properties:
6396
+ roleId: { type: string }
6397
+ partyId: { type: string }
6398
+ authorizationCode: { type: string, writeOnly: true }
6399
+ bootstrapSecret: { type: string, writeOnly: true }
6400
+
6401
+ CreateGuestInvitationInput:
6402
+ type: object
6403
+ required: [partyId, authorizationCode, bootstrapSecret, capability]
6404
+ properties:
6405
+ partyId: { type: string }
6406
+ authorizationCode: { type: string, writeOnly: true }
6407
+ bootstrapSecret: { type: string, writeOnly: true }
6408
+ capability:
6409
+ $ref: '#/components/schemas/GuestInvitationCapabilityInput'
6410
+
6411
+ GuestInvitationCapabilityInput:
6412
+ type: object
6413
+ required: [protocol, invitationKeyId, publicKeySpki, encryptedPrivateKey, iv, salt, aad, kdf, cipher]
6414
+ properties:
6415
+ protocol: { type: string, enum: [inklok-guest-invitation-v1] }
6416
+ invitationKeyId: { type: string }
6417
+ publicKeySpki: { type: string }
6418
+ encryptedPrivateKey: { type: string }
6419
+ iv: { type: string }
6420
+ salt: { type: string }
6421
+ aad: { type: string }
6422
+ kdf: { type: string, enum: [HKDF-SHA-256] }
6423
+ cipher: { type: string, enum: [AES-256-GCM] }
6424
+
6425
+ GuestInvitationCapability:
6426
+ type: object
6427
+ required: [protocol, partyId, invitationKeyId, invitationPrincipalId, publicKeySpki, status]
6428
+ properties:
6429
+ protocol: { type: string, enum: [inklok-guest-invitation-v1] }
6430
+ partyId: { type: string }
6431
+ invitationKeyId: { type: string }
6432
+ invitationPrincipalId: { type: string }
6433
+ publicKeySpki: { type: string }
6434
+ encryptedPrivateKey: { type: string }
6435
+ iv: { type: string }
6436
+ salt: { type: string }
6437
+ aad: { type: string }
6438
+ kdf: { type: string, enum: [HKDF-SHA-256] }
6439
+ cipher: { type: string, enum: [AES-256-GCM] }
6440
+ status: { type: string, enum: [active] }
6441
+ createdAt: { type: string, format: date-time }
6442
+
6327
6443
  KeyScope:
6328
6444
  type: object
6329
6445
  required: [keyScopeId, type, version]
@@ -6342,6 +6458,13 @@ components:
6342
6458
  type: array
6343
6459
  items:
6344
6460
  type: string
6461
+ fieldIds:
6462
+ type: array
6463
+ minItems: 1
6464
+ uniqueItems: true
6465
+ description: Protected workflow fields assigned to this scope. Required by new agreement creation clients so one party may own multiple scopes with different sharing policies.
6466
+ items:
6467
+ type: string
6345
6468
  authorizationPolicy:
6346
6469
  type: object
6347
6470
  additionalProperties: true
@@ -6355,7 +6478,7 @@ components:
6355
6478
  protectionMode:
6356
6479
  type: string
6357
6480
  enum: [MANAGED, STRICT_ZK]
6358
- description: Current signing creation accepts MANAGED only. STRICT_ZK is reserved and not enabled.
6481
+ description: Agreement signing creation requires STRICT_ZK. MANAGED remains in the response model for legacy records.
6359
6482
  createdAt:
6360
6483
  type: string
6361
6484
  format: date-time
@@ -6912,6 +7035,7 @@ components:
6912
7035
  currentStep,
6913
7036
  totalSteps,
6914
7037
  createdAt,
7038
+ expiresAt,
6915
7039
  updatedAt,
6916
7040
  pdfEngineVersion,
6917
7041
  agreementTitle,
@@ -6944,6 +7068,11 @@ components:
6944
7068
  type: string
6945
7069
  format: date-time
6946
7070
  readOnly: true
7071
+ expiresAt:
7072
+ type: string
7073
+ format: date-time
7074
+ readOnly: true
7075
+ description: Immutable deadline exactly 30 days after agreement creation.
6947
7076
  updatedAt:
6948
7077
  type: string
6949
7078
  format: date-time
@@ -7036,6 +7165,11 @@ components:
7036
7165
  executionId:
7037
7166
  type: string
7038
7167
  description: The identifier of an agreement instance.
7168
+ expiresAt:
7169
+ type: string
7170
+ format: date-time
7171
+ nullable: true
7172
+ description: Immutable agreement deadline for active agreements.
7039
7173
  organizationId:
7040
7174
  type: string
7041
7175
  nullable: true
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@inklok/api-spec",
3
- "version": "7.10.0",
3
+ "version": "7.11.0",
4
4
  "description": "Canonical OpenAPI specification for the Inklok public API.",
5
5
  "main": "openapi.yaml",
6
6
  "license": "MIT",