@mdbase-dev/connect-protocol 0.1.0-beta.31 → 0.1.0-beta.33

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.
@@ -53,11 +53,39 @@
53
53
  }
54
54
  },
55
55
  "authority_authorization_changed": { "category": "authorization", "recovery": "reauthorize" },
56
+ "authorization_binding_incompatible": {
57
+ "category": "compatibility",
58
+ "recovery": "upgrade_application",
59
+ "details": {
60
+ "required": ["contract", "required", "supported", "peer"],
61
+ "properties": {
62
+ "contract": { "type": "string" },
63
+ "required": { "type": "array", "items": { "type": "integer" } },
64
+ "supported": { "type": "array", "items": { "type": "integer" } },
65
+ "peer": { "type": "string" },
66
+ "operation": { "type": "string" }
67
+ }
68
+ }
69
+ },
56
70
  "authorization_cancelled": { "category": "cancellation", "recovery": "none" },
57
71
  "authorization_expired": { "category": "authorization", "recovery": "reauthorize" },
58
72
  "authorization_replayed": { "category": "integrity", "recovery": "reauthorize" },
59
73
  "browser_required": { "category": "compatibility", "recovery": "none" },
60
74
  "callback_url_required": { "category": "validation", "recovery": "fix_request" },
75
+ "capability_contract_incompatible": {
76
+ "category": "compatibility",
77
+ "recovery": "upgrade_application",
78
+ "details": {
79
+ "required": ["contract", "required", "supported", "peer"],
80
+ "properties": {
81
+ "contract": { "type": "string" },
82
+ "required": { "type": "array", "items": { "type": "integer" } },
83
+ "supported": { "type": "array", "items": { "type": "integer" } },
84
+ "peer": { "type": "string" },
85
+ "operation": { "type": "string" }
86
+ }
87
+ }
88
+ },
61
89
  "change_cursor_reset": { "category": "conflict", "recovery": "refresh" },
62
90
  "collection_access_denied": { "category": "authorization", "recovery": "reauthorize" },
63
91
  "collection_configuration_invalid": {
@@ -143,6 +171,20 @@
143
171
  "device_authorization_failed": { "category": "authorization", "recovery": "reauthorize" },
144
172
  "direct_operation_rejected": { "category": "authorization", "recovery": "reauthorize" },
145
173
  "discovery_failed": { "category": "availability", "recovery": "retry" },
174
+ "durable_mutation_unsupported": {
175
+ "category": "compatibility",
176
+ "recovery": "upgrade_connector",
177
+ "details": {
178
+ "required": ["contract", "required", "supported", "peer"],
179
+ "properties": {
180
+ "contract": { "type": "string" },
181
+ "required": { "type": "array", "items": { "type": "integer" } },
182
+ "supported": { "type": "array", "items": { "type": "integer" } },
183
+ "peer": { "type": "string" },
184
+ "operation": { "type": "string" }
185
+ }
186
+ }
187
+ },
146
188
  "encrypted_relay_rejected": { "category": "authorization", "recovery": "reauthorize" },
147
189
  "encryption_required": { "category": "authorization", "recovery": "reauthorize" },
148
190
  "expired_token": { "category": "authorization", "recovery": "reauthorize" },
@@ -205,6 +247,15 @@
205
247
  "manifest_load_failed": { "category": "availability", "recovery": "retry" },
206
248
  "manifest_required": { "category": "validation", "recovery": "fix_request" },
207
249
  "missing_grant_key": { "category": "authorization", "recovery": "reauthorize" },
250
+ "mutation_recovery_expired": { "category": "compatibility", "recovery": "none" },
251
+ "mutation_request_conflict": {
252
+ "category": "conflict",
253
+ "recovery": "resolve_conflict",
254
+ "details": {
255
+ "required": ["request_id"],
256
+ "properties": { "request_id": { "type": "string" } }
257
+ }
258
+ },
208
259
  "no_pending_mutation": { "category": "conflict", "recovery": "refresh" },
209
260
  "not_authorized": { "category": "authorization", "recovery": "reauthorize" },
210
261
  "not_remote_authority": { "category": "compatibility", "recovery": "choose_collection" },
@@ -227,7 +278,14 @@
227
278
  }
228
279
  }
229
280
  },
230
- "operation_outcome_unknown": { "category": "conflict", "recovery": "resolve_outcome" },
281
+ "operation_outcome_unknown": {
282
+ "category": "conflict",
283
+ "recovery": "resolve_outcome",
284
+ "details": {
285
+ "required": ["request_id"],
286
+ "properties": { "request_id": { "type": "string" } }
287
+ }
288
+ },
231
289
  "path_occupied": { "category": "conflict", "recovery": "resolve_conflict" },
