@arcforges/api-client 1.0.0-ci.19.1 → 1.0.0-ci.201.1

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 (43) hide show
  1. package/NOTICE +57 -5
  2. package/README.md +9 -2
  3. package/build-identity.json +192 -0
  4. package/contracts.binpb +0 -0
  5. package/dist/gen/http.d.ts +10 -0
  6. package/dist/gen/http.js +13 -0
  7. package/dist/index.d.ts +10 -1
  8. package/dist/index.js +20 -2
  9. package/dist/shapes/gen/AndroidUpdate.d.ts +41 -0
  10. package/dist/shapes/gen/AndroidUpdate.js +620 -0
  11. package/dist/shapes/gen/CatalogIndex.d.ts +49 -0
  12. package/dist/shapes/gen/CatalogIndex.js +703 -0
  13. package/dist/shapes/gen/CatalogRevocations.d.ts +46 -0
  14. package/dist/shapes/gen/CatalogRevocations.js +647 -0
  15. package/dist/shapes/gen/DeclarativePanel.d.ts +154 -0
  16. package/dist/shapes/gen/DeclarativePanel.js +2988 -0
  17. package/dist/shapes/gen/ExtensionManifest.d.ts +278 -0
  18. package/dist/shapes/gen/ExtensionManifest.js +3974 -0
  19. package/dist/shapes/gen/ExtensionWorkflow.d.ts +151 -0
  20. package/dist/shapes/gen/ExtensionWorkflow.js +2251 -0
  21. package/dist/shapes/gen/PackageInventory.d.ts +24 -0
  22. package/dist/shapes/gen/PackageInventory.js +327 -0
  23. package/dist/shapes/gen/PartReceipt.d.ts +21 -0
  24. package/dist/shapes/gen/PartReceipt.js +290 -0
  25. package/dist/shapes/gen/PolicyBody.d.ts +269 -0
  26. package/dist/shapes/gen/PolicyBody.js +4188 -0
  27. package/dist/shapes/gen/RealmDescriptor.d.ts +39 -0
  28. package/dist/shapes/gen/RealmDescriptor.js +627 -0
  29. package/package.json +15 -7
  30. package/sbom.cdx.json +17 -17
  31. package/schemas/public/http/v1/inventory.schema.json +49 -0
  32. package/schemas/public/http/v1/manifest.schema.json +1459 -0
  33. package/schemas/public/http/v1/panel.schema.json +963 -0
  34. package/schemas/public/http/v1/policy-body.schema.json +1376 -0
  35. package/schemas/public/http/v1/schema.json +30 -0
  36. package/schemas/public/http/v1/signed-formats.schema.json +748 -0
  37. package/schemas/public/http/v1/workflow.schema.json +715 -0
  38. package/schemas/public/proto/arcforges/events/v1/events.proto +14 -0
  39. package/schemas/public/proto/arcforges/foundation/v1/foundation.proto +373 -0
  40. package/schemas/public/proto/arcforges/hello/v1/hello.proto +23 -0
  41. package/schemas/public/proto/arcforges/publicapi/v1/content.proto +767 -0
  42. package/schemas/public/proto/arcforges/publicapi/v1/descriptors.proto +27 -0
  43. package/source.json +35 -10
