@whooshbang/contracts 1.0.0-rc.21 → 1.0.0-rc.23
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.
- package/CHANGELOG.md +32 -0
- package/README.md +9 -3
- package/contract-manifest.json +43 -41
- package/dist/generated/artifact-index.d.ts +35 -35
- package/dist/generated/artifact-index.js +43 -41
- package/dist/generated/artifact-index.js.map +1 -1
- package/dist/generated/validators-standalone.d.ts +340 -288
- package/dist/generated/validators-standalone.js +5560 -2925
- package/dist/generated/validators-standalone.js.map +1 -1
- package/dist/generated/validators.d.ts +12 -8
- package/dist/generated/validators.js +22 -18
- package/dist/generated/validators.js.map +1 -1
- package/dist/generated/whooshbang-event-v1.d.ts +1 -1
- package/dist/generated/whooshbang-v1.d.ts +211 -121
- package/dist/index.d.ts +2 -2
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/fixtures/core-v1/fixture-index.json +50 -34
- package/fixtures/core-v1/problems/credential-organization-mismatch.json +9 -0
- package/fixtures/core-v1/problems/live-simulator-refused.json +16 -0
- package/fixtures/core-v1/problems/project-slug-conflict.json +1 -1
- package/fixtures/core-v1/requests/create-organization-credential.json +4 -0
- package/fixtures/core-v1/requests/update-project.json +3 -0
- package/fixtures/core-v1/scenarios/api-credential-invalid-indistinguishable.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-one-time-reveal.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-revocation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/api-credential-rotation-overlap.json +1 -1
- package/fixtures/core-v1/scenarios/cancellation-too-late.json +1 -1
- package/fixtures/core-v1/scenarios/cross-organization-project.json +14 -0
- package/fixtures/core-v1/scenarios/cross-project-resource.json +1 -1
- package/fixtures/core-v1/scenarios/environment-mismatch.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-conflict.json +1 -1
- package/fixtures/core-v1/scenarios/idempotency-equivalent-replay.json +1 -1
- package/fixtures/core-v1/scenarios/malformed-bearer.json +1 -1
- package/fixtures/core-v1/scenarios/metadata-overrun.json +1 -1
- package/fixtures/core-v1/scenarios/missing-scope.json +1 -1
- package/fixtures/core-v1/scenarios/project-create-equivalent-replay.json +2 -2
- package/fixtures/core-v1/scenarios/project-slug-conflict.json +2 -2
- package/fixtures/core-v1/scenarios/provider-outcome-unknown.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-activation-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-authorization-capability-opacity.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-cross-connection-callback-rejected.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-expired-replay.json +1 -1
- package/fixtures/core-v1/scenarios/subscription-selected-connection-replay.json +1 -1
- package/fixtures/core-v1/success/{account-credential-collection.json → organization-credential-collection.json} +3 -3
- package/fixtures/core-v1/success/organization-credential-created.json +12 -0
- package/fixtures/core-v1/success/{account-credential-revoked.json → organization-credential-revoked.json} +3 -3
- package/fixtures/core-v1/success/{account-credential-rotated.json → organization-credential-rotated.json} +7 -7
- package/fixtures/core-v1/success/{account-projection.json → organization-projection.json} +2 -2
- package/fixtures/core-v1/success/project-collection.json +3 -2
- package/fixtures/core-v1/success/project-created.json +3 -2
- package/fixtures/interaction-machine-v1/scenarios/ack-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-cross-machine.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-out-of-order.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ack-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/ambiguous-free-text.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/callback-token-opacity.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-conflict.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-registration-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-revocation-replay.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/credential-rotation.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/first-credential-activates.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-duplicate.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-expired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-retired.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/interaction-stale.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-admin-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-bound-message-create.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-cancel-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-crash-before-ack.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-notifier-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-other-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-owned-message-read.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/machine-subscriber-mismatch.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/poll-uncommitted-cursor-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/project-credential-machine-endpoint-denied.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-integrity-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-signature-rejected.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/quarantine-valid.json +1 -1
- package/fixtures/interaction-machine-v1/scenarios/revoked-machine-credential.json +1 -1
- package/fixtures/recipient-experience-v1/requests/create-recipient-group.json +1 -1
- package/fixtures/recipient-experience-v1/requests/create-subscriber-with-groups.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/membership-broadcast-snapshot.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/preferred-binding-resolution.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/recipient-session-security.json +1 -1
- package/fixtures/recipient-experience-v1/scenarios/subscriber-initial-groups-transaction.json +2 -2
- package/fixtures/recipient-experience-v1/success/recipient-group.json +1 -1
- package/fixtures/whooshbang-events-v1/events/agent-binding-degraded.json +1 -1
- package/fixtures/whooshbang-events-v1/events/interaction-expired.json +1 -1
- package/fixtures/whooshbang-events-v1/events/interaction-received.json +1 -1
- package/fixtures/whooshbang-events-v1/events/message-delivered.json +1 -1
- package/fixtures/whooshbang-events-v1/events/message-expired.json +1 -1
- package/fixtures/whooshbang-events-v1/events/message-failed.json +1 -1
- package/fixtures/whooshbang-events-v1/events/message-provider-accepted.json +1 -1
- package/fixtures/whooshbang-events-v1/events/subscription-activated.json +1 -1
- package/fixtures/whooshbang-events-v1/events/subscription-revoked.json +1 -1
- package/fixtures/whooshbang-events-v1/signing/vectors.json +29 -29
- package/openapi/generated/whooshbang-v1.bundle.json +641 -248
- package/openapi/whooshbang-v1.yaml +403 -189
- package/package.json +1 -1
- package/schemas/core-scenario.schema.json +1 -1
- package/schemas/events/agent-binding-degraded-v1.schema.json +1 -1
- package/schemas/events/interaction-expired-v1.schema.json +1 -1
- package/schemas/events/interaction-received-v1.schema.json +1 -1
- package/schemas/events/message-delivered-v1.schema.json +1 -1
- package/schemas/events/message-expired-v1.schema.json +1 -1
- package/schemas/events/message-failed-v1.schema.json +1 -1
- package/schemas/events/message-provider-accepted-v1.schema.json +1 -1
- package/schemas/events/subscription-activated-v1.schema.json +1 -1
- package/schemas/events/subscription-revoked-v1.schema.json +1 -1
- package/schemas/events/whooshbang-event-v1.schema.json +3 -3
- package/schemas/fixture-index.schema.json +1 -1
- package/schemas/interaction-machine-scenario.schema.json +1 -1
- package/schemas/interaction-v1.schema.json +1 -1
- package/schemas/machine-v1.schema.json +1 -1
- package/schemas/provider-capabilities-v1.schema.json +1 -1
- package/schemas/webhooks/webhook-delivery-case-v1.schema.json +1 -1
- package/schemas/webhooks/webhook-signing-vector-v1.schema.json +1 -1
- package/schemas/whooshbang-v1.schema.json +289 -67
- package/fixtures/core-v1/problems/credential-account-mismatch.json +0 -9
- package/fixtures/core-v1/requests/create-account-credential.json +0 -4
- package/fixtures/core-v1/scenarios/cross-account-project.json +0 -14
- package/fixtures/core-v1/success/account-credential-created.json +0 -12
- /package/fixtures/core-v1/requests/{rotate-account-credential.json → rotate-organization-credential.json} +0 -0
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
/**
|
|
6
6
|
* Public request, resource, summary, and Problem Details models for the WhooshBang V1 REST API.
|
|
7
7
|
*/
|
|
8
|
-
export type WhooshBangV1ContractDocument =
|
|
8
|
+
export type WhooshBangV1ContractDocument = OrganizationProjection | CloseOrganizationRequest | OrganizationClosureResult | CreateProjectRequest | Project | UpdateProjectRequest | PrivacyMode | ProjectCollection | RecipientCopyOverrideCollection | UpdateRecipientCopyOverrideRequest | CreateApiCredentialRequest | RotateApiCredentialRequest | ApiCredential | ApiCredentialCollection | ApiCredentialSecretReveal | ApiCredentialRotation | CreateOrganizationCredentialRequest | RotateOrganizationCredentialRequest | OrganizationCredential | OrganizationCredentialCollection | OrganizationCredentialSecretReveal | OrganizationCredentialRotation | CreateCustomerEndpointRequest | CustomerEndpoint | CustomerEndpointCollection | CustomerEndpointMutationResult | CustomerEndpointAttemptCollection | CustomerEndpointVerificationChallenge | CreateSubscriptionLinkRequest | SubscriptionLink | CreateMessageRequest | Message | Problem | IdempotencyKey | ProviderCapabilitiesCollection | ConnectionProviderCollection | ChannelConnection | ChannelConnectionCollection | CreateChannelConnectionRequest | UpdateChannelConnectionRequest | RotateChannelConnectionCredentialRequest | NotifierConnectionCollection | AttachNotifierConnectionRequest | ConnectionTest | ConnectionTestCollection | CreateConnectionTestRequest | CustomerOwnedSlackAppManifest | ProjectRecipientExperience | UpdateProjectRecipientExperienceRequest | RecipientBrandLogoUpload | NotificationImageAsset | EnvironmentRecipientExperience | UpdateEnvironmentRecipientExperienceRequest | CreateRecipientSessionRequest | CreateRecipientSessionResponse | RecipientSession | CreateProviderHandoffRequest | ProviderHandoff | RecipientHandoffCompletion | SetPreferredBindingRequest | PreferredBinding1 | CreateSubscriberRequest | Subscriber | SubscriberDataExport | CreateRecipientGroupRequest | RecipientGroup | RecipientGroupCollection | RecipientGroupMembership | RecipientGroupMembershipCollection | CreateGroupBroadcastRequest | GroupBroadcast;
|
|
9
9
|
/**
|
|
10
10
|
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
11
11
|
*/
|
|
@@ -13,7 +13,7 @@ export type OpaqueIdentifier = string;
|
|
|
13
13
|
/**
|
|
14
14
|
* The stable WhooshBang authorization role projected from the current Clerk organization membership.
|
|
15
15
|
*/
|
|
16
|
-
export type
|
|
16
|
+
export type OrganizationRole = "admin" | "member";
|
|
17
17
|
/**
|
|
18
18
|
* An RFC 3339 timestamp with a UTC offset. The server is authoritative.
|
|
19
19
|
*/
|
|
@@ -30,6 +30,10 @@ export type RecipientLanguage = "en" | "es" | "pt-BR" | "fr" | "de" | "it" | "nl
|
|
|
30
30
|
* The single environment selected by the authenticated credential.
|
|
31
31
|
*/
|
|
32
32
|
export type Environment = "test" | "live";
|
|
33
|
+
/**
|
|
34
|
+
* Project profile collection policy. minimal (the default for new and existing projects) keeps recipient language only; standard permits messenger profile data; private retains delivery routing and the customer-supplied subscriber identifier, with no profile data. Lowering collection erases existing fields the new mode disallows.
|
|
35
|
+
*/
|
|
36
|
+
export type PrivacyMode = "minimal" | "standard" | "private";
|
|
33
37
|
/**
|
|
34
38
|
* A 1-based page number. Present on a response only when the request addressed the list by page rather than by cursor: a cursor walk cannot know which page it is on. What is bounded is the row a page starts at, not the page number: a request whose first row would be past 50,000 — the deepest row any published list ceiling reaches — is refused as `request_invalid`. Bounding the page number instead would make the last rows of a large list unreachable at a small page size, which is exactly when a person is paging through one.
|
|
35
39
|
*/
|
|
@@ -124,7 +128,7 @@ export type ApiCredentialScopeSet = [ApiCredentialScope] | [ApiCredentialScope,
|
|
|
124
128
|
ApiCredentialScope
|
|
125
129
|
];
|
|
126
130
|
/**
|
|
127
|
-
* One project-credential capability. Environment authority always comes from the credential record, never a scope or request field. `projects:write` configures the credential's own project and environment; it never creates a project, which remains an
|
|
131
|
+
* One project-credential capability. Environment authority always comes from the credential record, never a scope or request field. `projects:write` configures the credential's own project and environment; it never creates a project, which remains an organization authority. The project-wide singletons — brand, default locale, logo and recipient copy — are what a live recipient sees, so writing them requires a live credential; a test credential may read them and may write its own environment's policy.
|
|
128
132
|
*/
|
|
129
133
|
export type ApiCredentialScope = "projects:write" | "projects:read" | "messages:write" | "messages:read" | "subscriptions:write" | "subscriptions:read" | "machine-clients:write" | "machine-clients:read" | "capabilities:read" | "connections:write" | "connections:read";
|
|
130
134
|
/**
|
|
@@ -169,102 +173,106 @@ export type ApiCredentialSecret = string;
|
|
|
169
173
|
* @minItems 1
|
|
170
174
|
* @maxItems 12
|
|
171
175
|
*/
|
|
172
|
-
export type
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
export type OrganizationCredentialScopeSet = [OrganizationCredentialScope] | [OrganizationCredentialScope, OrganizationCredentialScope] | [
|
|
177
|
+
OrganizationCredentialScope,
|
|
178
|
+
OrganizationCredentialScope,
|
|
179
|
+
OrganizationCredentialScope
|
|
180
|
+
] | [
|
|
181
|
+
OrganizationCredentialScope,
|
|
182
|
+
OrganizationCredentialScope,
|
|
183
|
+
OrganizationCredentialScope,
|
|
184
|
+
OrganizationCredentialScope
|
|
177
185
|
] | [
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
186
|
+
OrganizationCredentialScope,
|
|
187
|
+
OrganizationCredentialScope,
|
|
188
|
+
OrganizationCredentialScope,
|
|
189
|
+
OrganizationCredentialScope,
|
|
190
|
+
OrganizationCredentialScope
|
|
183
191
|
] | [
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
192
|
+
OrganizationCredentialScope,
|
|
193
|
+
OrganizationCredentialScope,
|
|
194
|
+
OrganizationCredentialScope,
|
|
195
|
+
OrganizationCredentialScope,
|
|
196
|
+
OrganizationCredentialScope,
|
|
197
|
+
OrganizationCredentialScope
|
|
190
198
|
] | [
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
199
|
+
OrganizationCredentialScope,
|
|
200
|
+
OrganizationCredentialScope,
|
|
201
|
+
OrganizationCredentialScope,
|
|
202
|
+
OrganizationCredentialScope,
|
|
203
|
+
OrganizationCredentialScope,
|
|
204
|
+
OrganizationCredentialScope,
|
|
205
|
+
OrganizationCredentialScope
|
|
198
206
|
] | [
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
+
OrganizationCredentialScope,
|
|
208
|
+
OrganizationCredentialScope,
|
|
209
|
+
OrganizationCredentialScope,
|
|
210
|
+
OrganizationCredentialScope,
|
|
211
|
+
OrganizationCredentialScope,
|
|
212
|
+
OrganizationCredentialScope,
|
|
213
|
+
OrganizationCredentialScope,
|
|
214
|
+
OrganizationCredentialScope
|
|
207
215
|
] | [
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
216
|
+
OrganizationCredentialScope,
|
|
217
|
+
OrganizationCredentialScope,
|
|
218
|
+
OrganizationCredentialScope,
|
|
219
|
+
OrganizationCredentialScope,
|
|
220
|
+
OrganizationCredentialScope,
|
|
221
|
+
OrganizationCredentialScope,
|
|
222
|
+
OrganizationCredentialScope,
|
|
223
|
+
OrganizationCredentialScope,
|
|
224
|
+
OrganizationCredentialScope
|
|
217
225
|
] | [
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
226
|
+
OrganizationCredentialScope,
|
|
227
|
+
OrganizationCredentialScope,
|
|
228
|
+
OrganizationCredentialScope,
|
|
229
|
+
OrganizationCredentialScope,
|
|
230
|
+
OrganizationCredentialScope,
|
|
231
|
+
OrganizationCredentialScope,
|
|
232
|
+
OrganizationCredentialScope,
|
|
233
|
+
OrganizationCredentialScope,
|
|
234
|
+
OrganizationCredentialScope,
|
|
235
|
+
OrganizationCredentialScope
|
|
228
236
|
] | [
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
237
|
+
OrganizationCredentialScope,
|
|
238
|
+
OrganizationCredentialScope,
|
|
239
|
+
OrganizationCredentialScope,
|
|
240
|
+
OrganizationCredentialScope,
|
|
241
|
+
OrganizationCredentialScope,
|
|
242
|
+
OrganizationCredentialScope,
|
|
243
|
+
OrganizationCredentialScope,
|
|
244
|
+
OrganizationCredentialScope,
|
|
245
|
+
OrganizationCredentialScope,
|
|
246
|
+
OrganizationCredentialScope,
|
|
247
|
+
OrganizationCredentialScope
|
|
240
248
|
] | [
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
249
|
+
OrganizationCredentialScope,
|
|
250
|
+
OrganizationCredentialScope,
|
|
251
|
+
OrganizationCredentialScope,
|
|
252
|
+
OrganizationCredentialScope,
|
|
253
|
+
OrganizationCredentialScope,
|
|
254
|
+
OrganizationCredentialScope,
|
|
255
|
+
OrganizationCredentialScope,
|
|
256
|
+
OrganizationCredentialScope,
|
|
257
|
+
OrganizationCredentialScope,
|
|
258
|
+
OrganizationCredentialScope,
|
|
259
|
+
OrganizationCredentialScope,
|
|
260
|
+
OrganizationCredentialScope
|
|
253
261
|
];
|
|
254
262
|
/**
|
|
255
|
-
* One
|
|
263
|
+
* One organization-credential capability. `organization:read` is the organization's project directory — listing the organization's projects and reading one — and is the only scope here a project credential can never carry; it authorizes nothing below the organization. Every other name is the project-credential vocabulary unchanged, and is exercised only on the environment-scoped routes, where the project and environment come from the path and the credential's authority is the intersection of these scopes with the project-credential vocabulary. An organization credential is therefore never wider than a project credential would have been for the same project environment.
|
|
256
264
|
*/
|
|
257
|
-
export type
|
|
265
|
+
export type OrganizationCredentialScope = "organization:read" | "projects:write" | "projects:read" | "messages:write" | "messages:read" | "subscriptions:write" | "subscriptions:read" | "machine-clients:write" | "machine-clients:read" | "capabilities:read" | "connections:write" | "connections:read";
|
|
258
266
|
/**
|
|
259
|
-
* Safe
|
|
267
|
+
* Safe organization-scoped API credential metadata. It carries no project or environment, because it names neither: a request does, in its path. It never contains a bearer secret, digest, Clerk identifier, or digest-key reference.
|
|
260
268
|
*/
|
|
261
|
-
export type
|
|
269
|
+
export type OrganizationCredential = {
|
|
262
270
|
[k: string]: unknown;
|
|
263
271
|
} & {
|
|
264
|
-
id:
|
|
265
|
-
prefix:
|
|
272
|
+
id: OrganizationCredentialId;
|
|
273
|
+
prefix: OrganizationCredentialPrefix;
|
|
266
274
|
label: string;
|
|
267
|
-
scopes:
|
|
275
|
+
scopes: OrganizationCredentialScopeSet;
|
|
268
276
|
/**
|
|
269
277
|
* An opaque identifier. Its shape, ordering, and embedded content are not public promises.
|
|
270
278
|
*/
|
|
@@ -279,17 +287,17 @@ export type AccountCredential = {
|
|
|
279
287
|
revoked_at?: Timestamp;
|
|
280
288
|
};
|
|
281
289
|
/**
|
|
282
|
-
*
|
|
290
|
+
* ocred_ followed by the canonical unpadded base64url encoding of exactly 16 random bytes.
|
|
283
291
|
*/
|
|
284
|
-
export type
|
|
292
|
+
export type OrganizationCredentialId = string;
|
|
285
293
|
/**
|
|
286
|
-
* A safe display prefix containing the
|
|
294
|
+
* A safe display prefix containing the organization-credential format marker and first eight base64url identity characters, never secret bytes.
|
|
287
295
|
*/
|
|
288
|
-
export type
|
|
296
|
+
export type OrganizationCredentialPrefix = string;
|
|
289
297
|
/**
|
|
290
298
|
* The exact one-time runtime bearer syntax. The final segment is canonical unpadded base64url for exactly 32 random secret bytes.
|
|
291
299
|
*/
|
|
292
|
-
export type
|
|
300
|
+
export type OrganizationCredentialSecret = string;
|
|
293
301
|
export type CustomerEventType = "subscription.activated" | "subscription.revoked" | "message.provider_accepted" | "message.delivered" | "message.failed" | "message.expired" | "interaction.received" | "interaction.expired" | "agent_binding.degraded";
|
|
294
302
|
export type CustomerEndpointStatus = "unverified" | "active" | "paused" | "disabled";
|
|
295
303
|
/**
|
|
@@ -347,7 +355,7 @@ export type SubscriptionLink = {
|
|
|
347
355
|
*/
|
|
348
356
|
cancellation_effective?: boolean;
|
|
349
357
|
};
|
|
350
|
-
export type ProblemCode = "authentication_required" | "credential_invalid" | "scope_forbidden" | "environment_mismatch" | "idempotency_key_required" | "idempotency_conflict" | "project_slug_conflict" | "request_invalid" | "replay_unavailable" | "subscriber_unbound" | "recipient_configuration_invalid" | "recipient_origin_forbidden" | "return_destination_not_found" | "recipient_capability_invalid" | "recipient_handoff_invalid" | "preferred_binding_conflict" | "preferred_binding_unavailable" | "subscriber_conflict" | "recipient_group_conflict" | "recipient_group_archived" | "resource_not_found" | "resource_expired" | "cancellation_too_late" | "
|
|
358
|
+
export type ProblemCode = "authentication_required" | "credential_invalid" | "scope_forbidden" | "environment_mismatch" | "idempotency_key_required" | "idempotency_conflict" | "privacy_operation_in_progress" | "project_slug_conflict" | "request_invalid" | "replay_unavailable" | "subscriber_unbound" | "recipient_configuration_invalid" | "recipient_origin_forbidden" | "return_destination_not_found" | "recipient_capability_invalid" | "recipient_handoff_invalid" | "preferred_binding_conflict" | "preferred_binding_unavailable" | "subscriber_conflict" | "recipient_group_conflict" | "recipient_group_archived" | "resource_not_found" | "resource_expired" | "cancellation_too_late" | "credential_organization_mismatch" | "endpoint_rotation_conflict" | "rate_limited" | "provider_retryable" | "provider_terminal" | "provider_outcome_unknown";
|
|
351
359
|
/**
|
|
352
360
|
* Creates one logical message for one subscriber and one resolved channel binding.
|
|
353
361
|
*/
|
|
@@ -357,7 +365,7 @@ export type CreateMessageRequest = {
|
|
|
357
365
|
to: MessageTarget;
|
|
358
366
|
notifier_id?: OpaqueIdentifier;
|
|
359
367
|
/**
|
|
360
|
-
* Optional routing override. Omit for notifier-default connection delivery
|
|
368
|
+
* Optional routing override. Simulator delivery and the reserved test: subscriber prefix are test-environment-only; live requests are refused with 400 request_invalid. Omit for notifier-default connection delivery or the reserved test-environment simulator default.
|
|
361
369
|
*/
|
|
362
370
|
delivery_target?: "connection" | "simulator";
|
|
363
371
|
/**
|
|
@@ -816,6 +824,13 @@ export type Problem1 = {
|
|
|
816
824
|
code?: "idempotency_conflict";
|
|
817
825
|
retryable?: false;
|
|
818
826
|
[k: string]: unknown;
|
|
827
|
+
} | {
|
|
828
|
+
type?: "https://whooshbang.flowxo.com/problems/privacy_operation_in_progress";
|
|
829
|
+
title?: "Privacy operation in progress";
|
|
830
|
+
status?: 409;
|
|
831
|
+
code?: "privacy_operation_in_progress";
|
|
832
|
+
retryable?: true;
|
|
833
|
+
[k: string]: unknown;
|
|
819
834
|
} | {
|
|
820
835
|
type?: "https://whooshbang.flowxo.com/problems/request_invalid";
|
|
821
836
|
title?: "Request invalid";
|
|
@@ -922,10 +937,10 @@ export type Problem1 = {
|
|
|
922
937
|
retryable?: false;
|
|
923
938
|
[k: string]: unknown;
|
|
924
939
|
} | {
|
|
925
|
-
type?: "https://whooshbang.flowxo.com/problems/
|
|
926
|
-
title?: "Credential
|
|
940
|
+
type?: "https://whooshbang.flowxo.com/problems/credential_organization_mismatch";
|
|
941
|
+
title?: "Credential organization mismatch";
|
|
927
942
|
status?: 403;
|
|
928
|
-
code?: "
|
|
943
|
+
code?: "credential_organization_mismatch";
|
|
929
944
|
retryable?: false;
|
|
930
945
|
[k: string]: unknown;
|
|
931
946
|
} | {
|
|
@@ -1436,7 +1451,7 @@ export type ChannelConnection = TelegramChannelConnection | HostedChannelConnect
|
|
|
1436
1451
|
*/
|
|
1437
1452
|
export type ChannelConnectionStatus = "pending" | "active" | "degraded" | "disabled" | "archived";
|
|
1438
1453
|
/**
|
|
1439
|
-
* How far a guided setup has reached, which is the only thing a caller can act on while a connection is still `pending`. `awaiting_handoff` waits for the administrator to open the link on the Telegram account that will own the bot; `awaiting_creation` means that account is bound and the bot does not exist yet; `provisioning` means the bot exists and WhooshBang is installing delivery on it. `failed` and `expired` end the attempt without ending the connection — another attempt can be started on the same `pending` connection — and neither withdraws a bot Telegram has already created, because no provider API can delete one.
|
|
1454
|
+
* How far a guided setup has reached, which is the only thing a caller can act on while a connection is still `pending`. `awaiting_handoff` waits for the administrator to open the link on the Telegram account that will own the bot; `awaiting_creation` means that Telegram account is bound and the bot does not exist yet; `provisioning` means the bot exists and WhooshBang is installing delivery on it. `failed` and `expired` end the attempt without ending the connection — another attempt can be started on the same `pending` connection — and neither withdraws a bot Telegram has already created, because no provider API can delete one.
|
|
1440
1455
|
*/
|
|
1441
1456
|
export type ChannelConnectionSetupStatus = "awaiting_handoff" | "awaiting_creation" | "provisioning" | "failed" | "expired";
|
|
1442
1457
|
/**
|
|
@@ -1476,7 +1491,7 @@ export type CustomerOwnedSlackSetupStatus = "awaiting_app_creation" | "awaiting_
|
|
|
1476
1491
|
*/
|
|
1477
1492
|
export type CustomerOwnedSlackAppAuthority = "client_identity" | "client_secret" | "signing_secret";
|
|
1478
1493
|
/**
|
|
1479
|
-
* Selects the provider identity this environment will send through, discriminated on `mode`, and naming the provider it is for. The two customer-owned modes differ only in where the bot comes from: `customer_byok` connects one the customer already has, and `customer_managed` has Telegram create a new one on the administrator's own account. Neither supersedes the other, because a bot that already exists can never be adopted into managed mode — the manager that may act for a bot is fixed when the bot is created.
|
|
1494
|
+
* Selects the provider identity this environment will send through, discriminated on `mode`, and naming the provider it is for. The two customer-owned modes differ only in where the bot comes from: `customer_byok` connects one the customer already has, and `customer_managed` has Telegram create a new one on the administrator's own Telegram account. Neither supersedes the other, because a bot that already exists can never be adopted into managed mode — the manager that may act for a bot is fixed when the bot is created.
|
|
1480
1495
|
*/
|
|
1481
1496
|
export type CreateChannelConnectionRequest = {
|
|
1482
1497
|
mode: "whooshbang_shared";
|
|
@@ -1748,20 +1763,42 @@ export type RecipientGroupMembership = {
|
|
|
1748
1763
|
/**
|
|
1749
1764
|
* The current Clerk organization projected as a WhooshBang tenant. Clerk organization and user identifiers are not public fields.
|
|
1750
1765
|
*/
|
|
1751
|
-
export interface
|
|
1766
|
+
export interface OrganizationProjection {
|
|
1752
1767
|
id: OpaqueIdentifier;
|
|
1753
1768
|
name: string;
|
|
1754
1769
|
status: "active" | "suspended";
|
|
1755
|
-
membership:
|
|
1770
|
+
membership: OrganizationMembershipSummary;
|
|
1756
1771
|
created_at: Timestamp;
|
|
1757
1772
|
updated_at: Timestamp;
|
|
1758
1773
|
diagnostic_id: DiagnosticId;
|
|
1759
1774
|
}
|
|
1760
|
-
export interface
|
|
1761
|
-
role:
|
|
1775
|
+
export interface OrganizationMembershipSummary {
|
|
1776
|
+
role: OrganizationRole;
|
|
1777
|
+
}
|
|
1778
|
+
/**
|
|
1779
|
+
* Exact, explicit confirmation that the current organization administrator intends to close the whole organization.
|
|
1780
|
+
*/
|
|
1781
|
+
export interface CloseOrganizationRequest {
|
|
1782
|
+
confirmation: "close-organization";
|
|
1783
|
+
}
|
|
1784
|
+
/**
|
|
1785
|
+
* Terminal organization-closure result. Repeating closure returns the same closed_at and any provider-owned resources that still require manual retirement.
|
|
1786
|
+
*/
|
|
1787
|
+
export interface OrganizationClosureResult {
|
|
1788
|
+
status: "closed";
|
|
1789
|
+
closed_at: Timestamp;
|
|
1790
|
+
provider_actions_required: OrganizationClosureProviderAction[];
|
|
1791
|
+
}
|
|
1792
|
+
/**
|
|
1793
|
+
* One provider-owned resource the customer must retire outside WhooshBang after organization closure. It contains safe identifiers only, never provider credentials.
|
|
1794
|
+
*/
|
|
1795
|
+
export interface OrganizationClosureProviderAction {
|
|
1796
|
+
provider: "telegram" | "slack";
|
|
1797
|
+
action: "revoke_bot_token" | "delete_provider_application";
|
|
1798
|
+
connection_id: OpaqueIdentifier;
|
|
1762
1799
|
}
|
|
1763
1800
|
/**
|
|
1764
|
-
* Creates one project inside the
|
|
1801
|
+
* Creates one project inside the organization selected by the authenticated human session.
|
|
1765
1802
|
*/
|
|
1766
1803
|
export interface CreateProjectRequest {
|
|
1767
1804
|
name: string;
|
|
@@ -1770,13 +1807,17 @@ export interface CreateProjectRequest {
|
|
|
1770
1807
|
* The application fallback locale for recipient-owned surfaces when no session, subscriber, or supported provider locale is available.
|
|
1771
1808
|
*/
|
|
1772
1809
|
default_locale?: "en" | "es" | "pt-BR" | "fr" | "de" | "it" | "nl" | "pl" | "ru" | "uk" | "tr" | "id" | "ar" | "fa" | "hi" | "zh-Hans";
|
|
1810
|
+
/**
|
|
1811
|
+
* Project profile collection policy. minimal (the default for new and existing projects) keeps recipient language only; standard permits messenger profile data; private retains delivery routing and the customer-supplied subscriber identifier, with no profile data. Lowering collection erases existing fields the new mode disallows.
|
|
1812
|
+
*/
|
|
1813
|
+
privacy_mode?: "minimal" | "standard" | "private";
|
|
1773
1814
|
}
|
|
1774
1815
|
/**
|
|
1775
|
-
* An
|
|
1816
|
+
* An organization-scoped application project with its complete test/live bootstrap.
|
|
1776
1817
|
*/
|
|
1777
1818
|
export interface Project {
|
|
1778
1819
|
id: OpaqueIdentifier;
|
|
1779
|
-
|
|
1820
|
+
organization_id: OpaqueIdentifier;
|
|
1780
1821
|
name: string;
|
|
1781
1822
|
slug: string;
|
|
1782
1823
|
status: "active" | "disabled";
|
|
@@ -1789,6 +1830,7 @@ export interface Project {
|
|
|
1789
1830
|
created_at: Timestamp;
|
|
1790
1831
|
updated_at: Timestamp;
|
|
1791
1832
|
diagnostic_id: DiagnosticId;
|
|
1833
|
+
privacy_mode: PrivacyMode;
|
|
1792
1834
|
}
|
|
1793
1835
|
/**
|
|
1794
1836
|
* A test or live project environment with its transactionally created default notifier.
|
|
@@ -1811,7 +1853,13 @@ export interface DefaultNotifierSummary {
|
|
|
1811
1853
|
is_default: true;
|
|
1812
1854
|
}
|
|
1813
1855
|
/**
|
|
1814
|
-
*
|
|
1856
|
+
* Sets the project privacy policy. Moving from standard to minimal erases stored identifying profile data; moving to private also erases recipient language. Increasing collection does not restore erased data.
|
|
1857
|
+
*/
|
|
1858
|
+
export interface UpdateProjectRequest {
|
|
1859
|
+
privacy_mode: PrivacyMode;
|
|
1860
|
+
}
|
|
1861
|
+
/**
|
|
1862
|
+
* A stable page of projects inside the authenticated organization.
|
|
1815
1863
|
*/
|
|
1816
1864
|
export interface ProjectCollection {
|
|
1817
1865
|
/**
|
|
@@ -1975,26 +2023,26 @@ export interface ApiCredentialRotation {
|
|
|
1975
2023
|
replaced_credential: ApiCredential;
|
|
1976
2024
|
}
|
|
1977
2025
|
/**
|
|
1978
|
-
* Creates one credential against the whole
|
|
2026
|
+
* Creates one credential against the whole organization rather than one project environment.
|
|
1979
2027
|
*/
|
|
1980
|
-
export interface
|
|
2028
|
+
export interface CreateOrganizationCredentialRequest {
|
|
1981
2029
|
label: string;
|
|
1982
|
-
scopes:
|
|
2030
|
+
scopes: OrganizationCredentialScopeSet;
|
|
1983
2031
|
}
|
|
1984
2032
|
/**
|
|
1985
2033
|
* Creates a replacement with the same label and scopes and schedules terminal revocation of the replaced credential after the declared overlap.
|
|
1986
2034
|
*/
|
|
1987
|
-
export interface
|
|
2035
|
+
export interface RotateOrganizationCredentialRequest {
|
|
1988
2036
|
overlap_seconds: number;
|
|
1989
2037
|
}
|
|
1990
2038
|
/**
|
|
1991
|
-
* A stable page of safe
|
|
2039
|
+
* A stable page of safe organization-credential metadata for one organization.
|
|
1992
2040
|
*/
|
|
1993
|
-
export interface
|
|
2041
|
+
export interface OrganizationCredentialCollection {
|
|
1994
2042
|
/**
|
|
1995
2043
|
* @maxItems 100
|
|
1996
2044
|
*/
|
|
1997
|
-
items:
|
|
2045
|
+
items: OrganizationCredential[];
|
|
1998
2046
|
next_cursor?: string;
|
|
1999
2047
|
page?: ListPageNumber;
|
|
2000
2048
|
page_size?: ListPageSize;
|
|
@@ -2003,16 +2051,16 @@ export interface AccountCredentialCollection {
|
|
|
2003
2051
|
/**
|
|
2004
2052
|
* The creation-only response. The secret is emitted in this response exactly once and is never available from list, rotate-target, revoke, or later read responses.
|
|
2005
2053
|
*/
|
|
2006
|
-
export interface
|
|
2007
|
-
credential:
|
|
2008
|
-
secret:
|
|
2054
|
+
export interface OrganizationCredentialSecretReveal {
|
|
2055
|
+
credential: OrganizationCredential;
|
|
2056
|
+
secret: OrganizationCredentialSecret;
|
|
2009
2057
|
}
|
|
2010
2058
|
/**
|
|
2011
2059
|
* A creation-only replacement secret plus safe metadata for the credential it replaces.
|
|
2012
2060
|
*/
|
|
2013
|
-
export interface
|
|
2014
|
-
credential:
|
|
2015
|
-
replaced_credential:
|
|
2061
|
+
export interface OrganizationCredentialRotation {
|
|
2062
|
+
credential: OrganizationCredentialSecretReveal;
|
|
2063
|
+
replaced_credential: OrganizationCredential;
|
|
2016
2064
|
}
|
|
2017
2065
|
/**
|
|
2018
2066
|
* Creates one project/environment endpoint. The service validates the final normalized destination and never returns it from health or diagnostic reads.
|
|
@@ -3157,7 +3205,7 @@ export interface TelegramChannelConnection {
|
|
|
3157
3205
|
export interface ChannelConnectionSetup {
|
|
3158
3206
|
status: ChannelConnectionSetupStatus;
|
|
3159
3207
|
/**
|
|
3160
|
-
* The link the administrator opens to put their own Telegram account behind this setup; for Telegram it is `https://t.me/<manager>?start=<payload>`. It is a capability for exactly one setup session and nothing else: it names no
|
|
3208
|
+
* The link the administrator opens to put their own Telegram account behind this setup; for Telegram it is `https://t.me/<manager>?start=<payload>`. It is a capability for exactly one setup session and nothing else: it names no organization, no project, and no environment, it stops working at `expires_at`, and only the first Telegram account to open it is bound. It is not credential material, so displaying it costs nothing beyond letting whoever sees it first become the owner of the bot this setup creates. After `expired` or `failed` it binds nothing, and restarting the setup issues a new one rather than reviving this.
|
|
3161
3209
|
*/
|
|
3162
3210
|
handoff_url: string;
|
|
3163
3211
|
/**
|
|
@@ -3169,7 +3217,7 @@ export interface ChannelConnectionSetup {
|
|
|
3169
3217
|
*/
|
|
3170
3218
|
suggested_bot_username: string;
|
|
3171
3219
|
/**
|
|
3172
|
-
* Why this attempt ended, in terms the administrator can act on. Absent when there is nothing both safe and useful to say: an attempt refused because that Telegram account already holds a live setup says only that, because naming the
|
|
3220
|
+
* Why this attempt ended, in terms the administrator can act on. Absent when there is nothing both safe and useful to say: an attempt refused because that Telegram account already holds a live setup says only that, because naming the organization, project, or environment holding the other one would disclose another customer.
|
|
3173
3221
|
*/
|
|
3174
3222
|
failure_reason?: string;
|
|
3175
3223
|
}
|
|
@@ -3291,7 +3339,7 @@ export interface CustomerOwnedSlackChannelConnection {
|
|
|
3291
3339
|
export interface CustomerOwnedSlackConnectionSetup {
|
|
3292
3340
|
status: CustomerOwnedSlackSetupStatus;
|
|
3293
3341
|
/**
|
|
3294
|
-
* Slack's own app-creation flow, opened with this app's manifest already filled in, so the owner reviews and presses Create rather than writing or pasting YAML. The URL carries configuration only: it names no
|
|
3342
|
+
* Slack's own app-creation flow, opened with this app's manifest already filled in, so the owner reviews and presses Create rather than writing or pasting YAML. The URL carries configuration only: it names no organization, project, or environment and contains no credential. The opaque handle it does carry selects candidate setup state and authorizes nothing.
|
|
3295
3343
|
*/
|
|
3296
3344
|
creation_url: string;
|
|
3297
3345
|
/**
|
|
@@ -3476,7 +3524,7 @@ export interface CreateConnectionTestRequest {
|
|
|
3476
3524
|
/**
|
|
3477
3525
|
* The exact configuration a customer-owned Slack app is created from, as data rather than as a URL-encoded blob.
|
|
3478
3526
|
*
|
|
3479
|
-
* It exists so the owner can read what they are about to approve, and so a reviewer can check it, without opening Slack. It carries configuration only: no
|
|
3527
|
+
* It exists so the owner can read what they are about to approve, and so a reviewer can check it, without opening Slack. It carries configuration only: no organization, project, or environment, no credential, and no provider-native identifier. The opaque handle inside the request URLs selects candidate setup state and authorizes nothing — a request still has to carry Slack's signature over the untouched body before anything inside it is believed.
|
|
3480
3528
|
*/
|
|
3481
3529
|
export interface CustomerOwnedSlackAppManifest {
|
|
3482
3530
|
/**
|
|
@@ -4860,7 +4908,7 @@ export interface CreateRecipientSessionResponse {
|
|
|
4860
4908
|
hosted_url: "https://connect.whooshbang.com/recipient-settings";
|
|
4861
4909
|
}
|
|
4862
4910
|
/**
|
|
4863
|
-
* A browser-safe projection for the exact subscriber selected when the session was created.
|
|
4911
|
+
* A browser-safe projection for the exact subscriber selected when the session was created. Organization, project, environment, subscriber, origin, resolved return URL, provider identity, credentials, and group state are structurally absent.
|
|
4864
4912
|
*/
|
|
4865
4913
|
export interface RecipientSession {
|
|
4866
4914
|
id: OpaqueIdentifier;
|
|
@@ -5035,6 +5083,48 @@ export interface Subscriber {
|
|
|
5035
5083
|
updated_at: Timestamp;
|
|
5036
5084
|
diagnostic_id: DiagnosticId;
|
|
5037
5085
|
}
|
|
5086
|
+
/**
|
|
5087
|
+
* A complete customer-controller access artifact for one subscriber across every environment in one project. provided_by_subscriber is the Article 20 portable subset; all three record groups together are the Article 15 access copy. WhooshBang-controller records are named but never mixed into the customer export.
|
|
5088
|
+
*/
|
|
5089
|
+
export interface SubscriberDataExport {
|
|
5090
|
+
format: "whooshbang.subscriber-data-export.v1";
|
|
5091
|
+
generated_at: Timestamp;
|
|
5092
|
+
controller_scope: "customer";
|
|
5093
|
+
project_id: OpaqueIdentifier;
|
|
5094
|
+
/**
|
|
5095
|
+
* @minItems 1
|
|
5096
|
+
*/
|
|
5097
|
+
environment_ids: [OpaqueIdentifier, ...OpaqueIdentifier[]];
|
|
5098
|
+
subscriber_id: OpaqueIdentifier;
|
|
5099
|
+
provided_by_subscriber: SubscriberDataExportRecord[];
|
|
5100
|
+
provided_by_customer: SubscriberDataExportRecord[];
|
|
5101
|
+
derived_by_service: SubscriberDataExportRecord[];
|
|
5102
|
+
/**
|
|
5103
|
+
* @minItems 2
|
|
5104
|
+
* @maxItems 2
|
|
5105
|
+
*/
|
|
5106
|
+
excluded_controller_data: [
|
|
5107
|
+
SubscriberDataExportExcludedControllerData,
|
|
5108
|
+
SubscriberDataExportExcludedControllerData
|
|
5109
|
+
];
|
|
5110
|
+
}
|
|
5111
|
+
/**
|
|
5112
|
+
* One semantic record held about the subscriber. The source names the durable store or recovered semantic value; data contains plaintext business fields and excludes custody metadata and secrets.
|
|
5113
|
+
*/
|
|
5114
|
+
export interface SubscriberDataExportRecord {
|
|
5115
|
+
source: string;
|
|
5116
|
+
data: {
|
|
5117
|
+
[k: string]: unknown;
|
|
5118
|
+
};
|
|
5119
|
+
}
|
|
5120
|
+
/**
|
|
5121
|
+
* A category deliberately outside the customer-controller artifact because WhooshBang is controller for it.
|
|
5122
|
+
*/
|
|
5123
|
+
export interface SubscriberDataExportExcludedControllerData {
|
|
5124
|
+
category: "consent_lifecycle_audit" | "service_logs";
|
|
5125
|
+
controller: "whooshbang";
|
|
5126
|
+
access: "separate_recipient_request_required";
|
|
5127
|
+
}
|
|
5038
5128
|
/**
|
|
5039
5129
|
* Creates one static, developer-managed recipient group.
|
|
5040
5130
|
*/
|
package/dist/index.d.ts
CHANGED
|
@@ -15,12 +15,12 @@ export type { MachineCredentialCrypto, MachineCredentialMaterial, MachineCredent
|
|
|
15
15
|
export type { RejectedWebhookSignature, VerifiedWebhookSignature, VerifyWebhookSignatureOptions, WebhookCrypto, WebhookHeaderEntry, WebhookHeaderRecord, WebhookHeaders, WebhookSignatureVerification, WebhookVerificationFailureReason, } from "./webhook-signature.js";
|
|
16
16
|
export type { ConsumeVerifiedWebhookOptions, DuplicateWebhookConsumption, ProcessedWebhookConsumption, RejectedWebhookConsumption, WebhookConsumptionResult, WebhookConsumerRejectionReason, WebhookDeduplicationInput, WebhookDeduplicationOutcome, WebhookDeduplicationStore, } from "./webhook-consumer.js";
|
|
17
17
|
export type { AcceptedWebhookDelivery, ClassifyWebhookDeliveryOptions, HttpDeliveryOutcome, NetworkFailureOutcome, RetryWebhookDelivery, TerminalWebhookDelivery, WebhookDeliveryClassification, WebhookDeliveryOutcome, WebhookDeliveryRetryReason, WebhookDeliveryTerminalReason, } from "./webhook-delivery.js";
|
|
18
|
-
export { contractValidationErrors,
|
|
18
|
+
export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateOrganizationProjection, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateCreateConnectionTestRequest, validateCustomerOwnedSlackAppManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateRecipientGroupRequest, validateUpdateRecipientGroupRequest, validateRecipientGroup, validateRecipientGroupCollection, validateRecipientGroupMembership, validateRecipientGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
|
|
19
19
|
export type { Artifact, ContractManifest, FixtureSet, GeneratedArtifact, } from "./generated/contract-manifest.js";
|
|
20
20
|
export type { AgentBindingDegradedData, AgentBindingDegradedEvent, ConfirmInteractionResponse as CustomerEventConfirmInteractionResponse, InteractionExpiredData, InteractionExpiredEvent, InteractionReceivedData, InteractionReceivedEvent, InteractionResponse as CustomerEventInteractionResponse, MessageDeliveredData, MessageDeliveredEvent, MessageExpiredData, MessageExpiredEvent, MessageFailedData, MessageFailedEvent, MessageProviderAcceptedData, MessageProviderAcceptedEvent, WhooshBangEventV1ContractDocument, SelectInteractionResponse as CustomerEventSelectInteractionResponse, SubscriptionActivatedData, SubscriptionActivatedEvent, SubscriptionRevokedData, SubscriptionRevokedEvent, InputInteractionResponse as CustomerEventInputInteractionResponse, } from "./generated/whooshbang-event-v1.js";
|
|
21
21
|
export type { WebhookDeliveryCaseSetV1, DeliveryCase as WebhookDeliveryFixtureCase, } from "./generated/webhook-delivery-case-v1.js";
|
|
22
22
|
export type { WebhookSigningVectorSetV1, VerificationCase as WebhookSigningVerificationCase, } from "./generated/webhook-signing-vector-v1.js";
|
|
23
|
-
export type {
|
|
23
|
+
export type { OrganizationCredential, OrganizationCredentialCollection, OrganizationCredentialId, OrganizationCredentialPrefix, OrganizationCredentialRotation, OrganizationCredentialScope, OrganizationCredentialScopeSet, OrganizationCredentialSecret, OrganizationCredentialSecretReveal, OrganizationMembershipSummary, OrganizationProjection, OrganizationRole, ApiCredential, ApiCredentialCollection, ApiCredentialId, ApiCredentialPrefix, ApiCredentialRotation, ApiCredentialScope, ApiCredentialScopeSet, ApiCredentialSecret, ApiCredentialSecretReveal, BindingSummary, Channel, ClassifiedError, CreateOrganizationCredentialRequest, CreateApiCredentialRequest, ChannelConnection, ChannelConnectionCollection, ChannelConnectionSetup, ChannelConnectionSetupStatus, ChannelConnectionStatus, ConnectionLifecycleOperation, ConnectionProvider, ConnectionProviderCollection, CreateChannelConnectionRequest, AttachNotifierConnectionRequest, NotifierConnectionCollection, NotifierConnectionRoute, ProjectRecipientExperience, RecipientBrandAssetId, RecipientBrandLogoAsset, RecipientBrandLogoUpload, NotificationImage, NotificationImageAsset, NotificationImageAssetId, UpdateProjectRecipientExperienceRequest, EnvironmentRecipientExperience, UpdateEnvironmentRecipientExperienceRequest, RecipientBrand, ReturnDestination, CreateRecipientSessionRequest, CreateRecipientSessionResponse, RecipientSession, RecipientPanelCopyOverrides, RecipientSessionCapability, RecipientSessionCapabilityPrefix, RecipientSessionOperation, RecipientChannelSummary, CreateProviderHandoffRequest, ProviderHandoff, ProviderHandoffCompletionMode, RecipientHandoffCompletion, SetPreferredBindingRequest, PreferredBinding, CreateSubscriberRequest, Subscriber, SubscriberDataExport, SubscriberDataExportRecord, SubscriberDataExportExcludedControllerData, CloseOrganizationRequest, OrganizationClosureProviderAction, OrganizationClosureResult, DeveloperKey, CreateRecipientGroupRequest, UpdateRecipientGroupRequest, RecipientGroup, RecipientGroupCollection, RecipientGroupMembership, RecipientGroupMembershipCollection, CreateGroupBroadcastRequest, BroadcastAggregate, GroupBroadcast, BroadcastMessageProvenance, ProviderHealthState, ProviderFailure, ProviderInstallationStatus, ProviderInstallationSummary, RotateChannelConnectionCredentialRequest, ConnectionTest, ConnectionTestCollection, ConnectionTestEvidence, ConnectionTestFailureCode, ConnectionTestKind, ConnectionTestStatus, CreateConnectionTestRequest, CustomerOwnedSlackAppManifest, SharedProviderIdentity, SuggestedBotUsername, UpdateChannelConnectionRequest, CreateCustomerEndpointRequest, CreateMessageRequest, CreateProjectRequest, UpdateProjectRequest, PrivacyMode, DefaultNotifierSummary, CreateSubscriptionLinkRequest, DeliveryAttemptSummary, CustomerEndpoint, CustomerEndpointAttemptCollection, CustomerEndpointAttemptDiagnostic, CustomerEndpointCollection, CustomerEndpointFailure, CustomerEndpointMutationResult, CustomerEndpointSecret, CustomerEndpointStatus, CustomerEndpointVerificationChallenge, CustomerEventType, Environment, IdempotencyKey, Message, MessageState, WhooshBangV1ContractDocument, Problem, ProblemCode, Project, ProjectCollection, ProjectEnvironment, ProviderCapabilitiesCollection, RecipientCopyKey, RecipientCopyOverride, RecipientCopyOverrideCollection, RecipientCopyOverrideValue, RecipientLanguage, TimeZone, RotateOrganizationCredentialRequest, RotateApiCredentialRequest, RotateCustomerEndpointRequest, SubscriptionLink, UpdateRecipientCopyOverrideRequest, } from "./generated/whooshbang-v1.js";
|
|
24
24
|
export type HostedChannelConnectionSetup = NonNullable<import("./generated/whooshbang-v1.js").HostedChannelConnection["authorization_setup"]>;
|
|
25
25
|
export type ChannelConnectionMode = import("./generated/whooshbang-v1.js").ChannelConnection["mode"];
|
|
26
26
|
export type ChannelConnectionProvider = import("./generated/whooshbang-v1.js").ChannelConnection["provider"];
|
package/dist/index.js
CHANGED
|
@@ -8,5 +8,5 @@ export { RECIPIENT_BRAND_DEFAULT_ACCENT_COLOR } from "./recipient-brand.js";
|
|
|
8
8
|
export { normalizeNotificationImage, NOTIFICATION_IMAGE_CONTENT_TYPE, NOTIFICATION_IMAGE_MAX_BYTES, NOTIFICATION_IMAGE_MAX_DIMENSION, NOTIFICATION_IMAGE_MAX_PIXELS, NotificationImageError, } from "./notification-image.js";
|
|
9
9
|
export { canonicalIanaTimeZone } from "./time-zone.js";
|
|
10
10
|
export { CUSTOMIZABLE_RECIPIENT_COPY_KEYS, CUSTOMIZABLE_RECIPIENT_PANEL_COPY_KEYS, isCustomizableRecipientCopyKey, recipientCopyOverrideIssues, recipientCopyOverrideMaximumLength, RECIPIENT_COPY_OVERRIDE_HOSTED_ACTION_MAX_LENGTH, RECIPIENT_COPY_OVERRIDE_MAX_LENGTH, } from "./recipient-copy-policy.js";
|
|
11
|
-
export { contractValidationErrors,
|
|
11
|
+
export { contractValidationErrors, validateOrganizationCredential, validateOrganizationCredentialCollection, validateOrganizationCredentialRotation, validateOrganizationCredentialSecretReveal, validateOrganizationProjection, validateApiCredential, validateApiCredentialCollection, validateApiCredentialRotation, validateApiCredentialSecretReveal, validateBindingSummary, validateCreateOrganizationCredentialRequest, validateCreateApiCredentialRequest, validateChannelConnection, validateChannelConnectionCollection, validateConnectionProviderCollection, validateCreateChannelConnectionRequest, validateUpdateChannelConnectionRequest, validateRotateChannelConnectionCredentialRequest, validateConnectionTest, validateConnectionTestCollection, validateCreateConnectionTestRequest, validateCustomerOwnedSlackAppManifest, validateAttachNotifierConnectionRequest, validateNotifierConnectionCollection, validateProjectRecipientExperience, validateRecipientBrandLogoUpload, validateNotificationImageAsset, validateUpdateProjectRecipientExperienceRequest, validateEnvironmentRecipientExperience, validateUpdateEnvironmentRecipientExperienceRequest, validateCreateRecipientSessionRequest, validateCreateRecipientSessionResponse, validateRecipientSession, validateCreateProviderHandoffRequest, validateProviderHandoff, validateRecipientHandoffCompletion, validateSetPreferredBindingRequest, validatePreferredBinding, validateCreateSubscriberRequest, validateSubscriber, validateSubscriberDataExport, validateCloseOrganizationRequest, validateOrganizationClosureResult, validateCreateRecipientGroupRequest, validateUpdateRecipientGroupRequest, validateRecipientGroup, validateRecipientGroupCollection, validateRecipientGroupMembership, validateRecipientGroupMembershipCollection, validateCreateGroupBroadcastRequest, validateGroupBroadcast, validateCreateCustomerEndpointRequest, validateCreateProjectRequest, validateUpdateProjectRequest, validateCreateMachineClientRequest, validateCreateMessageRequest, validateCreateSubscriptionLinkRequest, validateDeliveryAttemptSummary, validateCustomerEndpoint, validateCustomerEndpointAttemptCollection, validateCustomerEndpointCollection, validateCustomerEndpointMutationResult, validateCustomerEndpointVerificationChallenge, validateIdempotencyKey, validateAgentBindingDegradedEvent, validateInteractionEvent, validateInteractionExpiredEvent, validateInteractionReceivedEvent, validateInteractionRequest, validateInteractionSummary, validateMachineClient, validateMachineCredential, validateMachineCredentialBearer, validateMachineEventAckRequest, validateMachineEventAckResponse, validateMachineEventPollResponse, validateMessage, validateMessageDeliveredEvent, validateMessageExpiredEvent, validateMessageFailedEvent, validateMessageProviderAcceptedEvent, validateWhooshBangEvent, validateProblem, validateProject, validateProjectCollection, validateRecipientCopyOverride, validateRecipientCopyOverrideCollection, validateProviderCallbackToken, validateProviderCapabilities, validateProviderCapabilitiesCollection, validateRegisterMachineCredentialRequest, validateRotateOrganizationCredentialRequest, validateRotateApiCredentialRequest, validateRotateCustomerEndpointRequest, validateSubscriptionActivatedEvent, validateSubscriptionLink, validateSubscriptionRevokedEvent, validateUpdateRecipientCopyOverrideRequest, validateWebhookDeliveryCaseSet, validateWebhookSigningVectorSet, } from "./generated/validators.js";
|
|
12
12
|
//# sourceMappingURL=index.js.map
|