232
290
  "pending_mutation_unresolved": { "category": "conflict", "recovery": "resolve_outcome" },
233
291
  "query_snapshot_changed": { "category": "conflict", "recovery": "refresh" },
@@ -244,6 +302,11 @@
244
302
  "reconnect_required": { "category": "authorization", "recovery": "reauthorize" },
245
303
  "redirect_uri_required": { "category": "validation", "recovery": "fix_request" },
246
304
  "reference_updates_unsupported": { "category": "compatibility", "recovery": "fix_request" },
305
+ "registry_backup_invalid": { "category": "integrity", "recovery": "contact_support" },
306
+ "registry_busy": { "category": "availability", "recovery": "retry" },
307
+ "registry_corrupt": { "category": "integrity", "recovery": "repair_collection" },
308
+ "registry_migration_failed": { "category": "internal", "recovery": "contact_support" },
309
+ "registry_schema_incompatible": { "category": "compatibility", "recovery": "upgrade_connector" },
247
310
  "relay_authorization_expired": { "category": "authorization", "recovery": "reauthorize" },
248
311
  "relay_unavailable": { "category": "availability", "recovery": "retry" },
249
312
  "sandbox_unsupported": { "category": "compatibility", "recovery": "fix_request" },
@@ -254,6 +317,20 @@
254
317
  "temporarily_unavailable": { "category": "availability", "recovery": "retry" },
255
318
  "timeout": { "category": "availability", "recovery": "retry" },
256
319
  "token_exchange_failed": { "category": "availability", "recovery": "retry" },
320
+ "transport_protocol_incompatible": {
321
+ "category": "compatibility",
322
+ "recovery": "upgrade_connector",
323
+ "details": {
324
+ "required": ["contract", "required", "supported", "peer"],
325
+ "properties": {
326
+ "contract": { "type": "string" },
327
+ "required": { "type": "array", "items": { "type": "integer" } },
328
+ "supported": { "type": "array", "items": { "type": "integer" } },
329
+ "peer": { "type": "string" },
330
+ "operation": { "type": "string" }
331
+ }
332
+ }
333
+ },
257
334
  "type_pack_provision_failed": { "category": "validation", "recovery": "repair_collection" },
258
335
  "unknown_collection": { "category": "selection", "recovery": "choose_collection" },
259
336
  "unsafe_file_path": { "category": "validation", "recovery": "fix_request" },
@@ -22,7 +22,35 @@
22
22
  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
23
23
  },
24
24
  "operation": {
25
- "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync"]
25
+ "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync"]
26
+ },
27
+ "connectContractRequirements": {
28
+ "type": "object",
29
+ "additionalProperties": false,
30
+ "required": ["operation_transport", "authorization_binding", "semantic_capabilities"],
31
+ "properties": {
32
+ "operation_transport": { "type": "integer", "minimum": 1 },
33
+ "authorization_binding": { "type": "integer", "minimum": 1 },
34
+ "semantic_capabilities": { "type": "integer", "minimum": 1 },
35
+ "durable_mutation": { "type": "integer", "minimum": 1 }
36
+ }
37
+ },
38
+ "connectContractSupport": {
39
+ "type": "object",
40
+ "additionalProperties": false,
41
+ "required": ["operation_transport", "authorization_binding", "semantic_capabilities", "durable_mutation"],
42
+ "properties": {
43
+ "operation_transport": { "$ref": "#/$defs/versionSet" },
44
+ "authorization_binding": { "$ref": "#/$defs/versionSet" },
45
+ "semantic_capabilities": { "$ref": "#/$defs/versionSet" },
46
+ "durable_mutation": { "$ref": "#/$defs/versionSet" }
47
+ }
48
+ },
49
+ "versionSet": {
50
+ "type": "array",
51
+ "minItems": 1,
52
+ "uniqueItems": true,
53
+ "items": { "type": "integer", "minimum": 1 }
26
54
  },
