@greatwait/contracts 0.1.0-alpha.5 → 0.1.0-alpha.7

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 (135) hide show
  1. package/README.md +1 -1
  2. package/dist/attempt-diagnostics.d.ts +8 -0
  3. package/dist/attempt-diagnostics.js +68 -0
  4. package/dist/authority.d.ts +4 -1
  5. package/dist/authority.js +1 -0
  6. package/dist/billing.d.ts +11 -10
  7. package/dist/billing.js +7 -4
  8. package/dist/data-export.d.ts +2 -0
  9. package/dist/delivery.d.ts +43 -40
  10. package/dist/delivery.js +14 -37
  11. package/dist/effective-limits.d.ts +4 -4
  12. package/dist/endpoints.d.ts +173 -5
  13. package/dist/endpoints.js +72 -1
  14. package/dist/first-value-journey.js +4 -4
  15. package/dist/http-request.d.ts +193 -0
  16. package/dist/http-request.js +305 -0
  17. package/dist/identity.d.ts +7 -7
  18. package/dist/index.d.ts +6 -3
  19. package/dist/index.js +5 -2
  20. package/dist/mcp.d.ts +2 -1
  21. package/dist/members.d.ts +141 -0
  22. package/dist/members.js +223 -0
  23. package/dist/oauth.d.ts +7 -0
  24. package/dist/operation-definitions.d.ts +20 -4
  25. package/dist/operation-definitions.js +9 -1
  26. package/dist/operations.d.ts +999 -135
  27. package/dist/operations.js +83 -10
  28. package/dist/organization-lifecycle.d.ts +10 -0
  29. package/dist/policy.js +5 -2
  30. package/dist/scheduling-records.d.ts +332 -8
  31. package/dist/scheduling-records.js +5 -0
  32. package/dist/scheduling.d.ts +485 -18
  33. package/dist/scheduling.js +77 -5
  34. package/dist/secrets.d.ts +7 -0
  35. package/dist/signatures.d.ts +1 -1
  36. package/dist/tenancy.d.ts +1 -1
  37. package/dist/tenancy.js +1 -1
  38. package/dist/test-sink.d.ts +27 -41
  39. package/dist/test-sink.js +12 -31
  40. package/dist/zod-values.d.ts +2 -2
  41. package/dist/zod-values.js +1 -1
  42. package/generated/v1/callback-receiver.json +4 -4
  43. package/generated/v1/examples/endpoints.ensure.request.json +3 -0
  44. package/generated/v1/examples/endpoints.ensure.response.json +20 -0
  45. package/generated/v1/examples/invitations.create.request.json +5 -0
  46. package/generated/v1/examples/invitations.create.response.json +7 -0
  47. package/generated/v1/examples/invitations.list.response.json +11 -0
  48. package/generated/v1/examples/invitations.resend.request.json +1 -0
  49. package/generated/v1/examples/invitations.resend.response.json +4 -0
  50. package/generated/v1/examples/invitations.revoke.request.json +3 -0
  51. package/generated/v1/examples/invitations.revoke.response.json +4 -0
  52. package/generated/v1/examples/members.list.response.json +13 -0
  53. package/generated/v1/examples/members.remove.request.json +3 -0
  54. package/generated/v1/examples/members.remove.response.json +4 -0
  55. package/generated/v1/examples/members.role.request.json +3 -0
  56. package/generated/v1/examples/members.role.response.json +4 -0
  57. package/generated/v1/examples/projectmembers.add.request.json +1 -0
  58. package/generated/v1/examples/projectmembers.add.response.json +4 -0
  59. package/generated/v1/examples/projectmembers.remove.request.json +3 -0
  60. package/generated/v1/examples/projectmembers.remove.response.json +4 -0
  61. package/generated/v1/first-value-journey.json +4 -4
  62. package/generated/v1/manifest.json +284 -0
  63. package/generated/v1/openapi.json +9387 -1021
  64. package/generated/v1/policy-matrix.json +72 -0
  65. package/generated/v1/schemas/attempts.list.response.json +105 -0
  66. package/generated/v1/schemas/attempts.read.response.json +105 -0
  67. package/generated/v1/schemas/billing.notices.response.json +16 -6
  68. package/generated/v1/schemas/context.read.response.json +1 -0
  69. package/generated/v1/schemas/credentials.connection.response.json +1 -0
  70. package/generated/v1/schemas/credentials.create.request.json +1 -0
  71. package/generated/v1/schemas/credentials.create.response.json +1 -0
  72. package/generated/v1/schemas/credentials.list.response.json +1 -0
  73. package/generated/v1/schemas/credentials.revoke.response.json +1 -0
  74. package/generated/v1/schemas/credentials.rotate.response.json +2 -0
  75. package/generated/v1/schemas/endpoints.acknowledgeSigningKeyRotation.response.json +59 -0
  76. package/generated/v1/schemas/endpoints.create.request.json +74 -0
  77. package/generated/v1/schemas/endpoints.create.response.json +59 -0
  78. package/generated/v1/schemas/endpoints.disable.response.json +59 -0
  79. package/generated/v1/schemas/endpoints.enable.response.json +59 -0
  80. package/generated/v1/schemas/endpoints.ensure.request.json +91 -0
  81. package/generated/v1/schemas/endpoints.ensure.response.json +169 -0
  82. package/generated/v1/schemas/endpoints.list.response.json +59 -0
  83. package/generated/v1/schemas/endpoints.read.response.json +59 -0
  84. package/generated/v1/schemas/endpoints.rotateSigningKey.response.json +59 -0
  85. package/generated/v1/schemas/endpoints.update.request.json +74 -0
  86. package/generated/v1/schemas/endpoints.update.response.json +59 -0
  87. package/generated/v1/schemas/grants.list.response.json +1 -0
  88. package/generated/v1/schemas/grants.revoke.response.json +1 -0
  89. package/generated/v1/schemas/invitations.create.request-headers.json +13 -0
  90. package/generated/v1/schemas/invitations.create.request.json +24 -0
  91. package/generated/v1/schemas/invitations.create.response.json +31 -0
  92. package/generated/v1/schemas/invitations.list.response.json +40 -0
  93. package/generated/v1/schemas/invitations.resend.request-headers.json +13 -0
  94. package/generated/v1/schemas/invitations.resend.request.json +6 -0
  95. package/generated/v1/schemas/invitations.resend.response.json +27 -0
  96. package/generated/v1/schemas/invitations.revoke.request-headers.json +13 -0
  97. package/generated/v1/schemas/invitations.revoke.request.json +12 -0
  98. package/generated/v1/schemas/invitations.revoke.response.json +27 -0
  99. package/generated/v1/schemas/members.list.response.json +53 -0
  100. package/generated/v1/schemas/members.remove.request-headers.json +13 -0
  101. package/generated/v1/schemas/members.remove.request.json +12 -0
  102. package/generated/v1/schemas/members.remove.response.json +27 -0
  103. package/generated/v1/schemas/members.role.request-headers.json +13 -0
  104. package/generated/v1/schemas/members.role.request.json +12 -0
  105. package/generated/v1/schemas/members.role.response.json +27 -0
  106. package/generated/v1/schemas/occurrences.redeliver.response.json +105 -0
  107. package/generated/v1/schemas/projectmembers.add.request-headers.json +13 -0
  108. package/generated/v1/schemas/projectmembers.add.request.json +6 -0
  109. package/generated/v1/schemas/projectmembers.add.response.json +27 -0
  110. package/generated/v1/schemas/projectmembers.remove.request-headers.json +13 -0
  111. package/generated/v1/schemas/projectmembers.remove.request.json +12 -0
  112. package/generated/v1/schemas/projectmembers.remove.response.json +27 -0
  113. package/generated/v1/schemas/schedules.archive.response.json +188 -1
  114. package/generated/v1/schemas/schedules.cancel.response.json +188 -1
  115. package/generated/v1/schemas/schedules.create.request.json +164 -1
  116. package/generated/v1/schemas/schedules.create.response.json +206 -1
  117. package/generated/v1/schemas/schedules.list.response.json +188 -1
  118. package/generated/v1/schemas/schedules.pause.response.json +188 -1
  119. package/generated/v1/schemas/schedules.read.response.json +188 -1
  120. package/generated/v1/schemas/schedules.replace.request.json +164 -1
  121. package/generated/v1/schemas/schedules.replace.response.json +206 -1
  122. package/generated/v1/schemas/schedules.resume.response.json +188 -1
  123. package/generated/v1/snippets/endpoints.create.json +1 -1
  124. package/generated/v1/snippets/endpoints.ensure.json +6 -0
  125. package/generated/v1/snippets/invitations.create.json +6 -0
  126. package/generated/v1/snippets/invitations.list.json +6 -0
  127. package/generated/v1/snippets/invitations.resend.json +6 -0
  128. package/generated/v1/snippets/invitations.revoke.json +6 -0
  129. package/generated/v1/snippets/journey/create-destination.json +1 -1
  130. package/generated/v1/snippets/members.list.json +6 -0
  131. package/generated/v1/snippets/members.remove.json +6 -0
  132. package/generated/v1/snippets/members.role.json +6 -0
  133. package/generated/v1/snippets/projectmembers.add.json +6 -0
  134. package/generated/v1/snippets/projectmembers.remove.json +6 -0
  135. package/package.json +1 -1
