@greatwait/contracts 0.1.0-alpha.6 → 0.1.0-alpha.8

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 (67) 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/billing.d.ts +12 -10
  5. package/dist/billing.js +14 -4
  6. package/dist/delivery.d.ts +17 -40
  7. package/dist/delivery.js +12 -37
  8. package/dist/effective-limits.d.ts +4 -4
  9. package/dist/endpoints.d.ts +6 -6
  10. package/dist/first-value-journey.js +4 -4
  11. package/dist/identity.d.ts +3 -3
  12. package/dist/index.d.ts +3 -1
  13. package/dist/index.js +3 -1
  14. package/dist/mcp.d.ts +1 -1
  15. package/dist/members.d.ts +4 -4
  16. package/dist/operations.d.ts +338 -103
  17. package/dist/operations.js +3 -1
  18. package/dist/policy.d.ts +5 -4
  19. package/dist/policy.js +5 -4
  20. package/dist/project-notifications.d.ts +238 -0
  21. package/dist/project-notifications.js +236 -0
  22. package/dist/scheduling-records.d.ts +112 -8
  23. package/dist/scheduling.d.ts +253 -22
  24. package/dist/scheduling.js +51 -9
  25. package/dist/signatures.d.ts +1 -1
  26. package/dist/test-sink.d.ts +27 -41
  27. package/dist/test-sink.js +12 -31
  28. package/dist/workspace.d.ts +4 -4
  29. package/generated/v1/callback-receiver.json +4 -4
  30. package/generated/v1/examples/projectnotifications.read.response.json +12 -0
  31. package/generated/v1/examples/projectnotifications.rotateSigningKey.request.json +3 -0
  32. package/generated/v1/examples/projectnotifications.rotateSigningKey.response.json +25 -0
  33. package/generated/v1/examples/projectnotifications.update.request.json +10 -0
  34. package/generated/v1/examples/projectnotifications.update.response.json +12 -0
  35. package/generated/v1/examples/statusdeliveries.list.response.json +3 -0
  36. package/generated/v1/first-value-journey.json +4 -4
  37. package/generated/v1/manifest.json +110 -1
  38. package/generated/v1/openapi.json +3655 -333
  39. package/generated/v1/policy-matrix.json +28 -0
  40. package/generated/v1/schemas/attempts.list.response.json +105 -0
  41. package/generated/v1/schemas/attempts.read.response.json +105 -0
  42. package/generated/v1/schemas/billing.notices.response.json +17 -6
  43. package/generated/v1/schemas/billing.purchase.request.json +4 -0
  44. package/generated/v1/schemas/occurrences.redeliver.response.json +105 -0
  45. package/generated/v1/schemas/projectnotifications.read.response.json +101 -0
  46. package/generated/v1/schemas/projectnotifications.rotateSigningKey.request.json +13 -0
  47. package/generated/v1/schemas/projectnotifications.rotateSigningKey.response.json +119 -0
  48. package/generated/v1/schemas/projectnotifications.update.request-headers.json +13 -0
  49. package/generated/v1/schemas/projectnotifications.update.request.json +90 -0
  50. package/generated/v1/schemas/projectnotifications.update.response.json +101 -0
  51. package/generated/v1/schemas/schedules.archive.response.json +50 -0
  52. package/generated/v1/schemas/schedules.cancel.response.json +50 -0
  53. package/generated/v1/schemas/schedules.create.request.json +14 -0
  54. package/generated/v1/schemas/schedules.create.response.json +50 -0
  55. package/generated/v1/schemas/schedules.list.response.json +50 -0
  56. package/generated/v1/schemas/schedules.pause.response.json +50 -0
  57. package/generated/v1/schemas/schedules.read.response.json +50 -0
  58. package/generated/v1/schemas/schedules.replace.request.json +14 -0
  59. package/generated/v1/schemas/schedules.replace.response.json +50 -0
  60. package/generated/v1/schemas/schedules.resume.response.json +50 -0
  61. package/generated/v1/schemas/statusdeliveries.list.query.json +16 -0
  62. package/generated/v1/schemas/statusdeliveries.list.response.json +82 -0
  63. package/generated/v1/snippets/projectnotifications.read.json +6 -0
  64. package/generated/v1/snippets/projectnotifications.rotateSigningKey.json +6 -0
  65. package/generated/v1/snippets/projectnotifications.update.json +6 -0
  66. package/generated/v1/snippets/statusdeliveries.list.json +6 -0
  67. package/package.json +1 -1
@@ -526,6 +526,27 @@
526
526
  "roles": ["admin"],
527
527
  "scopes": ["members:manage"]
528
528
  },