27
55
  "contractRequirement": {
28
56
  "type": "object",
@@ -83,7 +111,7 @@
83
111
  "relayHello": {
84
112
  "type": "object",
85
113
  "additionalProperties": false,
86
- "required": ["type", "protocol_version", "connector_version", "capabilities"],
114
+ "required": ["type", "protocol_version", "connector_version", "capabilities", "contract_support"],
87
115
  "properties": {
88
116
  "type": { "const": "relay_hello" },
89
117
  "protocol_version": { "const": 1 },
@@ -92,13 +120,14 @@
92
120
  "type": "array",
93
121
  "uniqueItems": true,
94
122
  "items": { "type": "string", "minLength": 1, "maxLength": 100 }
95
- }
123
+ },
124
+ "contract_support": { "$ref": "#/$defs/connectContractSupport" }
96
125
  }
97
126
  },
98
127
  "relayWelcome": {
99
128
  "type": "object",
100
129
  "additionalProperties": false,
101
- "required": ["type", "protocol_version", "session_id", "capabilities"],
130
+ "required": ["type", "protocol_version", "session_id", "capabilities", "contract_support"],
102
131
  "properties": {
103
132
  "type": { "const": "relay_welcome" },
104
133
  "protocol_version": { "const": 1 },
@@ -107,18 +136,31 @@
107
136
  "type": "array",
108
137
  "uniqueItems": true,
109
138
  "items": { "type": "string", "minLength": 1, "maxLength": 100 }
110
- }
139
+ },
140
+ "contract_support": { "$ref": "#/$defs/connectContractSupport" }
111
141
  }
112
142
  },
113
143
  "relayIncompatible": {
114
144
  "type": "object",
115
145
  "additionalProperties": false,
116
- "required": ["type", "protocol_version", "code", "message", "update_url"],
146
+ "required": ["type", "protocol_version", "code", "message", "minimum_connector_version", "update_url"],
117
147
  "properties": {
118
148
  "type": { "const": "relay_incompatible" },
119
149
  "protocol_version": { "const": 1 },
120
- "code": { "const": "connector_upgrade_required" },
150
+ "code": { "enum": ["connector_upgrade_required", "transport_protocol_incompatible", "authorization_binding_incompatible", "capability_contract_incompatible", "durable_mutation_unsupported"] },
121
151
  "message": { "type": "string", "minLength": 1 },
152
+ "details": {
153
+ "type": "object",
154
+ "additionalProperties": false,
155
+ "required": ["contract", "required", "supported", "peer"],
156
+ "properties": {
157
+ "contract": { "enum": ["operation_transport", "authorization_binding", "semantic_capabilities", "durable_mutation"] },
158
+ "required": { "$ref": "#/$defs/versionSet" },
159
+ "supported": { "type": "array", "uniqueItems": true, "items": { "type": "integer", "minimum": 1 } },
160
+ "peer": { "const": "connector" }
161
+ }
162
+ },
163
+ "minimum_connector_version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+(?:-[0-9A-Za-z.-]+)?$" },
122
164
  "update_url": { "type": "string", "format": "uri", "pattern": "^https://" }
123
165
  }
124
166
  },
@@ -128,7 +170,7 @@
128
170
  "required": ["type", "protocol_version", "request_id", "grant_id", "collection_id", "application_id", "operation", "input"],