@@ -274,6 +274,13 @@
274
274
  "roles": ["admin", "billing", "member"],
275
275
  "scopes": ["endpoints:write"]
276
276
  },
277
+ {
278
+ "mutates": true,
279
+ "operation": "endpoints.ensure",
280
+ "principals": ["api-credential", "oauth", "session"],
281
+ "roles": ["admin", "billing", "member"],
282
+ "scopes": ["endpoints:write"]
283
+ },
277
284
  {
278
285
  "mutates": false,
279
286
  "operation": "endpoints.list",
@@ -372,6 +379,34 @@
372
379
  "roles": ["admin", "billing", "member"],
373
380
  "scopes": ["grants:write"]
374
381
  },
382
+ {
383
+ "mutates": true,
384
+ "operation": "invitations.create",
385
+ "principals": ["session", "oauth"],
386
+ "roles": ["admin"],
387
+ "scopes": ["members:manage"]
388
+ },
389
+ {
390
+ "mutates": false,
391
+ "operation": "invitations.list",
392
+ "principals": ["session", "oauth"],
393
+ "roles": ["admin"],
394
+ "scopes": ["members:manage"]
395
+ },
396
+ {
397
+ "mutates": true,
398
+ "operation": "invitations.resend",
399
+ "principals": ["session", "oauth"],
400
+ "roles": ["admin"],
401
+ "scopes": ["members:manage"]
402
+ },
403
+ {
404
+ "mutates": true,
405
+ "operation": "invitations.revoke",
406
+ "principals": ["session", "oauth"],
407
+ "roles": ["admin"],
408
+ "scopes": ["members:manage"]
409
+ },
375
410
  {
376
411
  "mutates": false,
377
412
  "operation": "limits.read",
@@ -379,6 +414,27 @@
379
414
  "roles": ["admin", "billing", "member"],
380
415
  "scopes": ["schedules:read"]
381
416
  },