529
+ {
530
+ "mutates": false,
531
+ "operation": "projectnotifications.read",
532
+ "principals": ["api-credential", "oauth", "session"],
533
+ "roles": ["admin", "billing", "member"],
534
+ "scopes": ["projects:read"]
535
+ },
536
+ {
537
+ "mutates": true,
538
+ "operation": "projectnotifications.rotateSigningKey",
539
+ "principals": ["api-credential", "oauth", "session"],
540
+ "roles": ["admin"],
541
+ "scopes": ["projects:administer"]
542
+ },
543
+ {
544
+ "mutates": true,
545
+ "operation": "projectnotifications.update",
546
+ "principals": ["api-credential", "oauth", "session"],
547
+ "roles": ["admin"],
548
+ "scopes": ["projects:administer"]
549
+ },
529
550
  {
530
551
  "mutates": true,
531
552
  "operation": "projects.archive",
@@ -633,6 +654,13 @@
633
654
  "roles": ["admin", "billing", "member"],
634
655
  "scopes": ["endpoints:read"]
635
656
  },
657
+ {
658
+ "mutates": false,
659
+ "operation": "statusdeliveries.list",
660
+ "principals": ["api-credential", "oauth", "session"],
661
+ "roles": ["admin", "billing", "member"],
662
+ "scopes": ["occurrences:read"]
663
+ },
636
664
  {
637
665
  "mutates": true,
638
666
  "operation": "testsinks.configure",
@@ -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,9 @@
137
137
  "payment-failed",
138
138
  "payment-authentication-required",
139
139
  "payment-outcome-unresolved",
140
- "service-restored"
140
+ "service-restored",
141
+ "schedule-auto-paused",
142
+ "delivery-failed"
141
143
  ]
142
144
  },
143
145
  "occurredAt": {
@@ -177,11 +179,20 @@
177
179
  ]
178
180
  },
179
181
  "recoveryPath": {
180
- "type": "string",
181
- "enum": [
182
- "#billing",
183
- "#billing-funding",
184
- "#billing-notification-settings"
182
+ "anyOf": [
183
+ {
184
+ "type": "string",
185
+ "enum": [
186
+ "#billing",
187
+ "#billing-funding",
188
+ "#billing-notification-settings"
189
+ ]
190
+ },
191
+ {
192
+ "type": "string",
193
+ "maxLength": 1024,
194
+ "pattern": "^\\/o\\/[A-Za-z0-9_%.-]+\\/p\\/proj_[0-9abcdefghjkmnpqrstvwxyz]{26}\\/(?:live|test)\\/schedules(?:\\/sch_[0-9abcdefghjkmnpqrstvwxyz]{26}(?:\\/occurrences\\/occ_[0-9abcdefghjkmnpqrstvwxyz]{26})?)?$"
195
+ }
185
196
  ]
186
197
  },
187
198
  "resolvedAt": {
@@ -19,6 +19,10 @@
19
19
  "type": "string",
20
20
  "minLength": 1,
21
21
  "maxLength": 128
22
+ },
23
+ "savePaymentMethod": {
24
+ "type": "boolean",
25
+ "description": "true: the customer also asks to keep the payment method they pay with, for automatic top-up and for projects past the free one. The hosted payment then saves it for later charges made without the customer present (it offers every method the account enables except Klarna, which cannot be charged that way), and once the provider confirms this payment paid, that method becomes the organization's saved payment method if it has none. An existing saved payment method is never replaced, and saving one never turns automatic top-up on. Omitted or false: the purchase does exactly what it always did."
22
26
  }
23
27
  },
24
28
  "required": ["confirmed", "expectedRevision", "quote"],