129
171
  "properties": {
130
172
  "type": { "const": "operation_request" },
131
- "protocol_version": { "const": 1 },
173
+ "protocol_version": { "const": 2 },
132
174
  "request_id": { "$ref": "#/$defs/uuid" },
133
175
  "grant_id": { "$ref": "#/$defs/uuid" },
134
176
  "collection_id": { "$ref": "#/$defs/uuid" },
@@ -142,7 +184,7 @@
142
184
  "additionalProperties": false,
143
185
  "required": ["protocol_version", "request_id", "input"],
144
186
  "properties": {
145
- "protocol_version": { "const": 1 },
187
+ "protocol_version": { "const": 2 },
146
188
  "request_id": { "$ref": "#/$defs/uuid" },
147
189
  "input": true
148
190
  }
@@ -152,7 +194,7 @@
152
194
  "additionalProperties": false,
153
195
  "required": ["protocol_version", "request_id", "ok"],
154
196
  "properties": {
155
- "protocol_version": { "const": 1 },
197
+ "protocol_version": { "const": 2 },
156
198
  "request_id": { "$ref": "#/$defs/uuid" },
157
199
  "ok": { "type": "boolean" },
158
200
  "result": true,
@@ -178,7 +220,7 @@
178
220
  "required": ["type", "protocol_version", "request_id", "ok"],
179
221
  "properties": {
180
222
  "type": { "const": "operation_response" },
181
- "protocol_version": { "const": 1 },
223
+ "protocol_version": { "const": 2 },
182
224
  "request_id": { "$ref": "#/$defs/uuid" },
183
225
  "ok": { "type": "boolean" },
184
226
  "result": true,
@@ -247,11 +289,12 @@
247
289
  "applicationAuthorizationBinding": {
248
290
  "type": "object",
249
291
  "additionalProperties": false,
250
- "required": ["protocol_version", "authorization_id", "application_id", "application_manifest_digest", "application_installation_id", "installation_signing_public_key", "grant_agreement_public_key", "grant_signing_public_key", "flow", "authorization_nonce", "issued_at", "expires_at", "code_challenge", "requested_operations"],
292
+ "required": ["protocol_version", "authorization_id", "application_id", "application_declaration_id", "application_manifest_digest", "application_installation_id", "installation_signing_public_key", "grant_agreement_public_key", "grant_signing_public_key", "flow", "authorization_nonce", "issued_at", "expires_at", "code_challenge", "contracts", "requested_operations"],
251
293
  "properties": {
252
- "protocol_version": { "const": 2 },
294
+ "protocol_version": { "const": 4 },
253
295
  "authorization_id": { "$ref": "#/$defs/uuid" },
254
296
  "application_id": { "$ref": "#/$defs/uuid" },
297
+ "application_declaration_id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" },
255
298
  "application_manifest_digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
256
299
  "application_installation_id": { "$ref": "#/$defs/uuid" },
257
300
  "installation_signing_public_key": { "$ref": "#/$defs/p256PublicKey" },
@@ -264,6 +307,7 @@
264
307
  "redirect_uri": { "type": "string", "format": "uri" },
265
308
  "state": { "type": "string", "maxLength": 500 },
266
309
  "code_challenge": { "type": "string", "pattern": "^[A-Za-z0-9_-]{43}$" },
310
+ "contracts": { "$ref": "#/$defs/connectContractRequirements" },
267
311
  "requested_operations": {
268
312
  "type": "array",
269
313
  "uniqueItems": true,
@@ -309,6 +353,11 @@
309
353
  "maxItems": 20,
310
354
  "items": { "$ref": "#/$defs/contractRequirement" }
311
355
  },
356
+ "configuration": {
357
+ "type": "array",
358
+ "maxItems": 100,
359
+ "items": { "$ref": "#/$defs/configurationRequirement" }
360
+ },
312
361
  "access": { "enum": ["contract", "full_collection"] },
313
362
  "collection_kind": { "const": "hosted" },
314
363
  "files": {
@@ -383,9 +432,46 @@
383
432
  "type": "array",
384
433
  "maxItems": 100,
385
434
  "items": { "$ref": "#/$defs/typePackProvision" }
435
+ },
436
+ "configuration": {
437
+ "type": "array",
438
+ "maxItems": 100,
439
+ "items": { "$ref": "#/$defs/configurationProvision" }
386
440
  }
387
441
  }
388
442
  },
443
+ "configurationRequirement": {
444
+ "type": "object",
445
+ "additionalProperties": false,
446
+ "required": ["id", "path", "predicate", "value"],
447
+ "properties": {
448
+ "id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" },
449
+ "path": { "type": "string", "pattern": "^/x-[^/]+(?:/.*)?$", "maxLength": 1024 },
450
+ "predicate": { "const": "contains" },
451
+ "value": { "oneOf": [
452
+ { "type": "string" },
453
+ { "type": "number" },
454
+ { "type": "boolean" },
455
+ { "type": "null" }
456
+ ] }
457
+ }
458
+ },
459
+ "configurationProvision": {
460
+ "type": "object",
461
+ "additionalProperties": false,
462
+ "required": ["requirement", "operation", "path", "value"],
463
+ "properties": {
464
+ "requirement": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$" },
465
+ "operation": { "const": "set_add" },
466
+ "path": { "type": "string", "pattern": "^/x-[^/]+(?:/.*)?$", "maxLength": 1024 },
467
+ "value": { "oneOf": [
468
+ { "type": "string" },
469
+ { "type": "number" },
470
+ { "type": "boolean" },
471
+ { "type": "null" }
472
+ ] }
473
+ }
474
+ },
389
475
  "authorizationOfferRequest": {
390
476
  "type": "object",
391
477
  "additionalProperties": false,
@@ -418,12 +504,14 @@
418
504
  "authorizationActivationRequest": {
419
505
  "type": "object",
420
506
  "additionalProperties": false,
421
- "required": ["type", "protocol_version", "request_id", "authorization_id", "collection_id", "requirements", "provisions", "contract_setups", "grant"],
507
+ "required": ["type", "protocol_version", "request_id", "authorization_id", "application_declaration_id", "application_manifest_digest", "collection_id", "requirements", "provisions", "contract_setups", "grant"],
422
508
  "properties": {
423
509
  "type": { "const": "authorization_activation_request" },
424
510
  "protocol_version": { "const": 1 },
425
511
  "request_id": { "$ref": "#/$defs/uuid" },
426
512
  "authorization_id": { "$ref": "#/$defs/uuid" },
513
+ "application_declaration_id": { "type": "string", "pattern": "^[a-z][a-z0-9]*(?:[._-][a-z0-9]+)+$" },
514
+ "application_manifest_digest": { "type": "string", "pattern": "^[0-9a-f]{64}$" },
427
515
  "collection_id": { "$ref": "#/$defs/uuid" },
428
516
  "requirements": { "$ref": "#/$defs/applicationRequirements" },
429
517
  "provisions": { "$ref": "#/$defs/applicationProvisions" },
@@ -454,6 +542,8 @@
454
542
  "maxItems": 20,
455
543
  "items": { "$ref": "#/$defs/contractSetupChoice" }
456
544
  },
545
+ "setup_assessment": true,
546
+ "provision_receipt": true,
457
547
  "error": {
458
548
  "type": "object",
459
549
  "additionalProperties": false,
@@ -14,7 +14,7 @@
14
14
  "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
15
15
  },
16
16
  "operation": {
17
- "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "file_control"]
17
+ "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "file_control"]
18
18
  },
19
19
  "envelope": {
20
20
  "type": "object",
@@ -0,0 +1,63 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://mdbase.dev/connect/schemas/encrypted-relay.v2.json",
4
+ "title": "mdbase connect encrypted operation transport 2",
5
+ "description": "Opaque authenticated operation envelopes routed between an application and authority.",
6
+ "oneOf": [
7
+ { "$ref": "#/$defs/request" },
8
+ { "$ref": "#/$defs/response" },
9
+ { "$ref": "#/$defs/rejected" }
10
+ ],
11
+ "$defs": {
12
+ "uuid": {
13
+ "type": "string",
14
+ "pattern": "^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}$"
15
+ },
16
+ "operation": {
17
+ "enum": ["describe", "changes", "read", "query", "list_views", "execute_view", "read_view_source", "create_view_source", "update_view_source", "delete_view_source", "validate", "create", "update", "delete", "rename", "read_type", "create_type", "update_type", "assess_type_pack", "apply_type_pack", "assess_collection_setup", "apply_collection_setup", "list_timers", "put_timer", "cancel_timer", "reconcile_timers", "sync", "file_control"]
18
+ },
19
+ "envelope": {
20
+ "type": "object",
21
+ "additionalProperties": false,
22
+ "required": ["type", "protocol_version", "suite", "request_id", "grant_id", "application_id", "connector_id", "collection_id", "operation", "scope_epoch", "key_id", "counter", "ciphertext"],
23
+ "properties": {
24
+ "type": { "enum": ["encrypted_operation_request", "encrypted_operation_response"] },
25
+ "protocol_version": { "const": 2 },
26
+ "suite": { "const": "P256-HKDF-SHA256-AES256GCM" },
27
+ "request_id": { "$ref": "#/$defs/uuid" },
28
+ "grant_id": { "$ref": "#/$defs/uuid" },
29
+ "application_id": { "$ref": "#/$defs/uuid" },
30
+ "connector_id": { "$ref": "#/$defs/uuid" },
31
+ "collection_id": { "$ref": "#/$defs/uuid" },
32
+ "operation": { "$ref": "#/$defs/operation" },
33
+ "scope_epoch": { "type": "integer", "minimum": 1, "maximum": 9007199254740991 },
34
+ "key_id": { "type": "string", "minLength": 1, "maxLength": 200 },
35
+ "counter": { "type": "string", "pattern": "^[1-9][0-9]{0,19}$" },
36
+ "ciphertext": { "type": "string", "minLength": 1, "maxLength": 2800000, "pattern": "^[A-Za-z0-9_-]+$" }
37
+ }
38
+ },
39
+ "request": {
40
+ "allOf": [
41
+ { "$ref": "#/$defs/envelope" },
42
+ { "type": "object", "properties": { "type": { "const": "encrypted_operation_request" } } }
43
+ ]
44
+ },
45
+ "response": {
46
+ "allOf": [
47
+ { "$ref": "#/$defs/envelope" },
48
+ { "type": "object", "properties": { "type": { "const": "encrypted_operation_response" } } }
49
+ ]
50
+ },
51
+ "rejected": {
52
+ "type": "object",
53
+ "additionalProperties": false,
54
+ "required": ["type", "protocol_version", "request_id", "problem"],
55
+ "properties": {
56
+ "type": { "const": "encrypted_operation_rejected" },
57
+ "protocol_version": { "const": 2 },
58
+ "request_id": { "$ref": "#/$defs/uuid" },
59
+ "problem": { "$ref": "https://schemas.mdbase.dev/connect/problem/v1" }
60
+ }
61
+ }
62
+ }
63
+ }
@@ -323,7 +323,7 @@
323
323
  "transferStatus": {
324
324
  "type": "object",
325
325
  "additionalProperties": false,
326
- "required": ["protocol_version", "type", "transfer_id", "state", "received", "received_bytes"],
326
+ "required": ["protocol_version", "type", "transfer_id", "state", "received", "received_bytes", "uploaded_parts"],
327
327
  "properties": {
328
328
  "protocol_version": { "const": 1 },
329
329
  "type": { "const": "file_transfer_status" },
@@ -334,7 +334,12 @@
334
334
  "uniqueItems": true,
335
335
  "items": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
336
336
  },
337
- "received_bytes": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 }
337
+ "received_bytes": { "type": "integer", "minimum": 0, "maximum": 9007199254740991 },
338
+ "uploaded_parts": {
339
+ "type": "array",
340
+ "maxItems": 10000,
341
+ "items": { "$ref": "#/$defs/uploadedPart" }
342
+ }
338
343
  }
339
344
  },
340
345
  "prepareUploadPartRequest": {
@@ -39,6 +39,11 @@
39
39
  "additionalProperties": false,
40
40
  "required": ["type_packs"],
41
41
  "properties": {
42
+ "configuration": {
43
+ "type": "array",
44
+ "maxItems": 50,
45
+ "items": { "$ref": "#/$defs/configurationProvision" }
46
+ },
42
47
  "type_packs": {
43
48
  "type": "array",
44
49
  "maxItems": 20,
@@ -118,6 +123,11 @@
118
123
  "description": "Require a durable provider-backed collection with direct sync support."
119
124
  },
120
125
  "files": { "$ref": "#/$defs/fileRequirement" },
126
+ "configuration": {
127
+ "type": "array",
128
+ "maxItems": 50,
129
+ "items": { "$ref": "#/$defs/configurationRequirement" }
130
+ },
121
131
  "contracts": {
122
132
  "type": "array",
123
133
  "maxItems": 20,
@@ -146,6 +156,46 @@
146
156
  }
147
157
  }
148
158
  },
159
+ "configurationValue": {
160
+ "anyOf": [
161
+ { "type": "string" },
162
+ { "type": "number" },
163
+ { "type": "boolean" },
164
+ { "type": "null" }
165
+ ]
166
+ },
167
+ "configurationRequirement": {
168
+ "type": "object",
169
+ "additionalProperties": false,
170
+ "required": ["id", "path", "predicate", "value"],
171
+ "properties": {
172
+ "id": {
173
+ "type": "string",
174
+ "minLength": 1,
175
+ "maxLength": 100,
176
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
177
+ },
178
+ "path": { "type": "string", "minLength": 1, "maxLength": 1024 },
179
+ "predicate": { "const": "contains" },
180
+ "value": { "$ref": "#/$defs/configurationValue" }
181
+ }
182
+ },
183
+ "configurationProvision": {
184
+ "type": "object",
185
+ "additionalProperties": false,
186
+ "required": ["requirement", "operation", "path", "value"],
187
+ "properties": {
188
+ "requirement": {
189
+ "type": "string",
190
+ "minLength": 1,
191
+ "maxLength": 100,
192
+ "pattern": "^[a-z][a-z0-9]*(?:-[a-z0-9]+)*$"
193
+ },
194
+ "operation": { "const": "set_add" },
195
+ "path": { "type": "string", "minLength": 1, "maxLength": 1024 },
196
+ "value": { "$ref": "#/$defs/configurationValue" }
197
+ }
198
+ },
149
199
  "applicationCapability": {
150
200
  "enum": [
151
201
  "collection.inspect",
@@ -169,6 +219,7 @@
169
219
  "definitions.update",
170
220
  "definitions.type-pack.inspect",
171
221
  "definitions.type-pack.apply",
222
+ "collection.setup.apply",
172
223
  "timers.list",
173
224
  "timers.put",
174
225
  "timers.cancel",