@8lines/gauntlet-protocol 0.1.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 (91) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +265 -0
  3. package/dist/environment.d.ts +3 -0
  4. package/dist/environment.d.ts.map +1 -0
  5. package/dist/environment.js +32 -0
  6. package/dist/environment.js.map +1 -0
  7. package/dist/identifiers.d.ts +4 -0
  8. package/dist/identifiers.d.ts.map +1 -0
  9. package/dist/identifiers.js +5 -0
  10. package/dist/identifiers.js.map +1 -0
  11. package/dist/index.d.ts +8 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +8 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/placements.d.ts +5 -0
  16. package/dist/placements.d.ts.map +1 -0
  17. package/dist/placements.js +99 -0
  18. package/dist/placements.js.map +1 -0
  19. package/dist/portable-pattern.d.ts +2 -0
  20. package/dist/portable-pattern.d.ts.map +1 -0
  21. package/dist/portable-pattern.js +450 -0
  22. package/dist/portable-pattern.js.map +1 -0
  23. package/dist/preset-secrets.d.ts +7 -0
  24. package/dist/preset-secrets.d.ts.map +1 -0
  25. package/dist/preset-secrets.js +694 -0
  26. package/dist/preset-secrets.js.map +1 -0
  27. package/dist/revision.d.ts +11 -0
  28. package/dist/revision.d.ts.map +1 -0
  29. package/dist/revision.js +135 -0
  30. package/dist/revision.js.map +1 -0
  31. package/dist/schema-profile.d.ts +5 -0
  32. package/dist/schema-profile.d.ts.map +1 -0
  33. package/dist/schema-profile.js +295 -0
  34. package/dist/schema-profile.js.map +1 -0
  35. package/dist/semantic-validation.d.ts +24 -0
  36. package/dist/semantic-validation.d.ts.map +1 -0
  37. package/dist/semantic-validation.js +321 -0
  38. package/dist/semantic-validation.js.map +1 -0
  39. package/dist/types.d.ts +437 -0
  40. package/dist/types.d.ts.map +1 -0
  41. package/dist/types.js +2 -0
  42. package/dist/types.js.map +1 -0
  43. package/fixtures/v1/adapter-semantic-vectors.json +3257 -0
  44. package/fixtures/v1/adapter-semantic-vectors.schema.json +519 -0
  45. package/fixtures/v1/create-run-request.valid.json +33 -0
  46. package/fixtures/v1/data-source-page.valid.json +18 -0
  47. package/fixtures/v1/data-source-query.valid.json +12 -0
  48. package/fixtures/v1/data-source-resolve-request.valid.json +10 -0
  49. package/fixtures/v1/data-source-resolve-response.valid.json +17 -0
  50. package/fixtures/v1/health.valid.json +4 -0
  51. package/fixtures/v1/jcs-revision-vectors.json +114 -0
  52. package/fixtures/v1/manifest.invalid-major-version.json +18 -0
  53. package/fixtures/v1/manifest.invalid-unknown-property.json +27 -0
  54. package/fixtures/v1/manifest.minor-forward.valid.json +142 -0
  55. package/fixtures/v1/manifest.valid.json +137 -0
  56. package/fixtures/v1/operation.invalid-remote-ref.json +28 -0
  57. package/fixtures/v1/operation.invalid-schema-profile.json +28 -0
  58. package/fixtures/v1/operation.invalid-unsafe-id.json +28 -0
  59. package/fixtures/v1/operation.valid.json +227 -0
  60. package/fixtures/v1/problem.unsupported-capability.valid.json +7 -0
  61. package/fixtures/v1/problem.valid.json +8 -0
  62. package/fixtures/v1/problem.validation.valid.json +16 -0
  63. package/fixtures/v1/run-event.valid.json +21 -0
  64. package/fixtures/v1/run.cancelled.valid.json +17 -0
  65. package/fixtures/v1/run.failed.valid.json +32 -0
  66. package/fixtures/v1/run.invalid-active-problem.json +16 -0
  67. package/fixtures/v1/run.invalid-cancelled-problem.json +17 -0
  68. package/fixtures/v1/run.invalid-terminal-without-problem.json +12 -0
  69. package/fixtures/v1/run.invalid-timed-out-status.json +18 -0
  70. package/fixtures/v1/run.queued.valid.json +15 -0
  71. package/fixtures/v1/run.succeeded.valid.json +68 -0
  72. package/fixtures/v1/run.timed-out.valid.json +18 -0
  73. package/fixtures/v1/session-launch.valid.json +5 -0
  74. package/fixtures/v1/tc-schema-core-pattern-vectors.json +450 -0
  75. package/fixtures/v1/upload-response.valid.json +11 -0
  76. package/openapi/adapter-v1.yaml +251 -0
  77. package/package.json +41 -0
  78. package/schemas/v1/common.schema.json +558 -0
  79. package/schemas/v1/create-run-request.schema.json +16 -0
  80. package/schemas/v1/data-source-page.schema.json +15 -0
  81. package/schemas/v1/data-source-query.schema.json +14 -0
  82. package/schemas/v1/data-source-resolve-request.schema.json +16 -0
  83. package/schemas/v1/data-source-resolve-response.schema.json +27 -0
  84. package/schemas/v1/health.schema.json +12 -0
  85. package/schemas/v1/manifest.schema.json +147 -0
  86. package/schemas/v1/operation-definition.schema.json +326 -0
  87. package/schemas/v1/problem.schema.json +5 -0
  88. package/schemas/v1/run-event.schema.json +15 -0
  89. package/schemas/v1/run.schema.json +95 -0
  90. package/schemas/v1/session-launch.schema.json +13 -0
  91. package/schemas/v1/upload.schema.json +11 -0