@@ -0,0 +1,1376 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$comment": "SPDX-License-Identifier: Apache-2.0",
4
+ "title": "PolicyBody",
5
+ "type": "object",
6
+ "properties": {
7
+ "schemaVersion": {
8
+ "type": "string",
9
+ "const": "policy.body.v1"
10
+ },
11
+ "version": {
12
+ "type": "string",
13
+ "minLength": 1,
14
+ "maxLength": 128,
15
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
16
+ },
17
+ "parentVersion": {
18
+ "type": "string",
19
+ "minLength": 1,
20
+ "maxLength": 128,
21
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
22
+ },
23
+ "issuedAt": {
24
+ "type": "string",
25
+ "minLength": 1,
26
+ "maxLength": 32,
27
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
28
+ },
29
+ "expiresAt": {
30
+ "type": "string",
31
+ "minLength": 1,
32
+ "maxLength": 32,
33
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
34
+ },
35
+ "rules": {
36
+ "type": "array",
37
+ "items": {
38
+ "$ref": "#/$defs/PolicyRule"
39
+ },
40
+ "minItems": 0,
41
+ "maxItems": 1000
42
+ },
43
+ "experiments": {
44
+ "type": "array",
45
+ "items": {
46
+ "$ref": "#/$defs/PolicyExperiment"
47
+ },
48
+ "minItems": 0,
49
+ "maxItems": 32
50
+ },
51
+ "reason": {
52
+ "type": "string",
53
+ "minLength": 1,
54
+ "maxLength": 4096
55
+ }
56
+ },
57
+ "required": [
58
+ "schemaVersion",
59
+ "version",
60
+ "issuedAt",
61
+ "expiresAt",
62
+ "rules",
63
+ "experiments",
64
+ "reason"
65
+ ],
66
+ "additionalProperties": false,
67
+ "$defs": {
68
+ "PolicyAll": {
69
+ "title": "PolicyAll",
70
+ "type": "object",
71
+ "properties": {
72
+ "op": {
73
+ "type": "string",
74
+ "const": "all"
75
+ },
76
+ "terms": {
77
+ "type": "array",
78
+ "items": {
79
+ "$ref": "#/$defs/PolicyPredicate"
80
+ },
81
+ "minItems": 1,
82
+ "maxItems": 128
83
+ }
84
+ },
85
+ "required": ["op", "terms"],
86
+ "additionalProperties": false
87
+ },
88
+ "PolicyAny": {
89
+ "title": "PolicyAny",
90
+ "type": "object",
91
+ "properties": {
92
+ "op": {
93
+ "type": "string",
94
+ "const": "any"
95
+ },
96
+ "terms": {
97
+ "type": "array",
98
+ "items": {
99
+ "$ref": "#/$defs/PolicyPredicate"
100
+ },
101
+ "minItems": 1,
102
+ "maxItems": 128
103
+ }
104
+ },
105
+ "required": ["op", "terms"],
106
+ "additionalProperties": false
107
+ },
108
+ "PolicyNot": {
109
+ "title": "PolicyNot",
110
+ "type": "object",
111
+ "properties": {
112
+ "op": {
113
+ "type": "string",
114
+ "const": "not"
115
+ },
116
+ "term": {
117
+ "$ref": "#/$defs/PolicyPredicate"
118
+ }
119
+ },
120
+ "required": ["op", "term"],
121
+ "additionalProperties": false
122
+ },
123
+ "PolicyEqualText": {
124
+ "title": "PolicyEqualText",
125
+ "type": "object",
126
+ "properties": {
127
+ "op": {
128
+ "type": "string",
129
+ "const": "equal"
130
+ },
131
+ "field": {
132
+ "type": "string",
133
+ "enum": [
134
+ "realmId",
135
+ "workspaceId",
136
+ "userId",
137
+ "installationId",
138
+ "product",
139
+ "platform",
140
+ "appVersion"
141
+ ]
142
+ },
143
+ "value": {
144
+ "type": "string",
145
+ "minLength": 1,
146
+ "maxLength": 128
147
+ }
148
+ },
149
+ "required": ["op", "field", "value"],
150
+ "additionalProperties": false
151
+ },
152
+ "PolicyEqualMajor": {
153
+ "title": "PolicyEqualMajor",
154
+ "type": "object",
155
+ "properties": {
156
+ "op": {
157
+ "type": "string",
158
+ "const": "equal"
159
+ },
160
+ "field": {
161
+ "type": "string",
162
+ "const": "contractsMajor"
163
+ },
164
+ "value": {
165
+ "type": "integer",
166
+ "minimum": 1,
167
+ "maximum": 4294967295
168
+ }
169
+ },
170
+ "required": ["op", "field", "value"],
171
+ "additionalProperties": false
172
+ },
173
+ "PolicyInText": {
174
+ "title": "PolicyInText",
175
+ "type": "object",
176
+ "properties": {
177
+ "op": {
178
+ "type": "string",
179
+ "const": "in"
180
+ },
181
+ "field": {
182
+ "type": "string",
183
+ "enum": [
184
+ "realmId",
185
+ "workspaceId",
186
+ "userId",
187
+ "installationId",
188
+ "product",
189
+ "platform",
190
+ "appVersion"
191
+ ]
192
+ },
193
+ "values": {
194
+ "type": "array",
195
+ "items": {
196
+ "type": "string",
197
+ "minLength": 1,
198
+ "maxLength": 128
199
+ },
200
+ "minItems": 1,
201
+ "maxItems": 100
202
+ }
203
+ },
204
+ "required": ["op", "field", "values"],
205
+ "additionalProperties": false
206
+ },
207
+ "PolicyInMajor": {
208
+ "title": "PolicyInMajor",
209
+ "type": "object",
210
+ "properties": {
211
+ "op": {
212
+ "type": "string",
213
+ "const": "in"
214
+ },
215
+ "field": {
216
+ "type": "string",
217
+ "const": "contractsMajor"
218
+ },
219
+ "values": {
220
+ "type": "array",
221
+ "items": {
222
+ "type": "integer",
223
+ "minimum": 1,
224
+ "maximum": 4294967295
225
+ },
226
+ "minItems": 1,
227
+ "maxItems": 100
228
+ }
229
+ },
230
+ "required": ["op", "field", "values"],
231
+ "additionalProperties": false
232
+ },
233
+ "PolicyVersionAtLeast": {
234
+ "title": "PolicyVersionAtLeast",
235
+ "type": "object",
236
+ "properties": {
237
+ "op": {
238
+ "type": "string",
239
+ "const": "versionAtLeast"
240
+ },
241
+ "field": {
242
+ "type": "string",
243
+ "const": "appVersion"
244
+ },
245
+ "version": {
246
+ "type": "string",
247
+ "minLength": 1,
248
+ "maxLength": 128,
249
+ "description": "Version token for the declared appVersion compatibility profile. This shape does not invent ordering or use string comparison across products."
250
+ }
251
+ },
252
+ "required": ["op", "field", "version"],
253
+ "additionalProperties": false
254
+ },
255
+ "PolicyPercent": {
256
+ "title": "PolicyPercent",
257
+ "type": "object",
258
+ "properties": {
259
+ "op": {
260
+ "type": "string",
261
+ "const": "percent"
262
+ },
263
+ "subject": {
264
+ "type": "string",
265
+ "enum": ["user", "workspace", "installation"]
266
+ },
267
+ "salt": {
268
+ "type": "string",
269
+ "minLength": 1,
270
+ "maxLength": 128,
271
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
272
+ },
273
+ "allocation": {
274
+ "type": "integer",
275
+ "minimum": 0,
276
+ "maximum": 10000
277
+ }
278
+ },
279
+ "required": ["op", "subject", "salt", "allocation"],
280
+ "additionalProperties": false
281
+ },
282
+ "PolicyPredicate": {
283
+ "title": "PolicyPredicate",
284
+ "oneOf": [
285
+ {
286
+ "$ref": "#/$defs/PolicyAll"
287
+ },
288
+ {
289
+ "$ref": "#/$defs/PolicyAny"
290
+ },
291
+ {
292
+ "$ref": "#/$defs/PolicyNot"
293
+ },
294
+ {
295
+ "$ref": "#/$defs/PolicyEqualText"
296
+ },
297
+ {
298
+ "$ref": "#/$defs/PolicyEqualMajor"
299
+ },
300
+ {
301
+ "$ref": "#/$defs/PolicyInText"
302
+ },
303
+ {
304
+ "$ref": "#/$defs/PolicyInMajor"
305
+ },
306
+ {
307
+ "$ref": "#/$defs/PolicyVersionAtLeast"
308
+ },
309
+ {
310
+ "$ref": "#/$defs/PolicyPercent"
311
+ }
312
+ ]
313
+ },
314
+ "PolicyTarget": {
315
+ "title": "PolicyTarget",
316
+ "oneOf": [
317
+ {
318
+ "$ref": "#/$defs/PolicyStableTarget"
319
+ },
320
+ {
321
+ "$ref": "#/$defs/PolicyAll"
322
+ },
323
+ {
324
+ "$ref": "#/$defs/PolicyAny"
325
+ },
326
+ {
327
+ "$ref": "#/$defs/PolicyNot"
328
+ },
329
+ {
330
+ "$ref": "#/$defs/PolicyEqualText"
331
+ },
332
+ {
333
+ "$ref": "#/$defs/PolicyEqualMajor"
334
+ },
335
+ {
336
+ "$ref": "#/$defs/PolicyInText"
337
+ },
338
+ {
339
+ "$ref": "#/$defs/PolicyInMajor"
340
+ },
341
+ {
342
+ "$ref": "#/$defs/PolicyVersionAtLeast"
343
+ },
344
+ {
345
+ "$ref": "#/$defs/PolicyPercent"
346
+ }
347
+ ]
348
+ },
349
+ "PolicyStop": {
350
+ "title": "PolicyStop",
351
+ "type": "object",
352
+ "properties": {
353
+ "mode": {
354
+ "type": "string",
355
+ "enum": ["BlockNew", "DrainExisting", "StopAtSafePoint", "ReadOnly"]
356
+ },
357
+ "reason": {
358
+ "type": "string",
359
+ "minLength": 1,
360
+ "maxLength": 2048
361
+ },
362
+ "effectiveAt": {
363
+ "type": "string",
364
+ "minLength": 1,
365
+ "maxLength": 32,
366
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
367
+ },
368
+ "until": {
369
+ "type": "string",
370
+ "minLength": 1,
371
+ "maxLength": 32,
372
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
373
+ },
374
+ "capabilities": {
375
+ "type": "array",
376
+ "items": {
377
+ "type": "string",
378
+ "minLength": 1,
379
+ "maxLength": 128,
380
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
381
+ },
382
+ "minItems": 0,
383
+ "maxItems": 256
384
+ }
385
+ },
386
+ "required": ["mode", "reason", "effectiveAt", "until"],
387
+ "additionalProperties": false
388
+ },
389
+ "PolicyRevokedVersion": {
390
+ "title": "PolicyRevokedVersion",
391
+ "type": "object",
392
+ "properties": {
393
+ "packageId": {
394
+ "type": "string",
395
+ "minLength": 1,
396
+ "maxLength": 128,
397
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._-]*$"
398
+ },
399
+ "version": {
400
+ "type": "string",
401
+ "minLength": 1,
402
+ "maxLength": 128,
403
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-((0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(\\.(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*))?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
404
+ },
405
+ "hash": {
406
+ "type": "string",
407
+ "minLength": 1,
408
+ "maxLength": 64,
409
+ "pattern": "^[0-9a-f]{64}$"
410
+ },
411
+ "reason": {
412
+ "type": "string",
413
+ "minLength": 1,
414
+ "maxLength": 2048
415
+ }
416
+ },
417
+ "required": ["packageId", "version", "hash", "reason"],
418
+ "additionalProperties": false
419
+ },
420
+ "PolicyMinimumContracts": {
421
+ "title": "PolicyMinimumContracts",
422
+ "type": "object",
423
+ "properties": {
424
+ "publicMajor": {
425
+ "type": "integer",
426
+ "minimum": 1,
427
+ "maximum": 4294967295
428
+ },
429
+ "localMajor": {
430
+ "type": "integer",
431
+ "minimum": 1,
432
+ "maximum": 4294967295
433
+ },
434
+ "minimumRelease": {
435
+ "type": "string",
436
+ "minLength": 1,
437
+ "maxLength": 128,
438
+ "pattern": "^(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)\\.(0|[1-9][0-9]*)(-((0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*)(\\.(0|[1-9][0-9]*|[0-9]*[A-Za-z-][0-9A-Za-z-]*))*))?(\\+[0-9A-Za-z-]+(\\.[0-9A-Za-z-]+)*)?$"
439
+ }
440
+ },
441
+ "required": ["publicMajor", "localMajor", "minimumRelease"],
442
+ "additionalProperties": false
443
+ },
444
+ "PolicyMinimumApp": {
445
+ "title": "PolicyMinimumApp",
446
+ "type": "object",
447
+ "properties": {
448
+ "product": {
449
+ "type": "string",
450
+ "minLength": 1,
451
+ "maxLength": 128,
452
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
453
+ },
454
+ "platform": {
455
+ "type": "string",
456
+ "minLength": 1,
457
+ "maxLength": 128,
458
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
459
+ },
460
+ "minimumVersionName": {
461
+ "type": "string",
462
+ "minLength": 1,
463
+ "maxLength": 128
464
+ },
465
+ "minimumVersionCode": {
466
+ "type": "string",
467
+ "minLength": 1,
468
+ "maxLength": 20,
469
+ "pattern": "^(0|[1-9][0-9]*)$",
470
+ "x-arcforges-rules": ["uint64String"]
471
+ }
472
+ },
473
+ "required": ["product", "platform", "minimumVersionName"],
474
+ "additionalProperties": false
475
+ },
476
+ "PolicyStopRule": {
477
+ "title": "PolicyStopRule",
478
+ "type": "object",
479
+ "properties": {
480
+ "ruleId": {
481
+ "type": "string",
482
+ "minLength": 1,
483
+ "maxLength": 128,
484
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
485
+ },
486
+ "key": {
487
+ "type": "string",
488
+ "enum": ["cloud.ai.stop", "cloud.tools.stop", "cloud.upload.stop", "cloud.sync.stop"]
489
+ },
490
+ "value": {
491
+ "$ref": "#/$defs/PolicyStop"
492
+ },
493
+ "scope": {
494
+ "type": "string",
495
+ "enum": ["realm", "workspace"]
496
+ },
497
+ "target": {
498
+ "$ref": "#/$defs/PolicyTarget"
499
+ },
500
+ "priority": {
501
+ "type": "integer",
502
+ "minimum": 0,
503
+ "maximum": 1000
504
+ },
505
+ "effectiveAt": {
506
+ "type": "string",
507
+ "minLength": 1,
508
+ "maxLength": 32,
509
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
510
+ },
511
+ "expiresAt": {
512
+ "type": "string",
513
+ "minLength": 1,
514
+ "maxLength": 32,
515
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
516
+ }
517
+ },
518
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
519
+ "additionalProperties": false
520
+ },
521
+ "PolicyRevocationsRule": {
522
+ "title": "PolicyRevocationsRule",
523
+ "type": "object",
524
+ "properties": {
525
+ "ruleId": {
526
+ "type": "string",
527
+ "minLength": 1,
528
+ "maxLength": 128,
529
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
530
+ },
531
+ "key": {
532
+ "type": "string",
533
+ "enum": ["extension.revokedVersions"]
534
+ },
535
+ "value": {
536
+ "type": "array",
537
+ "items": {
538
+ "$ref": "#/$defs/PolicyRevokedVersion"
539
+ },
540
+ "minItems": 0,
541
+ "maxItems": 1000
542
+ },
543
+ "scope": {
544
+ "type": "string",
545
+ "enum": ["realm"]
546
+ },
547
+ "target": {
548
+ "$ref": "#/$defs/PolicyTarget"
549
+ },
550
+ "priority": {
551
+ "type": "integer",
552
+ "minimum": 0,
553
+ "maximum": 1000
554
+ },
555
+ "effectiveAt": {
556
+ "type": "string",
557
+ "minLength": 1,
558
+ "maxLength": 32,
559
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
560
+ },
561
+ "expiresAt": {
562
+ "type": "string",
563
+ "minLength": 1,
564
+ "maxLength": 32,
565
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
566
+ }
567
+ },
568
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
569
+ "additionalProperties": false
570
+ },
571
+ "PolicyMinimumContractsRule": {
572
+ "title": "PolicyMinimumContractsRule",
573
+ "type": "object",
574
+ "properties": {
575
+ "ruleId": {
576
+ "type": "string",
577
+ "minLength": 1,
578
+ "maxLength": 128,
579
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
580
+ },
581
+ "key": {
582
+ "type": "string",
583
+ "enum": ["client.minimumContracts"]
584
+ },
585
+ "value": {
586
+ "$ref": "#/$defs/PolicyMinimumContracts"
587
+ },
588
+ "scope": {
589
+ "type": "string",
590
+ "enum": ["realm"]
591
+ },
592
+ "target": {
593
+ "$ref": "#/$defs/PolicyTarget"
594
+ },
595
+ "priority": {
596
+ "type": "integer",
597
+ "minimum": 0,
598
+ "maximum": 1000
599
+ },
600
+ "effectiveAt": {
601
+ "type": "string",
602
+ "minLength": 1,
603
+ "maxLength": 32,
604
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
605
+ },
606
+ "expiresAt": {
607
+ "type": "string",
608
+ "minLength": 1,
609
+ "maxLength": 32,
610
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
611
+ }
612
+ },
613
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
614
+ "additionalProperties": false
615
+ },
616
+ "PolicyMinimumAppRule": {
617
+ "title": "PolicyMinimumAppRule",
618
+ "type": "object",
619
+ "properties": {
620
+ "ruleId": {
621
+ "type": "string",
622
+ "minLength": 1,
623
+ "maxLength": 128,
624
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
625
+ },
626
+ "key": {
627
+ "type": "string",
628
+ "enum": ["client.minimumApp"]
629
+ },
630
+ "value": {
631
+ "type": "array",
632
+ "items": {
633
+ "$ref": "#/$defs/PolicyMinimumApp"
634
+ },
635
+ "minItems": 1,
636
+ "maxItems": 32
637
+ },
638
+ "scope": {
639
+ "type": "string",
640
+ "enum": ["realm"]
641
+ },
642
+ "target": {
643
+ "$ref": "#/$defs/PolicyTarget"
644
+ },
645
+ "priority": {
646
+ "type": "integer",
647
+ "minimum": 0,
648
+ "maximum": 1000
649
+ },
650
+ "effectiveAt": {
651
+ "type": "string",
652
+ "minLength": 1,
653
+ "maxLength": 32,
654
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
655
+ },
656
+ "expiresAt": {
657
+ "type": "string",
658
+ "minLength": 1,
659
+ "maxLength": 32,
660
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
661
+ }
662
+ },
663
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
664
+ "additionalProperties": false
665
+ },
666
+ "PolicyCacheRule": {
667
+ "title": "PolicyCacheRule",
668
+ "type": "object",
669
+ "properties": {
670
+ "ruleId": {
671
+ "type": "string",
672
+ "minLength": 1,
673
+ "maxLength": 128,
674
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
675
+ },
676
+ "key": {
677
+ "type": "string",
678
+ "enum": ["mobile.cacheBytes"]
679
+ },
680
+ "value": {
681
+ "type": "integer",
682
+ "minimum": 1048576,
683
+ "maximum": 536870912
684
+ },
685
+ "scope": {
686
+ "type": "string",
687
+ "enum": ["realm", "user", "installation"]
688
+ },
689
+ "target": {
690
+ "$ref": "#/$defs/PolicyTarget"
691
+ },
692
+ "priority": {
693
+ "type": "integer",
694
+ "minimum": 0,
695
+ "maximum": 1000
696
+ },
697
+ "effectiveAt": {
698
+ "type": "string",
699
+ "minLength": 1,
700
+ "maxLength": 32,
701
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
702
+ },
703
+ "expiresAt": {
704
+ "type": "string",
705
+ "minLength": 1,
706
+ "maxLength": 32,
707
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
708
+ }
709
+ },
710
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
711
+ "additionalProperties": false
712
+ },
713
+ "PolicyPollRule": {
714
+ "title": "PolicyPollRule",
715
+ "type": "object",
716
+ "properties": {
717
+ "ruleId": {
718
+ "type": "string",
719
+ "minLength": 1,
720
+ "maxLength": 128,
721
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
722
+ },
723
+ "key": {
724
+ "type": "string",
725
+ "enum": ["client.pollIntervalMs"]
726
+ },
727
+ "value": {
728
+ "type": "integer",
729
+ "minimum": 1000,
730
+ "maximum": 60000
731
+ },
732
+ "scope": {
733
+ "type": "string",
734
+ "enum": ["realm", "installation"]
735
+ },
736
+ "target": {
737
+ "$ref": "#/$defs/PolicyTarget"
738
+ },
739
+ "priority": {
740
+ "type": "integer",
741
+ "minimum": 0,
742
+ "maximum": 1000
743
+ },
744
+ "effectiveAt": {
745
+ "type": "string",
746
+ "minLength": 1,
747
+ "maxLength": 32,
748
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
749
+ },
750
+ "expiresAt": {
751
+ "type": "string",
752
+ "minLength": 1,
753
+ "maxLength": 32,
754
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
755
+ }
756
+ },
757
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
758
+ "additionalProperties": false
759
+ },
760
+ "PolicyTraceSampleRule": {
761
+ "title": "PolicyTraceSampleRule",
762
+ "type": "object",
763
+ "properties": {
764
+ "ruleId": {
765
+ "type": "string",
766
+ "minLength": 1,
767
+ "maxLength": 128,
768
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
769
+ },
770
+ "key": {
771
+ "type": "string",
772
+ "enum": ["telemetry.traceSamplePpm"]
773
+ },
774
+ "value": {
775
+ "type": "integer",
776
+ "minimum": 0,
777
+ "maximum": 1000000
778
+ },
779
+ "scope": {
780
+ "type": "string",
781
+ "enum": ["realm"]
782
+ },
783
+ "target": {
784
+ "$ref": "#/$defs/PolicyTarget"
785
+ },
786
+ "priority": {
787
+ "type": "integer",
788
+ "minimum": 0,
789
+ "maximum": 1000
790
+ },
791
+ "effectiveAt": {
792
+ "type": "string",
793
+ "minLength": 1,
794
+ "maxLength": 32,
795
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
796
+ },
797
+ "expiresAt": {
798
+ "type": "string",
799
+ "minLength": 1,
800
+ "maxLength": 32,
801
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
802
+ }
803
+ },
804
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
805
+ "additionalProperties": false
806
+ },
807
+ "PolicyTraceBufferRule": {
808
+ "title": "PolicyTraceBufferRule",
809
+ "type": "object",
810
+ "properties": {
811
+ "ruleId": {
812
+ "type": "string",
813
+ "minLength": 1,
814
+ "maxLength": 128,
815
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
816
+ },
817
+ "key": {
818
+ "type": "string",
819
+ "enum": ["telemetry.traceBufferBytes"]
820
+ },
821
+ "value": {
822
+ "type": "integer",
823
+ "minimum": 1048576,
824
+ "maximum": 16777216
825
+ },
826
+ "scope": {
827
+ "type": "string",
828
+ "enum": ["installation"]
829
+ },
830
+ "target": {
831
+ "$ref": "#/$defs/PolicyTarget"
832
+ },
833
+ "priority": {
834
+ "type": "integer",
835
+ "minimum": 0,
836
+ "maximum": 1000
837
+ },
838
+ "effectiveAt": {
839
+ "type": "string",
840
+ "minLength": 1,
841
+ "maxLength": 32,
842
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
843
+ },
844
+ "expiresAt": {
845
+ "type": "string",
846
+ "minLength": 1,
847
+ "maxLength": 32,
848
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
849
+ }
850
+ },
851
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
852
+ "additionalProperties": false
853
+ },
854
+ "PolicyModelCallsRule": {
855
+ "title": "PolicyModelCallsRule",
856
+ "type": "object",
857
+ "properties": {
858
+ "ruleId": {
859
+ "type": "string",
860
+ "minLength": 1,
861
+ "maxLength": 128,
862
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
863
+ },
864
+ "key": {
865
+ "type": "string",
866
+ "enum": ["ai.maxModelCalls"]
867
+ },
868
+ "value": {
869
+ "type": "integer",
870
+ "minimum": 1,
871
+ "maximum": 64
872
+ },
873
+ "scope": {
874
+ "type": "string",
875
+ "enum": ["realm", "workspace"]
876
+ },
877
+ "target": {
878
+ "$ref": "#/$defs/PolicyTarget"
879
+ },
880
+ "priority": {
881
+ "type": "integer",
882
+ "minimum": 0,
883
+ "maximum": 1000
884
+ },
885
+ "effectiveAt": {
886
+ "type": "string",
887
+ "minLength": 1,
888
+ "maxLength": 32,
889
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
890
+ },
891
+ "expiresAt": {
892
+ "type": "string",
893
+ "minLength": 1,
894
+ "maxLength": 32,
895
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
896
+ }
897
+ },
898
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
899
+ "additionalProperties": false
900
+ },
901
+ "PolicyToolCallsRule": {
902
+ "title": "PolicyToolCallsRule",
903
+ "type": "object",
904
+ "properties": {
905
+ "ruleId": {
906
+ "type": "string",
907
+ "minLength": 1,
908
+ "maxLength": 128,
909
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
910
+ },
911
+ "key": {
912
+ "type": "string",
913
+ "enum": ["ai.maxToolCalls"]
914
+ },
915
+ "value": {
916
+ "type": "integer",
917
+ "minimum": 1,
918
+ "maximum": 256
919
+ },
920
+ "scope": {
921
+ "type": "string",
922
+ "enum": ["realm", "workspace"]
923
+ },
924
+ "target": {
925
+ "$ref": "#/$defs/PolicyTarget"
926
+ },
927
+ "priority": {
928
+ "type": "integer",
929
+ "minimum": 0,
930
+ "maximum": 1000
931
+ },
932
+ "effectiveAt": {
933
+ "type": "string",
934
+ "minLength": 1,
935
+ "maxLength": 32,
936
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
937
+ },
938
+ "expiresAt": {
939
+ "type": "string",
940
+ "minLength": 1,
941
+ "maxLength": 32,
942
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
943
+ }
944
+ },
945
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
946
+ "additionalProperties": false
947
+ },
948
+ "PolicyParallelToolsRule": {
949
+ "title": "PolicyParallelToolsRule",
950
+ "type": "object",
951
+ "properties": {
952
+ "ruleId": {
953
+ "type": "string",
954
+ "minLength": 1,
955
+ "maxLength": 128,
956
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
957
+ },
958
+ "key": {
959
+ "type": "string",
960
+ "enum": ["ai.maxParallelTools"]
961
+ },
962
+ "value": {
963
+ "type": "integer",
964
+ "minimum": 1,
965
+ "maximum": 8
966
+ },
967
+ "scope": {
968
+ "type": "string",
969
+ "enum": ["realm", "workspace"]
970
+ },
971
+ "target": {
972
+ "$ref": "#/$defs/PolicyTarget"
973
+ },
974
+ "priority": {
975
+ "type": "integer",
976
+ "minimum": 0,
977
+ "maximum": 1000
978
+ },
979
+ "effectiveAt": {
980
+ "type": "string",
981
+ "minLength": 1,
982
+ "maxLength": 32,
983
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
984
+ },
985
+ "expiresAt": {
986
+ "type": "string",
987
+ "minLength": 1,
988
+ "maxLength": 32,
989
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
990
+ }
991
+ },
992
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
993
+ "additionalProperties": false
994
+ },
995
+ "PolicyActiveTimeRule": {
996
+ "title": "PolicyActiveTimeRule",
997
+ "type": "object",
998
+ "properties": {
999
+ "ruleId": {
1000
+ "type": "string",
1001
+ "minLength": 1,
1002
+ "maxLength": 128,
1003
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1004
+ },
1005
+ "key": {
1006
+ "type": "string",
1007
+ "enum": ["ai.maxActiveMilliseconds"]
1008
+ },
1009
+ "value": {
1010
+ "type": "integer",
1011
+ "minimum": 1000,
1012
+ "maximum": 3600000
1013
+ },
1014
+ "scope": {
1015
+ "type": "string",
1016
+ "enum": ["realm", "workspace"]
1017
+ },
1018
+ "target": {
1019
+ "$ref": "#/$defs/PolicyTarget"
1020
+ },
1021
+ "priority": {
1022
+ "type": "integer",
1023
+ "minimum": 0,
1024
+ "maximum": 1000
1025
+ },
1026
+ "effectiveAt": {
1027
+ "type": "string",
1028
+ "minLength": 1,
1029
+ "maxLength": 32,
1030
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1031
+ },
1032
+ "expiresAt": {
1033
+ "type": "string",
1034
+ "minLength": 1,
1035
+ "maxLength": 32,
1036
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1037
+ }
1038
+ },
1039
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
1040
+ "additionalProperties": false
1041
+ },
1042
+ "PolicySearchRule": {
1043
+ "title": "PolicySearchRule",
1044
+ "type": "object",
1045
+ "properties": {
1046
+ "ruleId": {
1047
+ "type": "string",
1048
+ "minLength": 1,
1049
+ "maxLength": 128,
1050
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1051
+ },
1052
+ "key": {
1053
+ "type": "string",
1054
+ "enum": ["search.webEnabled"]
1055
+ },
1056
+ "value": {
1057
+ "type": "boolean"
1058
+ },
1059
+ "scope": {
1060
+ "type": "string",
1061
+ "enum": ["realm", "workspace", "user"]
1062
+ },
1063
+ "target": {
1064
+ "$ref": "#/$defs/PolicyTarget"
1065
+ },
1066
+ "priority": {
1067
+ "type": "integer",
1068
+ "minimum": 0,
1069
+ "maximum": 1000
1070
+ },
1071
+ "effectiveAt": {
1072
+ "type": "string",
1073
+ "minLength": 1,
1074
+ "maxLength": 32,
1075
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1076
+ },
1077
+ "expiresAt": {
1078
+ "type": "string",
1079
+ "minLength": 1,
1080
+ "maxLength": 32,
1081
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1082
+ }
1083
+ },
1084
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
1085
+ "additionalProperties": false
1086
+ },
1087
+ "PolicyDensityRule": {
1088
+ "title": "PolicyDensityRule",
1089
+ "type": "object",
1090
+ "properties": {
1091
+ "ruleId": {
1092
+ "type": "string",
1093
+ "minLength": 1,
1094
+ "maxLength": 128,
1095
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1096
+ },
1097
+ "key": {
1098
+ "type": "string",
1099
+ "enum": ["ui.density"]
1100
+ },
1101
+ "value": {
1102
+ "type": "string",
1103
+ "enum": ["comfortable", "compact"]
1104
+ },
1105
+ "scope": {
1106
+ "type": "string",
1107
+ "enum": ["user", "installation"]
1108
+ },
1109
+ "target": {
1110
+ "$ref": "#/$defs/PolicyTarget"
1111
+ },
1112
+ "priority": {
1113
+ "type": "integer",
1114
+ "minimum": 0,
1115
+ "maximum": 1000
1116
+ },
1117
+ "effectiveAt": {
1118
+ "type": "string",
1119
+ "minLength": 1,
1120
+ "maxLength": 32,
1121
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1122
+ },
1123
+ "expiresAt": {
1124
+ "type": "string",
1125
+ "minLength": 1,
1126
+ "maxLength": 32,
1127
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1128
+ }
1129
+ },
1130
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
1131
+ "additionalProperties": false
1132
+ },
1133
+ "PolicyHomeSummaryRule": {
1134
+ "title": "PolicyHomeSummaryRule",
1135
+ "type": "object",
1136
+ "properties": {
1137
+ "ruleId": {
1138
+ "type": "string",
1139
+ "minLength": 1,
1140
+ "maxLength": 128,
1141
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1142
+ },
1143
+ "key": {
1144
+ "type": "string",
1145
+ "enum": ["mobile.homeSummary"]
1146
+ },
1147
+ "value": {
1148
+ "type": "string",
1149
+ "enum": ["expanded", "compact"]
1150
+ },
1151
+ "scope": {
1152
+ "type": "string",
1153
+ "enum": ["user", "installation"]
1154
+ },
1155
+ "target": {
1156
+ "$ref": "#/$defs/PolicyTarget"
1157
+ },
1158
+ "priority": {
1159
+ "type": "integer",
1160
+ "minimum": 0,
1161
+ "maximum": 1000
1162
+ },
1163
+ "effectiveAt": {
1164
+ "type": "string",
1165
+ "minLength": 1,
1166
+ "maxLength": 32,
1167
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1168
+ },
1169
+ "expiresAt": {
1170
+ "type": "string",
1171
+ "minLength": 1,
1172
+ "maxLength": 32,
1173
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1174
+ }
1175
+ },
1176
+ "required": ["ruleId", "key", "value", "scope", "target", "priority"],
1177
+ "additionalProperties": false
1178
+ },
1179
+ "PolicyRule": {
1180
+ "title": "PolicyRule",
1181
+ "oneOf": [
1182
+ {
1183
+ "$ref": "#/$defs/PolicyStopRule"
1184
+ },
1185
+ {
1186
+ "$ref": "#/$defs/PolicyRevocationsRule"
1187
+ },
1188
+ {
1189
+ "$ref": "#/$defs/PolicyMinimumContractsRule"
1190
+ },
1191
+ {
1192
+ "$ref": "#/$defs/PolicyMinimumAppRule"
1193
+ },
1194
+ {
1195
+ "$ref": "#/$defs/PolicyCacheRule"
1196
+ },
1197
+ {
1198
+ "$ref": "#/$defs/PolicyPollRule"
1199
+ },
1200
+ {
1201
+ "$ref": "#/$defs/PolicyTraceSampleRule"
1202
+ },
1203
+ {
1204
+ "$ref": "#/$defs/PolicyTraceBufferRule"
1205
+ },
1206
+ {
1207
+ "$ref": "#/$defs/PolicyModelCallsRule"
1208
+ },
1209
+ {
1210
+ "$ref": "#/$defs/PolicyToolCallsRule"
1211
+ },
1212
+ {
1213
+ "$ref": "#/$defs/PolicyParallelToolsRule"
1214
+ },
1215
+ {
1216
+ "$ref": "#/$defs/PolicyActiveTimeRule"
1217
+ },
1218
+ {
1219
+ "$ref": "#/$defs/PolicySearchRule"
1220
+ },
1221
+ {
1222
+ "$ref": "#/$defs/PolicyDensityRule"
1223
+ },
1224
+ {
1225
+ "$ref": "#/$defs/PolicyHomeSummaryRule"
1226
+ }
1227
+ ]
1228
+ },
1229
+ "PolicyPresentation": {
1230
+ "title": "PolicyPresentation",
1231
+ "type": "object",
1232
+ "properties": {
1233
+ "ui.density": {
1234
+ "type": "string",
1235
+ "enum": ["comfortable", "compact"]
1236
+ },
1237
+ "mobile.homeSummary": {
1238
+ "type": "string",
1239
+ "enum": ["expanded", "compact"]
1240
+ }
1241
+ },
1242
+ "required": [],
1243
+ "additionalProperties": false
1244
+ },
1245
+ "PolicyVariant": {
1246
+ "title": "PolicyVariant",
1247
+ "type": "object",
1248
+ "properties": {
1249
+ "variantId": {
1250
+ "type": "string",
1251
+ "minLength": 1,
1252
+ "maxLength": 128,
1253
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1254
+ },
1255
+ "allocation": {
1256
+ "type": "integer",
1257
+ "minimum": 0,
1258
+ "maximum": 10000
1259
+ },
1260
+ "values": {
1261
+ "$ref": "#/$defs/PolicyPresentation"
1262
+ }
1263
+ },
1264
+ "required": ["variantId", "allocation", "values"],
1265
+ "additionalProperties": false
1266
+ },
1267
+ "PolicyExperiment": {
1268
+ "title": "PolicyExperiment",
1269
+ "type": "object",
1270
+ "properties": {
1271
+ "experimentId": {
1272
+ "type": "string",
1273
+ "minLength": 1,
1274
+ "maxLength": 128,
1275
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1276
+ },
1277
+ "version": {
1278
+ "type": "string",
1279
+ "minLength": 1,
1280
+ "maxLength": 128,
1281
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1282
+ },
1283
+ "hypothesis": {
1284
+ "type": "string",
1285
+ "minLength": 1,
1286
+ "maxLength": 4096
1287
+ },
1288
+ "subject": {
1289
+ "type": "string",
1290
+ "enum": ["user", "workspace", "installation"]
1291
+ },
1292
+ "eligibility": {
1293
+ "$ref": "#/$defs/PolicyPredicate"
1294
+ },
1295
+ "variants": {
1296
+ "type": "array",
1297
+ "items": {
1298
+ "$ref": "#/$defs/PolicyVariant"
1299
+ },
1300
+ "minItems": 1,
1301
+ "maxItems": 4
1302
+ },
1303
+ "allocation": {
1304
+ "type": "integer",
1305
+ "minimum": 0,
1306
+ "maximum": 10000
1307
+ },
1308
+ "startsAt": {
1309
+ "type": "string",
1310
+ "minLength": 1,
1311
+ "maxLength": 32,
1312
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1313
+ },
1314
+ "endsAt": {
1315
+ "type": "string",
1316
+ "minLength": 1,
1317
+ "maxLength": 32,
1318
+ "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(\\.[0-9]{1,6})?Z$"
1319
+ },
1320
+ "successMetrics": {
1321
+ "type": "array",
1322
+ "items": {
1323
+ "type": "string",
1324
+ "minLength": 1,
1325
+ "maxLength": 128,
1326
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1327
+ },
1328
+ "minItems": 1,
1329
+ "maxItems": 32
1330
+ },
1331
+ "exitCriteria": {
1332
+ "type": "string",
1333
+ "minLength": 1,
1334
+ "maxLength": 4096
1335
+ },
1336
+ "exclusionGroup": {
1337
+ "type": "string",
1338
+ "minLength": 1,
1339
+ "maxLength": 128,
1340
+ "pattern": "^[A-Za-z0-9][A-Za-z0-9._:-]*$"
1341
+ },
1342
+ "holdoutBasisPoints": {
1343
+ "type": "integer",
1344
+ "minimum": 0,
1345
+ "maximum": 10000
1346
+ }
1347
+ },
1348
+ "required": [
1349
+ "experimentId",
1350
+ "version",
1351
+ "hypothesis",
1352
+ "subject",
1353
+ "eligibility",
1354
+ "variants",
1355
+ "allocation",
1356
+ "startsAt",
1357
+ "endsAt",
1358
+ "successMetrics",
1359
+ "exitCriteria",
1360
+ "holdoutBasisPoints"
1361
+ ],
1362
+ "additionalProperties": false
1363
+ },
1364
+ "PolicyStableTarget": {
1365
+ "type": "string",
1366
+ "minLength": 1,
1367
+ "maxLength": 36,
1368
+ "pattern": "^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$",
1369
+ "x-arcforges-rules": ["nonzeroUuid"],
1370
+ "title": "PolicyStableTarget"
1371
+ }
1372
+ },
1373
+ "x-arcforges-max-bytes": 1048576,
1374
+ "x-arcforges-schema-version": "1",
1375
+ "x-arcforges-rules": ["policyBody"]
1376
+ }