417
+ {
418
+ "mutates": false,
419
+ "operation": "members.list",
420
+ "principals": ["session", "oauth"],
421
+ "roles": ["admin"],
422
+ "scopes": ["members:manage"]
423
+ },
424
+ {
425
+ "mutates": true,
426
+ "operation": "members.remove",
427
+ "principals": ["session", "oauth"],
428
+ "roles": ["admin"],
429
+ "scopes": ["members:manage"]
430
+ },
431
+ {
432
+ "mutates": true,
433
+ "operation": "members.role",
434
+ "principals": ["session", "oauth"],
435
+ "roles": ["admin"],
436
+ "scopes": ["members:manage"]
437
+ },
382
438
  {
383
439
  "mutates": false,
384
440
  "operation": "meta.scaffold",
@@ -456,6 +512,20 @@
456
512
  "roles": ["admin"],
457
513
  "scopes": ["projects:administer"]
458
514
  },
515
+ {
516
+ "mutates": true,
517
+ "operation": "projectmembers.add",
518
+ "principals": ["session", "oauth"],
519
+ "roles": ["admin"],
520
+ "scopes": ["members:manage"]
521
+ },
522
+ {
523
+ "mutates": true,
524
+ "operation": "projectmembers.remove",
525
+ "principals": ["session", "oauth"],
526
+ "roles": ["admin"],
527
+ "scopes": ["members:manage"]
528
+ },
459
529
  {
460
530
  "mutates": true,
461
531
  "operation": "projects.archive",
@@ -508,6 +578,7 @@
508
578
  {
509
579
  "mutates": true,
510
580
  "operation": "schedules.create",
581
+ "conditionalScopes": ["endpoints:write"],
511
582
  "principals": ["api-credential", "oauth", "session"],
512
583
  "roles": ["admin", "billing", "member"],
513
584
  "scopes": ["schedules:write"]
@@ -536,6 +607,7 @@
536
607
  {
537
608
  "mutates": true,
538
609
  "operation": "schedules.replace",
610
+ "conditionalScopes": ["endpoints:write"],
539
611
  "principals": ["api-credential", "oauth", "session"],
540
612
  "roles": ["admin", "billing", "member"],
541
613
  "scopes": ["schedules:write"]
@@ -118,6 +118,111 @@
118
118
  },
119
119
  "required": ["contentType", "text", "truncated"]
120
120
  },
121
+ "response": {
122
+ "type": "object",
123
+ "properties": {
124
+ "statusText": {
125
+ "type": "string"
126
+ },
127
+ "headers": {
128
+ "type": "array",
129
+ "items": {
130
+ "type": "object",
131
+ "properties": {
132
+ "name": {
133
+ "type": "string"
134
+ },
135
+ "value": {
136
+ "type": "string"
137
+ }
138
+ },
139
+ "required": ["name", "value"]
140
+ }
141
+ },
142
+ "bodyState": {
143
+ "type": "string",
144
+ "enum": ["captured", "empty", "expired", "not_captured"]
145
+ },
146
+ "body": {
147
+ "type": "object",
148
+ "properties": {
149
+ "contentType": {
150
+ "type": "string"
151
+ },
152
+ "encoding": {
153
+ "type": "string",
154
+ "enum": ["utf8", "base64"]
155
+ },
156
+ "content": {
157
+ "type": "string",
158
+ "maxLength": 131072
159
+ },
160
+ "capturedBytes": {
161
+ "type": "integer",
162
+ "minimum": 1,
163
+ "maximum": 10240
164
+ },
165
+ "originalBytes": {
166
+ "type": "integer",
167
+ "minimum": 0,
168
+ "maximum": 9007199254740991
169
+ },
170
+ "truncated": {
171
+ "type": "boolean"
172
+ },
173
+ "redacted": {
174
+ "type": "boolean"
175
+ },
176
+ "incomplete": {
177
+ "type": "boolean"
178
+ }
179
+ },
180
+ "required": [
181
+ "contentType",
182
+ "encoding",
183
+ "content",
184
+ "capturedBytes",
185
+ "truncated"
186
+ ]
187
+ }
188
+ },
189
+ "required": ["statusText", "headers", "bodyState"]
190
+ },
191
+ "request": {
192
+ "type": "object",
193
+ "properties": {
194
+ "method": {
195
+ "type": "string",
196
+ "enum": ["GET", "POST", "PUT"]
197
+ },
198
+ "url": {
199
+ "type": "string"
200
+ },
201
+ "headers": {
202
+ "type": "array",
203
+ "items": {
204
+ "type": "object",
205
+ "properties": {
206
+ "name": {
207
+ "type": "string"
208
+ },
209
+ "value": {
210
+ "type": "string"
211
+ }
212
+ },
213
+ "required": ["name", "value"]
214
+ }
215
+ },
216
+ "body": {
217
+ "type": "string"
218
+ }
219
+ },
220
+ "required": ["method", "url", "headers", "body"]
221
+ },
222
+ "requestState": {
223
+ "type": "string",
224
+ "enum": ["captured", "expired", "not_captured"]
225
+ },
121
226
  "responseHeaders": {
122
227
  "maxItems": 8,
123
228
  "type": "array",
@@ -116,6 +116,111 @@
116
116
  },
117
117
  "required": ["contentType", "text", "truncated"]
118
118
  },