@@ -0,0 +1,519 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://schemas.8lines.dev/gauntlet/fixtures/v1/adapter-semantic-vectors.schema.json",
4
+ "type": "object",
5
+ "required": [
6
+ "$schema",
7
+ "format",
8
+ "patchProfile",
9
+ "presetAssemblyProfile",
10
+ "workloadProfile",
11
+ "sourceFixtures",
12
+ "presetAnalysisLimits",
13
+ "documentVectors",
14
+ "presetSuites",
15
+ "workloads"
16
+ ],
17
+ "properties": {
18
+ "$schema": {
19
+ "const": "https://schemas.8lines.dev/gauntlet/fixtures/v1/adapter-semantic-vectors.schema.json"
20
+ },
21
+ "format": { "const": "tc-adapter-semantic-vectors@1" },
22
+ "patchProfile": { "const": "rfc6902-test-subset@1" },
23
+ "presetAssemblyProfile": { "const": "tc-preset-operation@1" },
24
+ "workloadProfile": { "const": "tc-preset-workloads@1" },
25
+ "sourceFixtures": {
26
+ "type": "array",
27
+ "prefixItems": [
28
+ { "$ref": "#/$defs/manifestSource" },
29
+ { "$ref": "#/$defs/operationSource" },
30
+ { "$ref": "#/$defs/resolveRequestSource" },
31
+ { "$ref": "#/$defs/resolveResponseSource" }
32
+ ],
33
+ "minItems": 4,
34
+ "maxItems": 4
35
+ },
36
+ "presetAnalysisLimits": {
37
+ "type": "object",
38
+ "required": [
39
+ "maxGraphNodes",
40
+ "maxGraphEdges",
41
+ "maxPresetVisits",
42
+ "minimumVisitBudget",
43
+ "graphNodeWeight",
44
+ "graphEdgeWeight",
45
+ "inputNodeWeight",
46
+ "routeCountSaturation"
47
+ ],
48
+ "properties": {
49
+ "maxGraphNodes": { "const": 250000 },
50
+ "maxGraphEdges": { "const": 500000 },
51
+ "maxPresetVisits": { "const": 500000 },
52
+ "minimumVisitBudget": { "const": 8192 },
53
+ "graphNodeWeight": { "const": 4 },
54
+ "graphEdgeWeight": { "const": 2 },
55
+ "inputNodeWeight": { "const": 64 },
56
+ "routeCountSaturation": { "const": 2 }
57
+ },
58
+ "additionalProperties": false
59
+ },
60
+ "documentVectors": {
61
+ "type": "array",
62
+ "items": {
63
+ "oneOf": [
64
+ { "$ref": "#/$defs/manifestVector" },
65
+ { "$ref": "#/$defs/operationVector" },
66
+ { "$ref": "#/$defs/resolveVector" }
67
+ ]
68
+ }
69
+ },
70
+ "presetSuites": {
71
+ "type": "array",
72
+ "items": { "$ref": "#/$defs/presetSuite" }
73
+ },
74
+ "workloads": {
75
+ "type": "array",
76
+ "items": { "$ref": "#/$defs/workload" }
77
+ }
78
+ },
79
+ "additionalProperties": false,
80
+ "$defs": {
81
+ "id": {
82
+ "type": "string",
83
+ "pattern": "^[a-z0-9]+(?:[.-][a-z0-9]+)*$"
84
+ },
85
+ "sha256": {
86
+ "type": "string",
87
+ "pattern": "^sha256:[0-9a-f]{64}$"
88
+ },
89
+ "jsonValue": {
90
+ "oneOf": [
91
+ { "type": "null" },
92
+ { "type": "boolean" },
93
+ { "type": "string" },
94
+ { "type": "number" },
95
+ {
96
+ "type": "array",
97
+ "items": { "$ref": "#/$defs/jsonValue" }
98
+ },
99
+ { "$ref": "#/$defs/jsonObject" }
100
+ ]
101
+ },
102
+ "jsonObject": {
103
+ "type": "object",
104
+ "additionalProperties": { "$ref": "#/$defs/jsonValue" }
105
+ },
106
+ "pointer": {
107
+ "type": "string",
108
+ "pattern": "^(?:/(?:[^~/]|~[01])*)+$"
109
+ },
110
+ "patches": {
111
+ "type": "array",
112
+ "items": {
113
+ "oneOf": [
114
+ {
115
+ "type": "object",
116
+ "required": ["op", "path", "value"],
117
+ "properties": {
118
+ "op": { "const": "add" },
119
+ "path": { "$ref": "#/$defs/pointer" },
120
+ "value": { "$ref": "#/$defs/jsonValue" }
121
+ },
122
+ "additionalProperties": false
123
+ },
124
+ {
125
+ "type": "object",
126
+ "required": ["op", "path"],
127
+ "properties": {
128
+ "op": { "const": "remove" },
129
+ "path": { "$ref": "#/$defs/pointer" }
130
+ },
131
+ "additionalProperties": false
132
+ },
133
+ {
134
+ "type": "object",
135
+ "required": ["op", "path", "value"],
136
+ "properties": {
137
+ "op": { "const": "replace" },
138
+ "path": { "$ref": "#/$defs/pointer" },
139
+ "value": { "$ref": "#/$defs/jsonValue" }
140
+ },
141
+ "additionalProperties": false
142
+ },
143
+ {
144
+ "type": "object",
145
+ "required": ["op", "from", "path"],
146
+ "properties": {
147
+ "op": { "const": "copy" },
148
+ "from": { "$ref": "#/$defs/pointer" },
149
+ "path": { "$ref": "#/$defs/pointer" }
150
+ },
151
+ "additionalProperties": false
152
+ }
153
+ ]
154
+ }
155
+ },
156
+ "revisionDirective": {
157
+ "oneOf": [
158
+ {
159
+ "type": "object",
160
+ "required": ["mode", "expect"],
161
+ "properties": {
162
+ "mode": { "const": "preserve" },
163
+ "expect": { "enum": ["match", "mismatch"] }
164
+ },
165
+ "additionalProperties": false
166
+ },
167
+ {
168
+ "type": "object",
169
+ "required": ["mode", "value", "expect"],
170
+ "properties": {
171
+ "mode": { "const": "set" },
172
+ "value": { "$ref": "#/$defs/sha256" },
173
+ "expect": { "const": "match" }
174
+ },
175
+ "additionalProperties": false
176
+ }
177
+ ]
178
+ },
179
+ "manifestSource": {
180
+ "type": "object",
181
+ "required": ["id", "file", "sha256", "revisionField"],
182
+ "properties": {
183
+ "id": { "const": "manifest" },
184
+ "file": { "const": "manifest.valid.json" },
185
+ "sha256": { "$ref": "#/$defs/sha256" },
186
+ "revisionField": { "const": "manifestRevision" }
187
+ },
188
+ "additionalProperties": false
189
+ },
190
+ "operationSource": {
191
+ "type": "object",
192
+ "required": ["id", "file", "sha256", "revisionField"],
193
+ "properties": {
194
+ "id": { "const": "operation" },
195
+ "file": { "const": "operation.valid.json" },
196
+ "sha256": { "$ref": "#/$defs/sha256" },
197
+ "revisionField": { "const": "revision" }
198
+ },
199
+ "additionalProperties": false
200
+ },
201
+ "resolveRequestSource": {
202
+ "type": "object",
203
+ "required": ["id", "file", "sha256"],
204
+ "properties": {
205
+ "id": { "const": "resolve-request" },
206
+ "file": { "const": "data-source-resolve-request.valid.json" },
207
+ "sha256": { "$ref": "#/$defs/sha256" }
208
+ },
209
+ "additionalProperties": false
210
+ },
211
+ "resolveResponseSource": {
212
+ "type": "object",
213
+ "required": ["id", "file", "sha256"],
214
+ "properties": {
215
+ "id": { "const": "resolve-response" },
216
+ "file": { "const": "data-source-resolve-response.valid.json" },
217
+ "sha256": { "$ref": "#/$defs/sha256" }
218
+ },
219
+ "additionalProperties": false
220
+ },
221
+ "manifestDocument": {
222
+ "type": "object",
223
+ "required": ["source", "patches", "revision"],
224
+ "properties": {
225
+ "source": { "const": "manifest" },
226
+ "patches": { "$ref": "#/$defs/patches" },
227
+ "revision": { "$ref": "#/$defs/revisionDirective" }
228
+ },
229
+ "additionalProperties": false
230
+ },
231
+ "operationDocument": {
232
+ "type": "object",
233
+ "required": ["source", "patches", "revision"],
234
+ "properties": {
235
+ "source": { "const": "operation" },
236
+ "patches": { "$ref": "#/$defs/patches" },
237
+ "revision": { "$ref": "#/$defs/revisionDirective" }
238
+ },
239
+ "additionalProperties": false
240
+ },
241
+ "resolveRequestDocument": {
242
+ "type": "object",
243
+ "required": ["source", "patches"],
244
+ "properties": {
245
+ "source": { "const": "resolve-request" },
246
+ "patches": { "$ref": "#/$defs/patches" }
247
+ },
248
+ "additionalProperties": false
249
+ },
250
+ "resolveResponseDocument": {
251
+ "type": "object",
252
+ "required": ["source", "patches"],
253
+ "properties": {
254
+ "source": { "const": "resolve-response" },
255
+ "patches": { "$ref": "#/$defs/patches" }
256
+ },
257
+ "additionalProperties": false
258
+ },
259
+ "manifestVector": {
260
+ "type": "object",
261
+ "required": ["id", "predicate", "precondition", "document", "expected"],
262
+ "properties": {
263
+ "id": { "$ref": "#/$defs/id" },
264
+ "predicate": { "const": "manifest" },
265
+ "precondition": { "enum": ["envelope-valid", "owned-json-defensive"] },
266
+ "document": { "$ref": "#/$defs/manifestDocument" },
267
+ "expected": { "type": "boolean" }
268
+ },
269
+ "additionalProperties": false
270
+ },
271
+ "operationVector": {
272
+ "type": "object",
273
+ "required": ["id", "predicate", "precondition", "document", "expected"],
274
+ "properties": {
275
+ "id": { "$ref": "#/$defs/id" },
276
+ "predicate": { "const": "operation" },
277
+ "precondition": { "const": "envelope-valid" },
278
+ "document": { "$ref": "#/$defs/operationDocument" },
279
+ "expected": { "type": "boolean" }
280
+ },
281
+ "additionalProperties": false
282
+ },
283
+ "resolveVector": {
284
+ "type": "object",
285
+ "required": ["id", "predicate", "precondition", "request", "response", "expected"],
286
+ "properties": {
287
+ "id": { "$ref": "#/$defs/id" },
288
+ "predicate": { "const": "resolve" },
289
+ "precondition": { "const": "envelope-valid" },
290
+ "request": { "$ref": "#/$defs/resolveRequestDocument" },
291
+ "response": { "$ref": "#/$defs/resolveResponseDocument" },
292
+ "expected": { "type": "boolean" }
293
+ },
294
+ "additionalProperties": false
295
+ },
296
+ "inputSchema": {
297
+ "type": "object",
298
+ "required": ["$schema", "type"],
299
+ "properties": {
300
+ "$schema": { "const": "https://json-schema.org/draft/2020-12/schema" },
301
+ "type": { "const": "object" }
302
+ },
303
+ "additionalProperties": { "$ref": "#/$defs/jsonValue" }
304
+ },
305
+ "presetCase": {
306
+ "type": "object",
307
+ "required": ["id", "presetInputs", "expectedRevision", "expected"],
308
+ "properties": {
309
+ "id": { "$ref": "#/$defs/id" },
310
+ "presetInputs": {
311
+ "type": "array",
312
+ "minItems": 1,
313
+ "items": { "$ref": "#/$defs/jsonObject" }
314
+ },
315
+ "expectedRevision": { "$ref": "#/$defs/sha256" },
316
+ "expected": { "type": "boolean" }
317
+ },
318
+ "additionalProperties": false
319
+ },
320
+ "presetSuite": {
321
+ "type": "object",
322
+ "required": ["id", "inputSchema", "secretPointers", "cases"],
323
+ "properties": {
324
+ "id": { "$ref": "#/$defs/id" },
325
+ "inputSchema": { "$ref": "#/$defs/inputSchema" },
326
+ "secretPointers": {
327
+ "type": "array",
328
+ "items": { "$ref": "#/$defs/pointer" }
329
+ },
330
+ "cases": {
331
+ "type": "array",
332
+ "minItems": 1,
333
+ "items": { "$ref": "#/$defs/presetCase" }
334
+ }
335
+ },
336
+ "additionalProperties": false
337
+ },
338
+ "deepRecipe": {
339
+ "type": "object",
340
+ "required": ["kind", "depth", "leaf", "secretPointer"],
341
+ "properties": {
342
+ "kind": { "const": "deep-chain" },
343
+ "depth": { "const": 1500 },
344
+ "leaf": { "enum": ["empty", "secret"] },
345
+ "secretPointer": { "type": "boolean" }
346
+ },
347
+ "additionalProperties": false
348
+ },
349
+ "cartesianRecipe": {
350
+ "type": "object",
351
+ "required": ["kind", "propertyCount", "ruleCopies", "presetCount"],
352
+ "properties": {
353
+ "kind": { "const": "rules-presets-cartesian" },
354
+ "propertyCount": { "const": 225 },
355
+ "ruleCopies": { "const": 2 },
356
+ "presetCount": { "const": 225 }
357
+ },
358
+ "additionalProperties": false
359
+ },
360
+ "denseRecipe": {
361
+ "type": "object",
362
+ "required": ["kind", "graphSize"],
363
+ "properties": {
364
+ "kind": { "const": "dense-mutual-reference" },
365
+ "graphSize": { "const": 120 }
366
+ },
367
+ "additionalProperties": false
368
+ },
369
+ "wideRecipe": {
370
+ "type": "object",
371
+ "required": ["kind", "itemCount", "secretRule"],
372
+ "properties": {
373
+ "kind": { "const": "wide-array" },
374
+ "itemCount": { "const": 900000 },
375
+ "secretRule": { "type": "boolean" }
376
+ },
377
+ "additionalProperties": false
378
+ },
379
+ "standardNodeReferenceBudget": {
380
+ "type": "object",
381
+ "required": ["timeoutMs", "execArgv"],
382
+ "properties": {
383
+ "timeoutMs": { "const": 2500 },
384
+ "execArgv": { "type": "array", "maxItems": 0 }
385
+ },
386
+ "additionalProperties": false
387
+ },
388
+ "wideControlNodeReferenceBudget": {
389
+ "type": "object",
390
+ "required": ["timeoutMs", "execArgv"],
391
+ "properties": {
392
+ "timeoutMs": { "const": 10000 },
393
+ "execArgv": {
394
+ "const": ["--max-old-space-size=512", "--max-semi-space-size=48"]
395
+ }
396
+ },
397
+ "additionalProperties": false
398
+ },
399
+ "wideSecretNodeReferenceBudget": {
400
+ "type": "object",
401
+ "required": [
402
+ "timeoutMs",
403
+ "execArgv",
404
+ "maxRssKiBExclusive",
405
+ "maxRssDeltaKiBExclusive",
406
+ "controlId"
407
+ ],
408
+ "properties": {
409
+ "timeoutMs": { "const": 10000 },
410
+ "execArgv": {
411
+ "const": ["--max-old-space-size=512", "--max-semi-space-size=48"]
412
+ },
413
+ "maxRssKiBExclusive": { "const": 458752 },
414
+ "maxRssDeltaKiBExclusive": { "const": 40960 },
415
+ "controlId": { "const": "preset.workload.wide.no-secret-control" }
416
+ },
417
+ "additionalProperties": false
418
+ },
419
+ "nodeReferenceBudget": {
420
+ "oneOf": [
421
+ { "$ref": "#/$defs/standardNodeReferenceBudget" },
422
+ { "$ref": "#/$defs/wideControlNodeReferenceBudget" },
423
+ { "$ref": "#/$defs/wideSecretNodeReferenceBudget" }
424
+ ]
425
+ },
426
+ "workload": {
427
+ "type": "object",
428
+ "required": [
429
+ "id",
430
+ "recipe",
431
+ "expected",
432
+ "expectedRevision",
433
+ "canonicalBytes",
434
+ "nodeReferenceBudget"
435
+ ],
436
+ "properties": {
437
+ "id": { "$ref": "#/$defs/id" },
438
+ "recipe": {
439
+ "oneOf": [
440
+ { "$ref": "#/$defs/deepRecipe" },
441
+ { "$ref": "#/$defs/cartesianRecipe" },
442
+ { "$ref": "#/$defs/denseRecipe" },
443
+ { "$ref": "#/$defs/wideRecipe" }
444
+ ]
445
+ },
446
+ "expected": { "type": "boolean" },
447
+ "expectedRevision": { "$ref": "#/$defs/sha256" },
448
+ "canonicalBytes": {
449
+ "type": "integer",
450
+ "minimum": 1,
451
+ "maximum": 9007199254740991
452
+ },
453
+ "nodeReferenceBudget": { "$ref": "#/$defs/nodeReferenceBudget" }
454
+ },
455
+ "additionalProperties": false,
456
+ "allOf": [
457
+ {
458
+ "if": {
459
+ "type": "object",
460
+ "required": ["id"],
461
+ "properties": {
462
+ "id": {
463
+ "enum": [
464
+ "preset.workload.deep.no-rule-empty",
465
+ "preset.workload.deep.secret-rule-empty",
466
+ "preset.workload.deep.secret-rule-populated",
467
+ "preset.workload.cartesian.empty",
468
+ "preset.workload.dense.empty"
469
+ ]
470
+ }
471
+ }
472
+ },
473
+ "then": {
474
+ "type": "object",
475
+ "properties": {
476
+ "nodeReferenceBudget": {
477
+ "$ref": "#/$defs/standardNodeReferenceBudget"
478
+ }
479
+ }
480
+ }
481
+ },
482
+ {
483
+ "if": {
484
+ "type": "object",
485
+ "required": ["id"],
486
+ "properties": {
487
+ "id": { "const": "preset.workload.wide.no-secret-control" }
488
+ }
489
+ },
490
+ "then": {
491
+ "type": "object",
492
+ "properties": {
493
+ "nodeReferenceBudget": {
494
+ "$ref": "#/$defs/wideControlNodeReferenceBudget"
495
+ }
496
+ }
497
+ }
498
+ },
499
+ {
500
+ "if": {
501
+ "type": "object",
502
+ "required": ["id"],
503
+ "properties": {
504
+ "id": { "const": "preset.workload.wide.secret" }
505
+ }
506
+ },
507
+ "then": {
508
+ "type": "object",
509
+ "properties": {
510
+ "nodeReferenceBudget": {
511
+ "$ref": "#/$defs/wideSecretNodeReferenceBudget"
512
+ }
513
+ }
514
+ }
515
+ }
516
+ ]
517
+ }
518
+ }
519
+ }
@@ -0,0 +1,33 @@
1
+ {
2
+ "operationRevision": "sha256:2e301a636fb48d2bec64fc7e91b62d8a45e47af3a28f665b6b809f6a4b19d9e8",
3
+ "input": {
4
+ "applicationId": "app-42",
5
+ "message": "Review quarterly access",
6
+ "notify": true,
7
+ "options": { "includeInactive": false, "mode": "preview" },
8
+ "roles": ["viewer", "auditor"],
9
+ "apiToken": "write-only-secret",
10
+ "attachment": {
11
+ "kind": "file",
12
+ "uploadId": "upload-01",
13
+ "name": "review-notes.txt",
14
+ "mediaType": "text/plain",
15
+ "sizeBytes": 128,
16
+ "expiresAt": "2026-08-29T13:00:00Z"
17
+ }
18
+ },
19
+ "context": {
20
+ "requestId": "request-01",
21
+ "locale": "en-GB",
22
+ "timeZone": "Europe/Warsaw",
23
+ "actor": { "id": "operator-01", "displayName": "Operator" },
24
+ "target": { "id": "acme-portal", "environment": "development" }
25
+ },
26
+ "dryRun": true,
27
+ "idempotencyKey": "access-review-2026-q3",
28
+ "confirmation": {
29
+ "operationId": "application-access-review",
30
+ "operationRevision": "sha256:2e301a636fb48d2bec64fc7e91b62d8a45e47af3a28f665b6b809f6a4b19d9e8",
31
+ "impact": "write"
32
+ }
33
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "items": [
3
+ {
4
+ "value": "app-42",
5
+ "label": "Customer Portal",
6
+ "description": "Primary customer-facing portal",
7
+ "group": "Production",
8
+ "metadata": { "owner": "Platform" }
9
+ },
10
+ {
11
+ "value": "app-84",
12
+ "label": "Legacy Portal",
13
+ "group": "Archived",
14
+ "disabled": true
15
+ }
16
+ ],
17
+ "nextCursor": "page-3"
18
+ }
@@ -0,0 +1,12 @@
1
+ {
2
+ "search": "portal",
3
+ "cursor": "page-2",
4
+ "limit": 20,
5
+ "dependencies": {
6
+ "/options/includeInactive": false
7
+ },
8
+ "context": {
9
+ "requestId": "request-03",
10
+ "target": { "id": "acme-portal", "environment": "development" }
11
+ }
12
+ }
@@ -0,0 +1,10 @@
1
+ {
2
+ "values": ["app-42", "missing-app"],
3
+ "dependencies": {
4
+ "/options/includeInactive": false
5
+ },
6
+ "context": {
7
+ "requestId": "request-04",
8
+ "target": { "id": "acme-portal" }
9
+ }
10
+ }
@@ -0,0 +1,17 @@
1
+ {
2
+ "results": [
3
+ {
4
+ "value": "app-42",
5
+ "item": {
6
+ "value": "app-42",
7
+ "label": "Customer Portal",
8
+ "description": "Primary customer-facing portal",
9
+ "group": "Production"
10
+ }
11
+ },
12
+ {
13
+ "value": "missing-app",
14
+ "item": null
15
+ }
16
+ ]
17
+ }
@@ -0,0 +1,4 @@
1
+ {
2
+ "status": "ok",
3
+ "protocolVersion": "1.0"
4
+ }