@@ -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",
@@ -0,0 +1,101 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "project": {
6
+ "type": "string",
7
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
8
+ },
9
+ "environmentKind": {
10
+ "type": "string",
11
+ "enum": ["test", "live"]
12
+ },
13
+ "revision": {
14
+ "type": "integer",
15
+ "exclusiveMinimum": 0,
16
+ "maximum": 9007199254740991
17
+ },
18
+ "email": {
19
+ "type": "object",
20
+ "properties": {
21
+ "enabled": {
22
+ "type": "boolean"
23
+ },
24
+ "recipients": {
25
+ "oneOf": [
26
+ {
27
+ "type": "object",
28
+ "properties": {
29
+ "kind": {
30
+ "type": "string",
31
+ "const": "admins"
32
+ }
33
+ },
34
+ "required": ["kind"]
35
+ },
36
+ {
37
+ "type": "object",
38
+ "properties": {
39
+ "kind": {
40
+ "type": "string",
41
+ "const": "members"
42
+ },
43
+ "memberIds": {
44
+ "minItems": 1,
45
+ "maxItems": 100,
46
+ "type": "array",
47
+ "items": {
48
+ "type": "string",
49
+ "pattern": "^mem_[0-9a-f]{26}$"
50
+ }
51
+ }
52
+ },
53
+ "required": ["kind", "memberIds"]
54
+ }
55
+ ]
56
+ },
57
+ "scheduleKinds": {
58
+ "type": "string",
59
+ "enum": ["both", "one-shot", "recurring"]
60
+ }
61
+ },
62
+ "required": ["enabled", "recipients", "scheduleKinds"]
63
+ },
64
+ "statusWebhook": {
65
+ "type": "object",
66
+ "properties": {
67
+ "url": {
68
+ "type": "string",
69
+ "maxLength": 2048,
70
+ "format": "uri"
71
+ },
72
+ "events": {
73
+ "minItems": 1,
74
+ "maxItems": 1,
75
+ "type": "array",
76
+ "items": {
77
+ "type": "string",
78
+ "enum": ["failed"]
79
+ }
80
+ },
81
+ "signingKey": {
82
+ "type": "object",
83
+ "properties": {
84
+ "id": {
85
+ "type": "string",
86
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
87
+ }
88
+ },
89
+ "required": ["id"]
90
+ },
91
+ "revision": {
92
+ "type": "integer",
93
+ "exclusiveMinimum": 0,
94
+ "maximum": 9007199254740991
95
+ }
96
+ },
97
+ "required": ["url", "events", "revision"]
98
+ }
99
+ },
100
+ "required": ["project", "environmentKind", "revision", "email"]
101
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "expectedRevision": {
6
+ "type": "integer",
7
+ "exclusiveMinimum": 0,
8
+ "maximum": 9007199254740991
9
+ }
10
+ },
11
+ "required": ["expectedRevision"],
12
+ "additionalProperties": false
13
+ }
@@ -0,0 +1,119 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "settings": {
6
+ "type": "object",
7
+ "properties": {
8
+ "project": {
9
+ "type": "string",
10
+ "pattern": "^proj_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
11
+ },
12
+ "environmentKind": {
13
+ "type": "string",
14
+ "enum": ["test", "live"]
15
+ },
16
+ "revision": {
17
+ "type": "integer",
18
+ "exclusiveMinimum": 0,
19
+ "maximum": 9007199254740991
20
+ },
21
+ "email": {
22
+ "type": "object",
23
+ "properties": {
24
+ "enabled": {
25
+ "type": "boolean"
26
+ },
27
+ "recipients": {
28
+ "oneOf": [
29
+ {
30
+ "type": "object",
31
+ "properties": {
32
+ "kind": {
33
+ "type": "string",
34
+ "const": "admins"
35
+ }
36
+ },
37
+ "required": ["kind"]
38
+ },
39
+ {
40
+ "type": "object",
41
+ "properties": {
42
+ "kind": {
43
+ "type": "string",
44
+ "const": "members"
45
+ },
46
+ "memberIds": {
47
+ "minItems": 1,
48
+ "maxItems": 100,
49
+ "type": "array",
50
+ "items": {
51
+ "type": "string",
52
+ "pattern": "^mem_[0-9a-f]{26}$"
53
+ }
54
+ }
55
+ },
56
+ "required": ["kind", "memberIds"]
57
+ }
58
+ ]
59
+ },
60
+ "scheduleKinds": {
61
+ "type": "string",
62
+ "enum": ["both", "one-shot", "recurring"]
63
+ }
64
+ },
65
+ "required": ["enabled", "recipients", "scheduleKinds"]
66
+ },
67
+ "statusWebhook": {
68
+ "type": "object",
69
+ "properties": {
70
+ "url": {
71
+ "type": "string",
72
+ "maxLength": 2048,
73
+ "format": "uri"
74
+ },
75
+ "events": {
76
+ "minItems": 1,
77
+ "maxItems": 1,
78
+ "type": "array",
79
+ "items": {
80
+ "type": "string",
81
+ "enum": ["failed"]
82
+ }
83
+ },
84
+ "signingKey": {
85
+ "type": "object",
86
+ "properties": {
87
+ "id": {
88
+ "type": "string",
89
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
90
+ }
91
+ },
92
+ "required": ["id"]
93
+ },
94
+ "revision": {
95
+ "type": "integer",
96
+ "exclusiveMinimum": 0,
97
+ "maximum": 9007199254740991
98
+ }
99
+ },
100
+ "required": ["url", "events", "revision"]
101
+ }
102
+ },
103
+ "required": ["project", "environmentKind", "revision", "email"]
104
+ },
105
+ "keyId": {
106
+ "type": "string",
107
+ "pattern": "^csk_[0-9abcdefghjkmnpqrstvwxyz]{26}$"
108
+ },
109
+ "secret": {
110
+ "type": "string",
111
+ "minLength": 1
112
+ },
113
+ "shownOnce": {
114
+ "type": "boolean",
115
+ "const": true
116
+ }
117
+ },
118
+ "required": ["settings", "keyId", "secret", "shownOnce"]
119
+ }
@@ -0,0 +1,13 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "type": "object",
4
+ "properties": {
5
+ "Idempotency-Key": {
6
+ "type": "string",
7
+ "minLength": 16,
8
+ "maxLength": 255,
9
+ "pattern": "^[\\x20-\\x7e]+$"
10
+ }
11
+ },
12
+ "required": ["Idempotency-Key"]
13
+ }