119
+ "response": {
120
+ "type": "object",
121
+ "properties": {
122
+ "statusText": {
123
+ "type": "string"
124
+ },
125
+ "headers": {
126
+ "type": "array",
127
+ "items": {
128
+ "type": "object",
129
+ "properties": {
130
+ "name": {
131
+ "type": "string"
132
+ },
133
+ "value": {
134
+ "type": "string"
135
+ }
136
+ },
137
+ "required": ["name", "value"]
138
+ }
139
+ },
140
+ "bodyState": {
141
+ "type": "string",
142
+ "enum": ["captured", "empty", "expired", "not_captured"]
143
+ },
144
+ "body": {
145
+ "type": "object",
146
+ "properties": {
147
+ "contentType": {
148
+ "type": "string"
149
+ },
150
+ "encoding": {
151
+ "type": "string",
152
+ "enum": ["utf8", "base64"]
153
+ },
154
+ "content": {
155
+ "type": "string",
156
+ "maxLength": 131072
157
+ },
158
+ "capturedBytes": {
159
+ "type": "integer",
160
+ "minimum": 1,
161
+ "maximum": 10240
162
+ },
163
+ "originalBytes": {
164
+ "type": "integer",
165
+ "minimum": 0,
166
+ "maximum": 9007199254740991
167
+ },
168
+ "truncated": {
169
+ "type": "boolean"
170
+ },
171
+ "redacted": {
172
+ "type": "boolean"
173
+ },
174
+ "incomplete": {
175
+ "type": "boolean"
176
+ }
177
+ },
178
+ "required": [
179
+ "contentType",
180
+ "encoding",
181
+ "content",
182
+ "capturedBytes",
183
+ "truncated"
184
+ ]
185
+ }
186
+ },
187
+ "required": ["statusText", "headers", "bodyState"]
188
+ },
189
+ "request": {
190
+ "type": "object",
191
+ "properties": {
192
+ "method": {
193
+ "type": "string",
194
+ "enum": ["GET", "POST", "PUT"]
195
+ },
196
+ "url": {
197
+ "type": "string"
198
+ },
199
+ "headers": {
200
+ "type": "array",
201
+ "items": {
202
+ "type": "object",
203
+ "properties": {
204
+ "name": {
205
+ "type": "string"
206
+ },
207
+ "value": {
208
+ "type": "string"
209
+ }
210
+ },
211
+ "required": ["name", "value"]
212
+ }
213
+ },
214
+ "body": {
215
+ "type": "string"
216
+ }
217
+ },
218
+ "required": ["method", "url", "headers", "body"]
219
+ },
220
+ "requestState": {
221
+ "type": "string",
222
+ "enum": ["captured", "expired", "not_captured"]
223
+ },
119
224
  "responseHeaders": {
120
225
  "maxItems": 8,
121
226
  "type": "array",
@@ -137,7 +137,8 @@
137
137
  "payment-failed",
138
138
  "payment-authentication-required",
139
139
  "payment-outcome-unresolved",
140
- "service-restored"
140
+ "service-restored",
141
+ "schedule-auto-paused"
141
142
  ]
142
143
  },
143
144
  "occurredAt": {
@@ -177,11 +178,20 @@
177
178
  ]
178
179
  },
179
180
  "recoveryPath": {
180
- "type": "string",
181
- "enum": [
182
- "#billing",
183
- "#billing-funding",
184
- "#billing-notification-settings"
181
+ "anyOf": [
182
+ {
183
+ "type": "string",
184
+ "enum": [
185
+ "#billing",
186
+ "#billing-funding",
187
+ "#billing-notification-settings"
188
+ ]
189
+ },
190
+ {
191
+ "type": "string",
192
+ "maxLength": 1024,
193
+ "pattern": "^\\/o\\/[A-Za-z0-9_%.-]+\\/p\\/proj_[0-9abcdefghjkmnpqrstvwxyz]{26}\\/(?:live|test)\\/schedules\\/sch_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
194
+ }
185
195
  ]
186
196
  },
187
197
  "resolvedAt": {
@@ -20,6 +20,7 @@
20
20
  "items": {
21
21
  "type": "string",
22
22
  "enum": [
23
+ "members:manage",
23
24
  "credentials:administer",
24
25
  "billing:write",
25
26
  "credentials:read",
@@ -23,6 +23,7 @@
23
23
  "items": {
24
24
  "type": "string",
25
25
  "enum": [
26
+ "members:manage",
26
27
  "credentials:administer",
27
28
  "billing:write",
28
29
  "credentials:read",
@@ -16,6 +16,7 @@
16
16
  "items": {
17
17
  "type": "string",
18
18
  "enum": [
19
+ "members:manage",
19
20
  "credentials:administer",
20
21
  "billing:write",
21
22
  "credentials:read",
@@ -48,6 +48,7 @@
48
48
  "items": {
49
49
  "type": "string",
50
50
  "enum": [
51
+ "members:manage",
51
52
  "credentials:administer",
52
53
  "billing:write",
53
54
  "credentials:read",
@@ -53,6 +53,7 @@
53
53
  "items": {
54
54
  "type": "string",
55
55
  "enum": [
56
+ "members:manage",
56
57
  "credentials:administer",
57
58
  "billing:write",
58
59
  "credentials:read",
@@ -51,6 +51,7 @@
51
51
  "items": {
52
52
  "type": "string",
53
53
  "enum": [
54
+ "members:manage",
54
55
  "credentials:administer",
55
56
  "billing:write",
56
57
  "credentials:read",
@@ -51,6 +51,7 @@
51
51
  "items": {
52
52
  "type": "string",
53
53
  "enum": [
54
+ "members:manage",
54
55
  "credentials:administer",
55
56
  "billing:write",
56
57
  "credentials:read",
@@ -140,6 +141,7 @@
140
141
  "items": {
141
142
  "type": "string",
142
143
  "enum": [
144
+ "members:manage",
143
145
  "credentials:administer",
144
146
  "billing:write",
145
147
  "credentials:read",
@@ -2,6 +2,65 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "headers": {
6
+ "type": "array",
7
+ "items": {
8
+ "anyOf": [
9
+ {
10
+ "type": "object",
11
+ "properties": {
12
+ "name": {
13
+ "type": "string",
14
+ "minLength": 1
15
+ },
16
+ "secret": {
17
+ "type": "boolean",
18
+ "const": false
19
+ },
20
+ "value": {
21
+ "type": "string"
22
+ }
23
+ },
24
+ "required": ["name", "secret", "value"]
25
+ },
26
+ {
27
+ "type": "object",
28
+ "properties": {
29
+ "name": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "secret": {
34
+ "type": "boolean",
35
+ "const": true
36
+ },
37
+ "configured": {
38
+ "type": "boolean",
39
+ "const": true
40
+ },
41
+ "value": {
42
+ "not": {}
43
+ }
44
+ },
45
+ "required": ["name", "secret", "configured"]
46
+ },
47
+ {
48
+ "type": "object",
49
+ "properties": {
50
+ "name": {
51
+ "type": "string",
52
+ "minLength": 1
53
+ },
54
+ "suppressed": {
55
+ "type": "boolean",
56
+ "const": true
57
+ }
58
+ },
59
+ "required": ["name", "suppressed"]
60
+ }
61
+ ]
62
+ }
63
+ },
5
64
  "createdAt": {
6
65
  "type": "string",
7
66
  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"
@@ -2,6 +2,80 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "headers": {
6
+ "maxItems": 64,
7
+ "type": "array",
8
+ "items": {
9
+ "oneOf": [
10
+ {
11
+ "type": "object",
12
+ "properties": {
13
+ "action": {
14
+ "type": "string",
15
+ "const": "set"
16
+ },
17
+ "name": {
18
+ "type": "string",
19
+ "minLength": 1
20
+ },
21
+ "value": {
22
+ "type": "string"
23
+ },
24
+ "secret": {
25
+ "type": "boolean"
26
+ }
27
+ },
28
+ "required": ["action", "name", "value"],
29
+ "additionalProperties": false
30
+ },
31
+ {
32
+ "type": "object",
33
+ "properties": {
34
+ "action": {
35
+ "type": "string",
36
+ "const": "keep"
37
+ },
38
+ "name": {
39
+ "type": "string",
40
+ "minLength": 1
41
+ }
42
+ },
43
+ "required": ["action", "name"],
44
+ "additionalProperties": false
45
+ },
46
+ {
47
+ "type": "object",
48
+ "properties": {
49
+ "action": {
50
+ "type": "string",
51
+ "const": "remove"
52
+ },
53
+ "name": {
54
+ "type": "string",
55
+ "minLength": 1
56
+ }
57
+ },
58
+ "required": ["action", "name"],
59
+ "additionalProperties": false
60
+ },
61
+ {
62
+ "type": "object",
63
+ "properties": {
64
+ "action": {
65
+ "type": "string",
66
+ "const": "suppress"
67
+ },
68
+ "name": {
69
+ "type": "string",
70
+ "minLength": 1
71
+ }
72
+ },
73
+ "required": ["action", "name"],
74
+ "additionalProperties": false
75
+ }
76
+ ]
77
+ }
78
+ },
5
79
  "name": {
6
80
  "type": "string",
7
81
  "minLength": 1,
@@ -2,6 +2,65 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "type": "object",
4
4
  "properties": {
5
+ "headers": {
6
+ "type": "array",
7
+ "items": {
8
+ "anyOf": [
9
+ {
10
+ "type": "object",
11
+ "properties": {
12
+ "name": {
13
+ "type": "string",
14
+ "minLength": 1
15
+ },
16
+ "secret": {
17
+ "type": "boolean",
18
+ "const": false
19
+ },
20
+ "value": {
21
+ "type": "string"
22
+ }
23
+ },
24
+ "required": ["name", "secret", "value"]
25
+ },
26
+ {
27
+ "type": "object",
28
+ "properties": {
29
+ "name": {
30
+ "type": "string",
31
+ "minLength": 1
32
+ },
33
+ "secret": {
34
+ "type": "boolean",
35
+ "const": true
36
+ },
37
+ "configured": {
38
+ "type": "boolean",
39
+ "const": true
40
+ },
41
+ "value": {
42
+ "not": {}
43
+ }
44
+ },
45
+ "required": ["name", "secret", "configured"]
46
+ },
47
+ {
48
+ "type": "object",
49
+ "properties": {
50
+ "name": {
51
+ "type": "string",
52
+ "minLength": 1
53
+ },
54
+ "suppressed": {
55
+ "type": "boolean",
56
+ "const": true
57
+ }
58
+ },
59
+ "required": ["name", "suppressed"]
60
+ }
61
+ ]
62
+ }
63
+ },
5
64
  "createdAt": {
6
65
  "type": "string",
7
66
  "pattern": "^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}\\.\\d{3}Z$"