{"openapi":"3.1.0","info":{"title":"Stampwing public API — preview","version":"0.1.0","description":"Preview of implemented public API contracts. Customer accounts and hosted API access are not available yet, and no launch date has been announced. This document does not enable live sending. Some operations also require the documented feature rollout. Accounts will be approved automatically at signup; sending-domain verification, plan allowances, rate limits, and abuse controls still apply. Private owner-session routes are excluded. The server below is an intentionally non-resolving placeholder, not a working API host."},"servers":[{"url":"https://api.stampwing.invalid","description":"Documentation placeholder only. Hosted API access is not available yet."}],"x-documentation-status":"preview","x-source-sha256":"52bb7816d34740e3727749c2fbcd1e2bee39c2b66c28a72f615863957aaacf36","security":[{"projectKey":[]}],"paths":{"/api/v1/emails":{"post":{"operationId":"sendEmail","summary":"Send one recipient or durably accept a logical email","description":"Requires email:send. Stable idempotency key required in header or body. The smtp: and wf. prefixes are reserved for internal submission paths. Never retry an ambiguous request with a new key. Test credentials simulate delivery. Sending a pinned template version additionally requires templates:use. Versions must belong to the credential project and environment. Pass either raw content or templateVersionId plus variables, never both. Template variables form part of the idempotency identity. Existing keys receive no new permissions. The template-test: prefix is reserved for owner template tests. Extended inputs require the sending feature flag. A logical email has up to 50 unique To/CC/BCC recipients; each has separate delivery and usage. BCC never appears in MIME headers. Stable idempotency is required. Schedules are limited to 30 days and reserve allowance at due time. Content and frozen attachment bytes are immutable.\nConditional feature: sending: extended email inputs.\nReturns CoreLegacySend for a legacy single-recipient request, or CoreLogicalEmail for extended inputs.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"description":"Supply a stable key here or in the body; if both are present they must agree. Reuse unchanged input on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSendInput"}}}},"responses":{"202":{"description":"Durably accepted. Delivery remains asynchronous.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSendResult"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:send","x-feature-flag":null,"x-conditional-feature":"sending: extended email inputs"},"get":{"operationId":"parityGetEmails","summary":"Read project emails","description":"Private management rollout. Requires email:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]}},{"name":"search","in":"query","required":false,"schema":{"default":"","type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"tagName","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"tagValue","in":"query","required":false,"schema":{"type":"string","maxLength":256}},{"name":"reviewState","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","pending","clear","held","rejected"]}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreMessagePage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100}}},"/api/v1/emails/{id}":{"get":{"operationId":"getEmail","summary":"Read project-scoped delivery history","description":"Requires email:read. Test keys can only inspect simulated messages. Accepted means recipient-server acceptance, not inbox placement.\nReturns CoreLegacyEmail for a message ID, or CoreLogicalEmail for a logical email ID when sending is enabled.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreEmailLookup"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:read","x-feature-flag":null},"patch":{"operationId":"parityPatchEmailsId","summary":"Reschedule immutable content","description":"Private sending rollout. Requires email:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreRescheduleInput"}}}},"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreLogicalEmail"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:write","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/receiving":{"get":{"operationId":"listReceiving","summary":"List received email","description":"Requires a Live credential with receiving:read. Newest received_at, then UUID descending; database timestamp precision is preserved. Defaults to 50 rows, maximum 50; the dashboard explicitly uses 25. Retention applies, and Test credentials cannot read incoming Live mail.","parameters":[{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512},"description":"Opaque cursor; reuse with identical scope and filters."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":50}},{"name":"status","in":"query","required":false,"schema":{"enum":["all","received","quarantined","failed"],"default":"all"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":200},"description":"Trimmed literal case-insensitive sender, subject or message UUID search. No body search."}],"responses":{"200":{"description":"Page of received messages","content":{"application/json":{"schema":{"type":"object","required":["data","nextCursor"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ReceivedEmail"}},"nextCursor":{"type":["string","null"]}}}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid or revoked credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Permission, environment or workspace restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Safety, rate or spending allowance reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service not ready; retry safely","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/receiving/{id}":{"get":{"operationId":"getReceiving","summary":"Inspect received email and retained safe content","description":"Requires live receiving:read. Quarantined or expired content is unavailable.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReceivedEmail"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid or revoked credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Permission, environment or workspace restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Safety, rate or spending allowance reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service not ready; retry safely","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/receiving/{id}/attachments/{attachmentId}":{"get":{"operationId":"downloadAttachment","summary":"Download a retained safe attachment","description":"Requires live receiving:read. Always downloads; never render attachments on the app origin.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"attachmentId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Attachment bytes","headers":{"Content-Disposition":{"schema":{"type":"string"}}},"content":{"application/octet-stream":{"schema":{"type":"string","format":"binary"}}}},"400":{"description":"Invalid request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Missing, invalid or revoked credential","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Permission, environment or workspace restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this project","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Safety, rate or spending allowance reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Service not ready; retry safely","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/doctor":{"get":{"operationId":"doctor","summary":"Read credential readiness without sending","description":"Read credential readiness without sending. Any active key, including send-only keys, may call this. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDoctor"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":null,"x-feature-flag":null}},"/api/v1/emails/{id}/diagnostics":{"get":{"operationId":"diagnoseEmail","summary":"Read ordered evidence for email delivery","description":"Read ordered evidence for email delivery. Requires email:read. Uncertain submission is never proof of failure and is never automatically resent. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreEmailDiagnosis"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:read","x-feature-flag":null}},"/api/v1/templates":{"get":{"operationId":"listTemplates","summary":"List templates","description":"Requires templates:read on the project credential. Set view=summary for metadata-only {data,nextCursor}; UUID cursor ascending, limit 25 by default and at most 50. Without this view, the existing array response remains unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/AutomationTemplate"}},{"$ref":"#/components/schemas/TemplateSummaryPage"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"view","in":"query","required":false,"schema":{"enum":["summary"]}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":100},"description":"Literal case-insensitive name search; reset cursor when changing filters."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}]},"post":{"operationId":"createTemplate","summary":"Create a template draft","description":"Create a template draft. Requires templates:write. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationTemplate"},{"$ref":"#/components/schemas/TemplateEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/TemplateContent"}},"additionalProperties":false,"required":["name","draft"]}}}},"parameters":[{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}]}},"/api/v1/templates/{id}":{"get":{"operationId":"getTemplate","summary":"Read one template","description":"Read one template. Requires templates:read. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor for the current draft plus the first 25 version summaries and versionsNextCursor; published content is loaded through a selected-version read.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationTemplate"},{"$ref":"#/components/schemas/TemplateEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]}}]},"patch":{"operationId":"updateTemplate","summary":"Update a template draft","description":"Update a template draft. Requires templates:write. Published versions are immutable. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Pass expectedRevision to prevent overwriting or publishing a draft changed by another editor. Omitting it preserves legacy behavior. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged. Schema-3 edits require expectedRevision. Ordinary saves cannot downgrade schema 3; schema-2 upgrades require the explicit owner upgrade operation.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationTemplate"},{"$ref":"#/components/schemas/TemplateEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT: the saved draft changed. Read the current resource and review the changes before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/TemplateContent"},"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque draft revision from the latest read. A stale value returns 409 DRAFT_CONFLICT; reload and review before retrying."}},"additionalProperties":false}}}}}},"/api/v1/templates/{id}/publish":{"post":{"operationId":"publishTemplate","summary":"Publish an immutable template version","description":"Publish an immutable template version. Requires templates:write. Live workflows require rollout approval. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Pass expectedRevision to prevent overwriting or publishing a draft changed by another editor. Omitting it preserves legacy behavior. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged. Schema-3 publication requires expectedRevision; legacy schemas retain empty-options compatibility.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationTemplate"},{"$ref":"#/components/schemas/TemplateEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT: the saved draft changed. Read the current resource and review the changes before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}],"requestBody":{"required":false,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque draft revision from the latest read. A stale value returns 409 DRAFT_CONFLICT; reload and review before retrying."}},"additionalProperties":false}}}}}},"/api/v1/workflows":{"get":{"operationId":"listWorkflows","summary":"List workflows","description":"Requires workflows:read on the project credential. Set view=summary for metadata-only {data,nextCursor}; UUID cursor ascending, limit 25 by default and at most 50. Without this view, the existing array response remains unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"type":"array","items":{"$ref":"#/components/schemas/AutomationWorkflow"}},{"$ref":"#/components/schemas/WorkflowSummaryPage"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"view","in":"query","required":false,"schema":{"enum":["summary"]}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","format":"uuid"}},{"name":"search","in":"query","required":false,"schema":{"type":"string","maxLength":100},"description":"Literal case-insensitive name search; reset cursor when changing filters."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}},{"name":"status","in":"query","required":false,"schema":{"enum":["draft","active","paused"]}}]},"post":{"operationId":"createWorkflow","summary":"Create a workflow draft","description":"Create a workflow draft. Requires workflows:write. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/WorkflowGraph"}},"additionalProperties":false,"required":["name","draft"]}}}},"parameters":[{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}]}},"/api/v1/workflows/{id}":{"get":{"operationId":"getWorkflow","summary":"Read one workflow","description":"Read one workflow. Requires workflows:read. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor for the current draft plus the first 25 version summaries and versionsNextCursor; published content is loaded through a selected-version read.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]}}]},"patch":{"operationId":"updateWorkflow","summary":"Update a workflow draft","description":"Update a workflow draft. Requires workflows:write. Published versions are immutable. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Pass expectedRevision to prevent overwriting or publishing a draft changed by another editor. Omitting it preserves legacy behavior. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT: the saved draft changed. Read the current resource and review the changes before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/WorkflowGraph"},"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque draft revision from the latest read. A stale value returns 409 DRAFT_CONFLICT; reload and review before retrying."}},"additionalProperties":false}}}}}},"/api/v1/workflows/{id}/publish":{"post":{"operationId":"publishWorkflow","summary":"Publish an immutable workflow version","description":"Publish an immutable workflow version. Requires workflows:write. Live workflows require rollout approval. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Pass expectedRevision to prevent overwriting or publishing a draft changed by another editor. Omitting it preserves legacy behavior. First live publication or execution-changing revisions require a successful matching previewReceiptId. PREVIEW_REQUIRED (409) means preview the current definition. Name/layout-only changes are exempt. Publishing preserves existing paused and active enrollment unless enable is explicitly supplied; existing runs remain pinned. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT or PREVIEW_REQUIRED. Review the current draft; never blindly retry publication.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"previewReceiptId":{"type":"string","format":"uuid"},"enable":{"type":"boolean","description":"Explicit enrollment choice. Omit to preserve active/paused state; first publication defaults to active."}}}}}}}},"/api/v1/templates/{id}/preview":{"post":{"operationId":"previewTemplate","summary":"Render a template draft using typed sample variables","description":"Render a template draft using typed sample variables. Requires templates:write. Does not send. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Optional expectedRevision ensures the preview uses the draft you read; a changed saved draft returns 409 DRAFT_CONFLICT. Optional versionId renders an immutable version belonging to this template. Returns deterministic diagnostics and authorized private image references.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplatePreviewResult"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT: the saved draft changed. Read the current resource and review the changes before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"variables":{"$ref":"#/components/schemas/TemplateValues"},"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque draft revision from the latest read. A stale value returns 409 DRAFT_CONFLICT; reload and review before retrying."},"versionId":{"type":"string","format":"uuid"}},"additionalProperties":false,"required":["variables"]}}}}}},"/api/v1/workflows/{id}/validate":{"post":{"operationId":"validateWorkflow","summary":"Validate the saved graph and template references","description":"Validate the saved graph and template references. Requires workflows:write. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Revision-bound checks and review summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowValidation"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$"}},"additionalProperties":false}}}}}},"/api/v1/workflows/{id}/simulate":{"post":{"operationId":"simulateWorkflow","summary":"Simulate the saved graph with synthetic time and events","description":"Simulate the saved graph with synthetic time and events. Requires workflows:write. No email, usage reservation, or notification is generated. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Optional expectedRevision ensures the preview uses the draft you read; a changed saved draft returns 409 DRAFT_CONFLICT. Times represent receipt after an initial trigger at revision 1. Cancellation, supersession, deadlines, stale revisions and pinned recipients are simulated; provider gates and queue latency are not predicted. A successful result records a bounded receipt tied to the execution hash, pinned template versions, simulator version and project/environment. Use sampleId to replay an encrypted saved example. Up to 30 receipts per workflow are retained within the 7/30-day content policy. Preview never proves readiness or actual delivery.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationResult"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"409":{"description":"DRAFT_CONFLICT: the saved draft changed. Read the current resource and review the changes before retrying.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimulationInput"}}}}}},"/api/v1/workflows/{id}/pause":{"post":{"operationId":"pauseWorkflow","summary":"Pause entry into a workflow","description":"Pause entry into a workflow. Requires workflows:write. Active-run controls are separate. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}]}},"/api/v1/workflows/{id}/resume":{"post":{"operationId":"resumeWorkflow","summary":"Resume entry into a workflow","description":"Resume entry into a workflow. Requires workflows:write. Active-run controls are separate. Credentials determine project and test/live environment; they cannot be overridden by caller payload. Set view=editor to return the current draft, revision, first 25 immutable version summaries and versionsNextCursor directly from the mutation transaction, without decrypting historical version content. Omit view to preserve the existing full resource response. Revision, authorization, publication and status semantics are unchanged.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/AutomationWorkflow"},{"$ref":"#/components/schemas/WorkflowEditorResource"}]}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","required":false,"schema":{"enum":["editor"]},"description":"Opt in to the current draft and a bounded immutable-version summary page. Omission preserves the legacy full resource response."}]}},"/api/v1/workflow-runs":{"get":{"operationId":"listRuns","summary":"List workflow runs","description":"List workflow runs. Requires runs:read. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowRun"}}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}}}},"/api/v1/workflow-runs/{id}":{"get":{"operationId":"getRun","summary":"Read one run and its message links","description":"Read one run and its message links. Requires runs:read. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRun"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/api/v1/workflow-runs/{id}/pause":{"post":{"operationId":"pauseRun","summary":"Pause a workflow run","description":"Pause a workflow run. Requires runs:write. Cancellation cannot recall a message already submitted. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRun"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/api/v1/workflow-runs/{id}/resume":{"post":{"operationId":"resumeRun","summary":"Resume a workflow run","description":"Resume a workflow run. Requires runs:write. Cancellation cannot recall a message already submitted. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRun"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/api/v1/workflow-runs/{id}/cancel":{"post":{"operationId":"cancelRun","summary":"Cancel a workflow run","description":"Cancel a workflow run. Requires runs:write. Cancellation cannot recall a message already submitted. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowRun"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}]}},"/api/v1/workflows/{id}/runs/pause":{"post":{"operationId":"pauseWorkflowRuns","summary":"Pause existing active workflow runs","description":"Requires runs:write. Separate from stopping new entries; original run deadlines continue. Cancellation cannot recall submitted email.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Number of affected runs","content":{"application/json":{"schema":{"type":"object","required":["affected"],"properties":{"affected":{"type":"integer","minimum":0}}}}}},"403":{"description":"Permission or ownership denied"}}}},"/api/v1/workflows/{id}/runs/resume":{"post":{"operationId":"resumeWorkflowRuns","summary":"Resume existing active workflow runs","description":"Requires runs:write. Separate from stopping new entries; original run deadlines continue. Cancellation cannot recall submitted email.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Number of affected runs","content":{"application/json":{"schema":{"type":"object","required":["affected"],"properties":{"affected":{"type":"integer","minimum":0}}}}}},"403":{"description":"Permission or ownership denied"}}}},"/api/v1/workflows/{id}/runs/cancel":{"post":{"operationId":"cancelWorkflowRuns","summary":"Cancel existing active workflow runs","description":"Requires runs:write. Separate from stopping new entries; original run deadlines continue. Cancellation cannot recall submitted email.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Number of affected runs","content":{"application/json":{"schema":{"type":"object","required":["affected"],"properties":{"affected":{"type":"integer","minimum":0}}}}}},"403":{"description":"Permission or ownership denied"}}}},"/api/v1/events":{"post":{"operationId":"submitEvent","summary":"Submit an immutable, revisioned business event","description":"Submit an immutable, revisioned business event. Requires events:write. Reuse the same event id after a timeout; do not recreate the event with another id. Credentials determine project and test/live environment; they cannot be overridden by caller payload.","responses":{"202":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationEventResult"}}}},"400":{"description":"Validation failure"},"403":{"description":"Credential permission, environment, or ownership restriction"},"404":{"description":"Resource not accessible"},"429":{"description":"Limit reached"}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationEventInput"}}}}}},"/api/v1/workflows/{id}/samples":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"get":{"operationId":"listWorkflowSamples","summary":"List retained synthetic preview examples; requires workflows:read","responses":{"200":{"description":"Examples","content":{"application/json":{"schema":{"type":"object","properties":{"samples":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowPreviewSample"}}}}}}},"403":{"description":"Credential permission or scope mismatch"},"404":{"description":"Workflow not accessible"},"429":{"description":"Storage or rate limit reached"}}},"put":{"operationId":"saveWorkflowSample","summary":"Replace one of three encrypted examples; requires workflows:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["kind","name","input"],"additionalProperties":false,"properties":{"kind":{"enum":["normal","cancellation","timeout"]},"name":{"type":"string","maxLength":80},"input":{"$ref":"#/components/schemas/SavedPreviewInput"}}}}}},"responses":{"200":{"description":"Stored example with reproducible clock","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowPreviewSample"}}}},"403":{"description":"Credential permission or scope mismatch"},"404":{"description":"Workflow not accessible"},"429":{"description":"Storage or rate limit reached"}}}},"/api/v1/templates/{id}/versions/{versionId}":{"get":{"operationId":"getTemplateVersion","summary":"Read one immutable template version","description":"Requires templates:read. The parent resource, version, project and environment must all match.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateVersion"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, idempotency or state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/from-recipe":{"post":{"operationId":"createWorkflowFromRecipe","summary":"Atomically create a recipe draft and its starter template","description":"Requires workflows:write and, for email recipes, templates:write plus explicit publishStarterTemplate consent. Reuse the operationId with identical inputs after a lost acknowledgement. Conflicting input returns 409. Results expire under content retention; the identity tombstone prevents a second creation.","parameters":[],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AutomationWorkflow"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource is not accessible","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision or idempotency conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"422":{"description":"Invalid references or typed data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Bounded allowance exhausted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","maxLength":100},"recipeId":{"type":"string"},"operationId":{"type":"string","format":"uuid"},"publishStarterTemplate":{"type":"boolean"}},"required":["name","recipeId","operationId"],"additionalProperties":false}}}}}},"/api/v1/templates/{id}/versions":{"get":{"operationId":"listTemplateVersions","summary":"List template version metadata","description":"Requires templates:read. Version numbers descend; no published bodies or graphs are loaded. Credential project/environment scope is authoritative.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","pattern":"^[1-9][0-9]{0,8}$"},"description":"Use nextCursor from the previous version page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TemplateVersionPage"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, idempotency or state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/versions":{"get":{"operationId":"listWorkflowVersions","summary":"List workflow version metadata","description":"Requires workflows:read. Version numbers descend; no published bodies or graphs are loaded. Credential project/environment scope is authoritative.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","pattern":"^[1-9][0-9]{0,8}$"},"description":"Use nextCursor from the previous version page."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":50,"default":25}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersionPage"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, idempotency or state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workflows/{id}/versions/{versionId}":{"get":{"operationId":"getWorkflowVersion","summary":"Read one immutable workflow version","description":"Requires workflows:read. The parent resource, version, project and environment must all match.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkflowVersion"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, idempotency or state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/templates/versions/{versionId}":{"get":{"operationId":"ReadPinnedTemplateVersion","summary":"Read a pinned template version by ID","description":"Reads one authorized immutable version and its template name. Owner requests require explicit project/environment; API requests use templates:read and credential scope.","parameters":[{"name":"versionId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NamedTemplateVersion"}}}},"400":{"description":"Invalid input","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Authentication required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Scope or permission restriction","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Resource unavailable in this scope","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Revision, idempotency or state conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Limit reached","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/emails/batch":{"post":{"operationId":"parityPostEmailsBatch","summary":"Accept up to 100 logical emails atomically","description":"Private sending rollout. Requires email:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"description":"Supply a stable key here or in the body; if both are present they must agree. Reuse unchanged input on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreBatchInput"}}}},"responses":{"202":{"description":"Durably accepted. Delivery remains asynchronous.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreBatch"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:send","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/email-batches/{id}":{"get":{"operationId":"parityGetEmailBatchesId","summary":"Read batch item progress","description":"Private sending rollout. Requires email:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreBatch"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:read","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/emails/{id}/cancel":{"post":{"operationId":"parityPostEmailsIdCancel","summary":"Cancel eligible remaining work","description":"Private sending rollout. Requires email:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreCancellation"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:write","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/attachments":{"post":{"operationId":"parityPostAttachments","summary":"Freeze an attachment upload or public HTTPS source","description":"Private sending rollout. Requires attachments:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreAttachmentInput"}}}},"responses":{"201":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreAttachment"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"attachments:write","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/attachments/{id}":{"get":{"operationId":"parityGetAttachmentsId","summary":"Read attachment metadata","description":"Private sending rollout. Requires attachments:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreAttachment"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"attachments:read","x-feature-flag":"POSTRUNE_FEATURE_SENDING"}},"/api/v1/domains":{"get":{"operationId":"parityGetDomains","summary":"List project domains","description":"Private management rollout. Requires domains:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomainPage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100},"x-live-credential-only":true},"post":{"operationId":"parityPostDomains","summary":"Create project domains","description":"Private management rollout. Requires domains:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomainInput"}}}},"responses":{"201":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomain"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/domains/{id}":{"get":{"operationId":"parityGetDomainsId","summary":"Read project domains metadata","description":"Private management rollout. Requires domains:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomain"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true},"delete":{"operationId":"parityDeleteDomainsId","summary":"Remove a project domains resource","description":"Private management rollout. Requires domains:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreOk"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/keys":{"get":{"operationId":"parityGetKeys","summary":"List project keys","description":"Private management rollout. Requires keys:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreApiKeyPage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"keys:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100}},"post":{"operationId":"parityPostKeys","summary":"Create project keys","description":"Private management rollout. Requires keys:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreApiKeyInput"}}}},"responses":{"201":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreApiKeyCreated"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"keys:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT"}},"/api/v1/keys/{id}":{"get":{"operationId":"parityGetKeysId","summary":"Read project keys metadata","description":"Private management rollout. Requires keys:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreApiKey"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"keys:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT"},"delete":{"operationId":"parityDeleteKeysId","summary":"Remove a project keys resource","description":"Private management rollout. Requires keys:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreOk"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"keys:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT"}},"/api/v1/suppressions":{"get":{"operationId":"parityGetSuppressions","summary":"List project suppressions","description":"Private management rollout. Requires suppressions:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSuppressionPage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"suppressions:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100},"x-live-credential-only":true},"post":{"operationId":"parityPostSuppressions","summary":"Create project suppressions","description":"Private management rollout. Requires suppressions:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSuppressionInput"}}}},"responses":{"201":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSuppression"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"suppressions:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/suppressions/{id}":{"get":{"operationId":"parityGetSuppressionsId","summary":"Read project suppressions metadata","description":"Private management rollout. Requires suppressions:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreSuppression"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"suppressions:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true},"delete":{"operationId":"parityDeleteSuppressionsId","summary":"Remove a project suppressions resource","description":"Private management rollout. Requires suppressions:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreOk"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"suppressions:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhooks":{"get":{"operationId":"parityGetWebhooks","summary":"List project webhooks","description":"Private management rollout. Requires webhooks:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookPage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100},"x-live-credential-only":true},"post":{"operationId":"parityPostWebhooks","summary":"Create project webhooks","description":"Private management rollout. Requires webhooks:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions. Shared Live settings require a Live credential; Test keys cannot read or mutate them.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookInput"}}}},"responses":{"201":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookCreated"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhooks/{id}":{"get":{"operationId":"parityGetWebhooksId","summary":"Read project webhooks metadata","description":"Private management rollout. Requires webhooks:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhook"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true},"delete":{"operationId":"parityDeleteWebhooksId","summary":"Remove a project webhooks resource","description":"Private management rollout. Requires webhooks:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreOk"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/domains/{id}/prepare":{"post":{"operationId":"parityPostDomainsIdPrepare","summary":"prepare a verified sender domain","description":"Private management rollout. Requires domains:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CorePrepareInput"}}}},"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomainSetup"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/domains/{id}/verify":{"post":{"operationId":"parityPostDomainsIdVerify","summary":"verify a verified sender domain","description":"Private management rollout. Requires domains:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreDomain"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"domains:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhooks/{id}/rotate":{"post":{"operationId":"parityPostWebhooksIdRotate","summary":"rotate webhook settings","description":"Private management rollout. Requires webhooks:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookRotation"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhooks/{id}/test":{"post":{"operationId":"parityPostWebhooksIdTest","summary":"test webhook settings","description":"Private management rollout. Requires webhooks:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreEventCreated"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhooks/{id}/attempts":{"get":{"operationId":"parityGetWebhooksIdAttempts","summary":"Read webhook delivery attempts","description":"Private management rollout. Requires webhooks:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":50}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookHistory"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"deliveries","cursor":"nextCursor","defaultLimit":50,"maximumLimit":50},"x-live-credential-only":true}},"/api/v1/webhook-deliveries/{id}":{"get":{"operationId":"parityGetWebhookDeliveriesId","summary":"Read webhook delivery metadata","description":"Private management rollout. Requires webhooks:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreWebhookDeliveryDetail"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/webhook-deliveries/{id}/replay":{"post":{"operationId":"parityPostWebhookDeliveriesIdReplay","summary":"Explicitly replay a webhook","description":"Private management rollout. Requires webhooks:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.\nRequires a Live credential; shared settings affect Live sending.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"202":{"description":"Durably accepted. Delivery remains asynchronous.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreOk"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"webhooks:write","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-live-credential-only":true}},"/api/v1/usage":{"get":{"operationId":"parityGetUsage","summary":"Read project usage","description":"Private management rollout. Requires usage:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreUsage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"usage:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT"}},"/api/v1/metrics":{"get":{"operationId":"parityGetMetrics","summary":"Read project metrics","description":"Private management rollout. Requires metrics:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"range","in":"query","required":false,"schema":{"default":"24h","type":"string","enum":["1h","6h","24h","7d"]}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreMetrics"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"metrics:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT"}},"/api/v1/request-logs":{"get":{"operationId":"parityGetRequestLogs","summary":"Read project request-logs","description":"Private management rollout. Requires request-logs:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","maxLength":512}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreRequestLogPage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"request-logs:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100}}},"/api/v1/marketing/contacts":{"get":{"operationId":"parityGetMarketingContacts","summary":"List contacts","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListContactsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingContacts","summary":"Create contacts","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactInput"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/contacts/{id}":{"patch":{"operationId":"parityPatchMarketingContactsId","summary":"Update contacts","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"firstName":{"type":"string"},"lastName":{"type":"string"},"properties":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"removeProperties":{"type":"array","items":{"type":"string"}}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Contact"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteMarketingContactsId","summary":"Remove contacts","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"parityGetMarketingContactsId","summary":"Read a contact","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactDetail"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/segments":{"get":{"operationId":"parityGetMarketingSegments","summary":"List segments","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListSegmentsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingSegments","summary":"Create segments","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"rules":{"anyOf":[{"$ref":"#/components/schemas/AudienceRules"},{"type":"null"}]}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/segments/{id}":{"patch":{"operationId":"parityPatchMarketingSegmentsId","summary":"Update segments","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"rules":{"anyOf":[{"$ref":"#/components/schemas/AudienceRules"},{"type":"null"}]}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteMarketingSegmentsId","summary":"Remove segments","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/topics":{"get":{"operationId":"parityGetMarketingTopics","summary":"List topics","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListTopicsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingTopics","summary":"Create topics","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"defaultSubscribed":{"type":"boolean"},"public":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/topics/{id}":{"patch":{"operationId":"parityPatchMarketingTopicsId","summary":"Update topics","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"description":{"type":"string"},"defaultSubscribed":{"type":"boolean"},"public":{"type":"boolean"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteMarketingTopicsId","summary":"Remove topics","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/properties":{"get":{"operationId":"parityGetMarketingProperties","summary":"List properties","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/ContactProperty"}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingProperties","summary":"Create properties","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"enum":["string","number","boolean","datetime"]},"fallback":{"type":["string","number","boolean"]}},"required":["name","type"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/properties/{id}":{"patch":{"operationId":"parityPatchMarketingPropertiesId","summary":"Update properties","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"type":{"enum":["string","number","boolean","datetime"]},"fallback":{"type":["string","number","boolean"]}},"required":["name","type"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"}},"required":["id"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteMarketingPropertiesId","summary":"Remove properties","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts":{"get":{"operationId":"parityGetMarketingBroadcasts","summary":"List broadcasts","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListBroadcastsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingBroadcasts","summary":"Create broadcasts","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/BroadcastDraft"},"operationId":{"type":"string","format":"uuid"}},"required":["name","draft","operationId"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}":{"patch":{"operationId":"parityPatchMarketingBroadcastsId","summary":"Update broadcasts","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/BroadcastDraft"},"expectedRevision":{"type":"integer"}},"required":["name","draft","expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkUpdateBroadcastResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"parityGetMarketingBroadcastsId","summary":"Read campaign delivery and engagement","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/contacts/{id}/subscription":{"put":{"operationId":"parityPutMarketingContactsIdSubscription","summary":"Update consent-backed subscription","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"subscribed":{"type":"boolean"},"topicId":{"type":"string","format":"uuid"},"consent":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"wording":{"type":"string","minLength":1,"maxLength":4000},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source","wording","occurredAt"],"additionalProperties":false}},"required":["subscribed"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/contacts/export":{"get":{"operationId":"parityGetMarketingContactsExport","summary":"Export a bounded page of contacts","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvPage"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/segments/{id}/contacts/{contactId}":{"put":{"operationId":"parityPutMarketingSegmentsIdContactsContactId","summary":"Update static segment membership","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteMarketingSegmentsIdContactsContactId","summary":"Update static segment membership","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"contactId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/imports":{"post":{"operationId":"parityPostMarketingImports","summary":"Durably store a bounded CSV import","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactImportInput"}}}},"responses":{"202":{"description":"Durably accepted; subsequent outcomes remain visible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkGetContactImportResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/imports/preview":{"post":{"operationId":"parityPostMarketingImportsPreview","summary":"Preview CSV mapping without changes","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactImportPreviewInput"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkPreviewContactImportResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/imports/{id}":{"get":{"operationId":"parityGetMarketingImportsId","summary":"Read import progress and row errors","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkGetContactImportResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/imports/{id}/resume":{"post":{"operationId":"parityPostMarketingImportsIdResume","summary":"Resume a paused import","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkGetContactImportResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/send":{"post":{"operationId":"parityPostMarketingBroadcastsIdSend","summary":"send a campaign","description":"Private marketing rollout. Requires marketing:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/schedule":{"post":{"operationId":"parityPostMarketingBroadcastsIdSchedule","summary":"schedule a campaign","description":"Private marketing rollout. Requires marketing:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/pause":{"post":{"operationId":"parityPostMarketingBroadcastsIdPause","summary":"pause a campaign","description":"Private marketing rollout. Requires marketing:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/resume":{"post":{"operationId":"parityPostMarketingBroadcastsIdResume","summary":"resume a campaign","description":"Private marketing rollout. Requires marketing:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/cancel":{"post":{"operationId":"parityPostMarketingBroadcastsIdCancel","summary":"cancel a campaign","description":"Private marketing rollout. Requires marketing:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"expectedRevision":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"}},"required":[],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Broadcast"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/preview":{"post":{"operationId":"parityPostMarketingBroadcastsIdPreview","summary":"preview a campaign","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"contactId":{"type":"string","format":"uuid"}},"required":["contactId"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"simulated":{"const":true},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"variant":{"enum":["A","B",null]},"tracking":{"$ref":"#/components/schemas/TrackingChoice"}},"required":["simulated","subject","variant","tracking"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/recipients":{"get":{"operationId":"parityGetMarketingBroadcastsIdRecipients","summary":"Read campaign recipients","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/BroadcastRecipient"}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["data","nextCursor"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/export":{"get":{"operationId":"parityGetMarketingBroadcastsIdExport","summary":"Read campaign export","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CsvPage"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes":{"get":{"operationId":"parityGetInboxes","summary":"List project inboxes","description":"Private inboxes rollout. Requires inboxes:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListInboxesResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostInboxes","summary":"Create an inbox","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"},"receivingDomainId":{"type":"string","format":"uuid"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Inbox"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}":{"patch":{"operationId":"parityPatchInboxesId","summary":"Rename an inbox","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Inbox"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteInboxesId","summary":"Remove inbox organization; receiving continues","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/threads":{"get":{"operationId":"parityGetInboxesIdThreads","summary":"List inbox threads","description":"Private inboxes rollout. Requires inboxes:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"search","in":"query","schema":{"type":"string","maxLength":200}},{"name":"unread","in":"query","schema":{"type":"boolean"}},{"name":"trash","in":"query","schema":{"type":"boolean"}},{"name":"labelId","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"view","in":"query","schema":{"enum":["inbox","archived","snoozed","trash","all"]}},{"name":"assignee","in":"query","schema":{"type":"string","description":"An active workspace member UUID or unassigned."}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListInboxThreadsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"parityPatchInboxesIdThreads","summary":"Update 1–100 conversations atomically; all revisions must match","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxBulkUpdate"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxThreadUpdateResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/labels":{"get":{"operationId":"parityGetInboxesIdLabels","summary":"List inbox labels","description":"Private inboxes rollout. Requires inboxes:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/InboxLabel"}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostInboxesIdLabels","summary":"Create an inbox label","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxLabel"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/drafts":{"get":{"operationId":"parityGetInboxesIdDrafts","summary":"List inbox drafts","description":"Private inboxes rollout. Requires inboxes:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListInboxDraftsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostInboxesIdDrafts","summary":"Save an encrypted draft","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"$ref":"#/components/schemas/InboxDraftContent"},"operationId":{"type":"string","format":"uuid"}},"required":["content"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxDraft"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/threads/{threadId}":{"get":{"operationId":"parityGetInboxesIdThreadsThreadId","summary":"Read a bounded page of received and sent conversation messages","description":"Private inboxes rollout. Requires inboxes:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"threadId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"messages":{"type":"array","items":{"$ref":"#/components/schemas/ReceivedEmail"}},"sent":{"type":"array","items":{"$ref":"#/components/schemas/InboxSentMessage"}},"nextCursor":{"type":["string","null"]}},"required":["id","messages","sent","nextCursor"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"parityPatchInboxesIdThreadsThreadId","summary":"Update conversation organization with optional revision protection","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"threadId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxThreadUpdate"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/labels/{labelId}":{"delete":{"operationId":"parityDeleteInboxesIdLabelsLabelId","summary":"Remove a label","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"labelId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/drafts/{draftId}":{"patch":{"operationId":"parityPatchInboxesIdDraftsDraftId","summary":"Save the reviewed draft revision","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"content":{"$ref":"#/components/schemas/InboxDraftContent"},"expectedRevision":{"type":"integer"}},"required":["content","expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxDraft"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteInboxesIdDraftsDraftId","summary":"Remove an unsent draft","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/drafts/{draftId}/send":{"post":{"operationId":"parityPostInboxesIdDraftsDraftIdSend","summary":"Queue a saved draft through normal sending","description":"Private inboxes rollout. Requires inboxes:send. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:send","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"draftId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"202":{"description":"Durably accepted; subsequent outcomes remain visible.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LogicalEmailResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/messages/{messageId}/reply":{"post":{"operationId":"parityPostInboxesIdMessagesMessageIdReply","summary":"Create a reply draft; does not send","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string","format":"email"},"text":{"type":"string"},"operationId":{"type":"string","format":"uuid"}},"required":["from","text"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxDraft"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/inboxes/{id}/messages/{messageId}/forward":{"post":{"operationId":"parityPostInboxesIdMessagesMessageIdForward","summary":"Create a forward draft; does not send","description":"Private inboxes rollout. Requires inboxes:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: inboxes"],"x-feature-flag":"POSTRUNE_FEATURE_INBOXES","x-capability":"inboxes:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"messageId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string","format":"email"},"text":{"type":"string"},"operationId":{"type":"string","format":"uuid"}},"required":["from","to","text"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/InboxDraft"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/tracking/settings":{"get":{"operationId":"parityGetTrackingSettings","summary":"Read project tracking defaults","description":"Private tracking rollout. Requires tracking:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: tracking"],"x-feature-flag":"POSTRUNE_FEATURE_TRACKING","x-capability":"tracking:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkGetTrackingSettingsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"parityPatchTrackingSettings","summary":"Change defaults for new sends","description":"Private tracking rollout. Requires tracking:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: tracking"],"x-feature-flag":"POSTRUNE_FEATURE_TRACKING","x-capability":"tracking:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"transactional":{"$ref":"#/components/schemas/TrackingChoice"},"marketing":{"$ref":"#/components/schemas/TrackingChoice"},"expectedRevision":{"type":"integer"}},"required":["transactional","marketing","expectedRevision"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkUpdateTrackingSettingsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/engagement":{"get":{"operationId":"parityGetEngagement","summary":"Read bounded engagement signals and suspected automated activity","description":"Private tracking rollout. Requires metrics:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: tracking"],"x-feature-flag":"POSTRUNE_FEATURE_TRACKING","x-capability":"metrics:read","parameters":[{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"messageId","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"recipient","in":"query","schema":{"type":"string"}},{"name":"tagName","in":"query","schema":{"type":"string"}},{"name":"tagValue","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Include emails created at or after this timestamp."},{"name":"until","in":"query","schema":{"type":"string","format":"date-time"},"description":"Include emails created before this timestamp."},{"name":"activity","in":"query","schema":{"type":"string","enum":["opened","clicked","automated","none"]}},{"name":"classification","in":"query","schema":{"type":"string","enum":["transactional","marketing"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkGetEngagementResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/engagement/export":{"get":{"operationId":"parityGetEngagementExport","summary":"Read bounded engagement signals and suspected automated activity","description":"Private tracking rollout. Requires metrics:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: tracking"],"x-feature-flag":"POSTRUNE_FEATURE_TRACKING","x-capability":"metrics:read","parameters":[{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"messageId","in":"query","schema":{"type":"string","format":"uuid"}},{"name":"recipient","in":"query","schema":{"type":"string"}},{"name":"tagName","in":"query","schema":{"type":"string"}},{"name":"tagValue","in":"query","schema":{"type":"string"}},{"name":"since","in":"query","schema":{"type":"string","format":"date-time"},"description":"Include emails created at or after this timestamp."},{"name":"until","in":"query","schema":{"type":"string","format":"date-time"},"description":"Include emails created before this timestamp."},{"name":"activity","in":"query","schema":{"type":"string","enum":["opened","clicked","automated","none"]}},{"name":"classification","in":"query","schema":{"type":"string","enum":["transactional","marketing"]}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"csv":{"type":"string"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]},"limitations":{"type":"string"},"generatedAt":{"type":"string","format":"date-time"}},"required":["csv","nextCursor","limitations","generatedAt"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/messages":{"get":{"operationId":"parityGetMessages","summary":"Read project messages","description":"Private management rollout. Requires email:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.\nRequires POSTRUNE_FEATURE_MANAGEMENT=true.","tags":["Parity: management"],"security":[{"projectKey":[]}],"parameters":[{"name":"status","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]}},{"name":"search","in":"query","required":false,"schema":{"default":"","type":"string","maxLength":200}},{"name":"limit","in":"query","required":false,"schema":{"default":50,"type":"integer","minimum":1,"maximum":100}},{"name":"cursor","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":512}},{"name":"tagName","in":"query","required":false,"schema":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"}},{"name":"tagValue","in":"query","required":false,"schema":{"type":"string","maxLength":256}},{"name":"reviewState","in":"query","required":false,"schema":{"default":"all","type":"string","enum":["all","pending","clear","held","rejected"]}}],"responses":{"200":{"description":"Success.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreMessagePage"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:read","x-feature-flag":"POSTRUNE_FEATURE_MANAGEMENT","x-pagination":{"items":"data","cursor":"nextCursor","defaultLimit":50,"maximumLimit":100}}},"/api/v1/regions":{"get":{"operationId":"parityGetRegions","summary":"List regional availability; no residency guarantee","description":"Private regions rollout. Requires domains:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: regions"],"x-feature-flag":"POSTRUNE_FEATURE_REGIONS","x-capability":"domains:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkListSendingRegionsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}":{"get":{"operationId":"parityGetWorkspacesId","summary":"Read workspace details","description":"Private teams rollout. Requires workspace:read. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"workspace:read","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceGetWorkspaceResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/members":{"get":{"operationId":"parityGetWorkspacesIdMembers","summary":"List workspace members","description":"Private teams rollout. Requires members:read. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"members:read","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceListMembersResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/members/{userId}":{"patch":{"operationId":"parityPatchWorkspacesIdMembersUserId","summary":"Change a member role","description":"Private teams rollout. Requires members:write. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"members:write","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"role":{"enum":["admin","member"]}},"required":["role"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"parityDeleteWorkspacesIdMembersUserId","summary":"Remove a member; final owner is protected","description":"Private teams rollout. Requires members:write. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"members:write","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"userId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/invitations":{"get":{"operationId":"parityGetWorkspacesIdInvitations","summary":"List invitations","description":"Private teams rollout. Requires members:read. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"members:read","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceListInvitationsResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostWorkspacesIdInvitations","summary":"Create an expiring invitation; does not send email","description":"Private teams rollout. Requires invitations:write. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"invitations:write","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"role":{"enum":["admin","member"]},"operationId":{"type":"string","format":"uuid"}},"required":["email","role","operationId"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceCreateInvitationResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/invitations/{invitationId}":{"delete":{"operationId":"parityDeleteWorkspacesIdInvitationsInvitationId","summary":"Revoke an invitation","description":"Private teams rollout. Requires invitations:write. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"invitations:write","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"invitationId","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OperationSuccess"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/audit":{"get":{"operationId":"parityGetWorkspacesIdAudit","summary":"Export a bounded audit page","description":"Private teams rollout. Requires audit:read. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: teams"],"x-feature-flag":"POSTRUNE_FEATURE_TEAMS","x-capability":"audit:read","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"cursor","in":"query","schema":{"type":"string","maxLength":512}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceListAuditResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/authoring-context":{"get":{"operationId":"parityGetMarketingAuthoringContext","summary":"Read scoped field types, segments, topics, and drafting guidance without contact addresses","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingAuthoringContext"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/workspaces/{id}/security":{"get":{"operationId":"parityGetWorkspacesIdSecurity","summary":"Read implemented security controls and the configured support contact","description":"Private enterprise rollout. Requires workspace:read. Use a distinct workspace administration token; issuing membership and role are rechecked on every request. Requires teams and management flags. Existing credentials receive no new permissions.","tags":["Parity: enterprise"],"x-feature-flag":"POSTRUNE_FEATURE_ENTERPRISE","x-capability":"workspace:read","security":[{"workspaceCredential":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SdkWorkspaceGetSecurityInformationResult"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/policy":{"get":{"operationId":"parityGetMarketingPolicy","summary":"Read policy","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingPolicy"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"parityPatchMarketingPolicy","summary":"Set shared marketing frequency and local sending windows","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingPolicy"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingPolicy"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/results":{"get":{"operationId":"parityGetMarketingResults","summary":"Read results","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingResults"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/contacts/{id}/profile":{"get":{"operationId":"parityGetMarketingContactsIdProfile","summary":"Read contacts/{id}/profile","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactProfile"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/broadcasts/{id}/results":{"get":{"operationId":"parityGetMarketingBroadcastsIdResults","summary":"Read broadcasts/{id}/results","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingResults"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/forms":{"get":{"operationId":"parityGetMarketingForms","summary":"Read forms","description":"Private marketing rollout. Requires marketing:read. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:read","responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/MarketingForm"}}},"required":["data"],"additionalProperties":false}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"parityPostMarketingForms","summary":"Save a hosted and embeddable signup form","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingFormInput"}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingForm"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/marketing/forms/{id}":{"patch":{"operationId":"parityPatchMarketingFormsId","summary":"Update or pause a signup form","description":"Private marketing rollout. Requires marketing:write. Credentials stay scoped to their project and environment. Existing credentials receive no new permissions.","tags":["Parity: marketing"],"x-feature-flag":"POSTRUNE_FEATURE_MARKETING","x-capability":"marketing:write","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingFormInput"}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketingForm"}}}},"400":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request rejected; no automatic resend is authorized.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/email-batches":{"post":{"operationId":"parityPostEmailBatches","summary":"Accept a batch of logical emails","description":"Requires POSTRUNE_FEATURE_SENDING=true.","tags":["Parity: sending"],"security":[{"projectKey":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"schema":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"description":"Supply a stable key here or in the body; if both are present they must agree. Reuse unchanged input on retry."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreBatchInput"}}}},"responses":{"202":{"description":"Durably accepted. Delivery remains asynchronous.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreBatch"}}}},"400":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"401":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"403":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"404":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"405":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Allow":{"description":"Supported methods.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"408":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"409":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"410":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"413":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"415":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"422":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"429":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"500":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}},"503":{"description":"Request error. Inspect code, issues, and requestId; an error does not establish that an earlier send failed.","headers":{"X-Request-Id":{"description":"Server-generated correlation ID.","schema":{"type":"string","format":"uuid"}},"Retry-After":{"description":"Wait at least this many seconds before another eligible request.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoreError"}}}}},"x-core-contract":true,"x-capability":"email:send","x-feature-flag":"POSTRUNE_FEATURE_SENDING","x-alias-of":"parityPostEmailsBatch"}},"/api/v1/webhook-relay/sessions":{"post":{"operationId":"createRelaySession","summary":"create Relay Session","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_WEBHOOK_RELAY","x-capability":"webhooks:listen","description":"Live requires webhooks:listen-live as well. A flag never grants an existing credential new authority.","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"operationId":{"type":"string","format":"uuid"},"live":{"type":"boolean","default":false}},"required":["operationId"],"additionalProperties":false}}}},"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelaySession"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhook-relay/sessions/{id}":{"get":{"operationId":"getRelaySession","summary":"get Relay Session","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_WEBHOOK_RELAY","x-capability":"webhooks:listen","description":"Live requires webhooks:listen-live as well. A flag never grants an existing credential new authority.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelaySession"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"closeRelaySession","summary":"close Relay Session","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_WEBHOOK_RELAY","x-capability":"webhooks:listen","description":"Live requires webhooks:listen-live as well. A flag never grants an existing credential new authority.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhook-relay/sessions/{id}/tickets":{"post":{"operationId":"createRelayTicket","summary":"create Relay Ticket","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_WEBHOOK_RELAY","x-capability":"webhooks:listen","description":"Live requires webhooks:listen-live as well. A flag never grants an existing credential new authority.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"201":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RelayTicket"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/webhook-relay/sessions/{id}/secret":{"post":{"operationId":"exportRelaySecret","summary":"export Relay Secret","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_WEBHOOK_RELAY","x-capability":"webhooks:listen","description":"Live requires webhooks:listen-live as well. A flag never grants an existing credential new authority.","parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"secret":{"type":"string"}},"required":["secret"],"additionalProperties":false}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cli/auth/start":{"post":{"operationId":"startCliAuthorization","summary":"start Cli Authorization","tags":["Developer toolkit"],"security":[],"x-feature-flag":"POSTRUNE_FEATURE_CLI_AUTH","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deviceCode":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"},"environment":{"enum":["test","live"],"default":"test"},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyCapability"}}},"required":["deviceCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationStart"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cli/auth/poll":{"post":{"operationId":"pollCliAuthorization","summary":"poll Cli Authorization","tags":["Developer toolkit"],"security":[],"x-feature-flag":"POSTRUNE_FEATURE_CLI_AUTH","parameters":[],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"deviceCode":{"type":"string","pattern":"^[A-Za-z0-9_-]{43}$"}},"required":["deviceCode"],"additionalProperties":false}}}},"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CliAuthorizationPoll"}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/api/v1/cli/auth/logout":{"post":{"operationId":"logoutCliAuthorization","summary":"logout Cli Authorization","tags":["Developer toolkit"],"security":[{"projectKey":[]}],"x-feature-flag":"POSTRUNE_FEATURE_CLI_AUTH","parameters":[],"responses":{"200":{"description":"Success","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false}}}},"400":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Request failed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"projectKey":{"type":"http","scheme":"bearer","description":"Project-scoped test or live API credential."},"workspaceCredential":{"type":"http","scheme":"bearer","description":"Explicitly scoped, expiring sw_ws_ workspace administration token. Project keys are not accepted."}},"schemas":{"CoreSendInput":{"anyOf":[{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"from":{"type":"string","minLength":3,"maxLength":320},"to":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"subject":{"type":"string","minLength":1,"maxLength":998},"text":{"type":"string","maxLength":100000},"html":{"type":"string","maxLength":200000},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"attachments":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":14000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"}},"required":["filename","content"],"additionalProperties":false}},"idempotencyKey":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":86400}},"required":["from","to","subject"],"additionalProperties":false},{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"from":{"type":"string","minLength":3,"maxLength":320},"to":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"attachments":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":14000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"}},"required":["filename","content"],"additionalProperties":false}},"idempotencyKey":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":86400},"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variables":{}},"required":["from","to","templateVersionId","variables"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","minLength":3,"maxLength":320},"to":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"cc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"bcc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"subject":{"type":"string","minLength":1,"maxLength":998},"text":{"type":"string","maxLength":100000},"html":{"type":"string","maxLength":200000},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"additionalProperties":false},"attachments":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":54000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["filename","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filename":{"type":"string","minLength":1,"maxLength":200},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["attachmentId"],"additionalProperties":false}]}},"headers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":78,"pattern":"^[A-Za-z0-9-]+$"},"additionalProperties":{"type":"string","maxLength":998}},"tags":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"value":{"type":"string","maxLength":256,"pattern":"^[\\x20-\\x7e]*$"}},"required":["name","value"],"additionalProperties":false}},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresInSeconds":{"default":86400,"type":"integer","minimum":60,"maximum":86400},"idempotencyKey":{"type":"string"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["from","to","subject"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","minLength":3,"maxLength":320},"to":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"cc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"bcc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"subject":{"not":{}},"text":{"not":{}},"html":{"not":{}},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"additionalProperties":false},"attachments":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":54000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["filename","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filename":{"type":"string","minLength":1,"maxLength":200},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["attachmentId"],"additionalProperties":false}]}},"headers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":78,"pattern":"^[A-Za-z0-9-]+$"},"additionalProperties":{"type":"string","maxLength":998}},"tags":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"value":{"type":"string","maxLength":256,"pattern":"^[\\x20-\\x7e]*$"}},"required":["name","value"],"additionalProperties":false}},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresInSeconds":{"default":86400,"type":"integer","minimum":60,"maximum":86400},"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variables":{},"idempotencyKey":{"type":"string"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["from","to","templateVersionId","variables"],"additionalProperties":false}]},"CoreSendResult":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"mode":{"type":"string","enum":["demo","live"]}},"required":["id","status","mode"],"additionalProperties":{}},{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"type":"string","enum":["demo","live"]},"recipientCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"processedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveries":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"errorCode":{"type":["string","null"]}},"required":["index","id","status","errorCode"],"additionalProperties":{}}}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","deliveries"],"additionalProperties":{}}]},"CoreError":{"type":"object","properties":{"error":{"type":"string"},"code":{"type":"string"},"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"issues":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"message":{"type":"string"},"severity":{"type":"string"},"field":{"type":"string"},"nodeId":{"type":"string"},"blockId":{"type":"string"}},"required":["code","message","severity"],"additionalProperties":{}}}},"required":["error"],"additionalProperties":{}},"CoreMessagePage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"mode":{"type":"string","enum":["demo","live"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"latencyMs":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"reviewStatus":{"type":"string","enum":["pending","clear","held","rejected"]},"reviewReason":{"type":["string","null"]}},"required":["id","status","mode","createdAt","updatedAt","latencyMs"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":{}},"CoreEmailLookup":{"anyOf":[{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"mode":{"type":"string","enum":["demo","live"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"latencyMs":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"reviewStatus":{"type":"string","enum":["pending","clear","held","rejected"]},"reviewReason":{"type":["string","null"]},"events":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","createdAt"],"additionalProperties":{}}}},"required":["id","status","mode","createdAt","updatedAt","latencyMs","events"],"additionalProperties":{}},{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"type":"string","enum":["demo","live"]},"recipientCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"processedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveries":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"errorCode":{"type":["string","null"]}},"required":["index","id","status","errorCode"],"additionalProperties":{}}}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","deliveries"],"additionalProperties":{}}]},"CoreRescheduleInput":{"type":"object","properties":{"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["scheduledAt","expectedRevision"],"additionalProperties":false},"CoreLogicalEmail":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"type":"string","enum":["demo","live"]},"recipientCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"processedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveries":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"errorCode":{"type":["string","null"]}},"required":["index","id","status","errorCode"],"additionalProperties":{}}}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","deliveries"],"additionalProperties":{}},"ReceivedEmail":{"type":"object","required":["id","projectId","from","to","subject","status","receivedAt","bodyPurged","attachmentCount"],"properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"from":{"type":"string"},"to":{"type":"array","items":{"type":"string","format":"email"}},"subject":{"type":"string"},"status":{"enum":["received","quarantined","failed"]},"reason":{"type":["string","null"]},"receivedAt":{"type":"string","format":"date-time"},"bodyPurged":{"type":"boolean"},"attachmentCount":{"type":"integer"},"text":{"type":"string"},"html":{"type":"string","description":"Sanitized HTML. Render only inside an opaque-origin sandbox."},"attachments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"filename":{"type":"string"},"contentType":{"type":"string"},"size":{"type":"integer"}}}}}},"Error":{"type":"object","required":["error"],"properties":{"error":{"type":"string"},"code":{"type":"string"},"requestId":{"type":"string","format":"uuid","description":"Server-generated support correlation identifier."},"issues":{"type":"array","items":{"anyOf":[{"$ref":"#/components/schemas/WorkflowIssue"},{"$ref":"#/components/schemas/TemplateDiagnostic"}]}}}},"WorkflowIssue":{"type":"object","properties":{"code":{"type":"string"},"severity":{"enum":["error","warning"]},"message":{"type":"string"},"nodeId":{"type":"string"},"field":{"type":"string"}},"required":["code","severity","message"],"additionalProperties":false},"TemplateDiagnostic":{"type":"object","properties":{"code":{"type":"string"},"severity":{"enum":["error","warning"]},"message":{"type":"string"},"blockId":{"type":"string"},"field":{"type":"string"}},"required":["code","severity","message"],"additionalProperties":false},"CoreDoctor":{"type":"object","properties":{"credential":{"type":"object","properties":{"valid":{"type":"boolean","const":true},"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"environment":{"type":"string","enum":["test","live"]},"permissions":{"type":"array","items":{"type":"string"}}},"required":["valid","id","projectId","environment","permissions"],"additionalProperties":{}},"mode":{"type":"string","enum":["demo","live"]},"sent":{"type":"boolean","const":false},"checks":{"type":"object","properties":{"projectActive":{"type":"boolean"},"verifiedDomainCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"liveAccess":{"type":"boolean"},"providerTenantReady":{"type":"boolean"}},"additionalProperties":{}},"skipped":{"type":"array","items":{"type":"string"}},"readiness":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"environment":{"type":"string","enum":["test","live"]},"evaluatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"canSend":{"type":"boolean"},"checks":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"state":{"type":"string","enum":["ok","warning","blocked","unknown"]},"explanation":{"type":"string"},"action":{"type":"string"}},"required":["code","state","explanation"],"additionalProperties":{}}},"milestones":{"type":"array","items":{"not":{}}},"nextAction":{"type":"null"},"sendingPause":{"anyOf":[{"type":"object","properties":{"reason":{"type":"string","enum":["bounces","complaints","security","content","provider","other"]}},"required":["reason"],"additionalProperties":{}},{"type":"null"}]},"evidence":{"type":"object","properties":{"dashboardTestId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"applicationTestId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"providerSubmittedId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"serverAcceptedId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]}},"required":["dashboardTestId","applicationTestId","providerSubmittedId","serverAcceptedId"],"additionalProperties":{}}},"required":["projectId","environment","evaluatedAt","canSend","checks","milestones","nextAction","evidence"],"additionalProperties":{}}},"required":["credential","mode","sent","checks","skipped"],"additionalProperties":{}},"CoreEmailDiagnosis":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"environment":{"type":"string","enum":["test","live"]},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"reviewState":{"type":"string","enum":["pending","clear","held","rejected"]},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"evaluatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"primary":{"type":"object","properties":{"code":{"type":"string"},"state":{"type":"string","enum":["ok","warning","blocked","unknown"]},"explanation":{"type":"string"},"action":{"type":"string"}},"required":["code","state","explanation"],"additionalProperties":{}},"evidence":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"state":{"type":"string","enum":["ok","warning","blocked","unknown"]},"explanation":{"type":"string"},"action":{"type":"string"}},"required":["code","state","explanation"],"additionalProperties":{}}},"events":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"created_at":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","created_at"],"additionalProperties":{}}},"link":{"type":"string"},"automaticResend":{"type":"boolean","const":false}},"required":["id","projectId","environment","status","reviewState","expiresAt","evaluatedAt","evidence","events","link","automaticResend"],"additionalProperties":{}},"AutomationTemplate":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/TemplateContent"},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/TemplateVersion"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque revision of the current name and draft. Supply as expectedRevision when saving or publishing."}},"additionalProperties":false,"required":["id","projectId","environment","name","draft","publishedVersionId","versions","createdAt","updatedAt"]},"TemplateContent":{"type":"object","properties":{"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"variables":{"$ref":"#/components/schemas/VariableSchema"},"authoring":{"$ref":"#/components/schemas/TemplateAuthoring"}},"additionalProperties":false,"required":["subject","variables"],"description":"Legacy text/HTML remains supported. Visual mode has one authoritative versioned document and cannot also supply custom HTML. textMode controls automatic or manually authored plain text."},"VariableSchema":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"object"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"properties":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false}},"fallback":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}},"required":["type","properties"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"array"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"object"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"properties":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false}},"fallback":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}},"required":["type","properties"],"additionalProperties":false}]},"fallback":{"maxItems":50,"type":"array","items":{"anyOf":[{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}]}}},"required":["type","items"],"additionalProperties":false}]}},"TemplateAuthoring":{"type":"object","properties":{"schemaVersion":{"type":"integer","enum":[2,3]},"format":{"type":"string","enum":["visual","html"]},"document":{"$ref":"#/components/schemas/TemplateDocument"},"preheader":{"type":"string","maxLength":300},"textMode":{"type":"string","enum":["auto","manual"]},"brandVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["schemaVersion","format","textMode"],"additionalProperties":false,"description":"Visual authoring.schemaVersion must match its document. Schema 2 dispatches to frozen renderer 2.0.0. Schema 3 dispatches to renderer 3.0.0; unknown or mismatched versions fail closed. Existing publications and workflow pins are immutable."},"TemplateDocument":{"oneOf":[{"$ref":"#/components/schemas/TemplateDocumentV2"},{"type":"object","properties":{"schemaVersion":{"type":"number","const":3},"rendererVersion":{"type":"string","const":"3.0.0"},"tokens":{"type":"object","properties":{"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"surfaceColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"textColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"mutedColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"accentColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"contentWidth":{"type":"integer","minimum":320,"maximum":960},"spacing":{"type":"integer","minimum":0,"maximum":80},"buttonRadius":{"type":"number","minimum":0,"maximum":200},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80},"roles":{"type":"object","properties":{"heading":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"body":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"surface":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"accent":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"button":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false}},"additionalProperties":false}},"required":["backgroundColor","surfaceColor","textColor","mutedColor","accentColor","fontFamily","contentWidth","spacing","buttonRadius","locale","timeZone"],"additionalProperties":false},"blocks":{"minItems":1,"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocument/$defs/__schema0"}},"language":{"type":"string","maxLength":40,"pattern":"^[A-Za-z]{2,8}(?:-[A-Za-z0-9]{1,8})*$"},"direction":{"type":"string","enum":["ltr","rtl"]}},"required":["schemaVersion","rendererVersion","tokens","blocks"],"additionalProperties":false}],"$defs":{"__schema0":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"type":{"type":"string","enum":["section","columns","column","heading","text","button","image","divider","spacer","list","table","code","condition","repeat"]},"label":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":20000},"richText":{"type":"string","maxLength":30000},"inline":{"maxItems":2000,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string","maxLength":20000},"marks":{"maxItems":4,"type":"array","items":{"type":"string","enum":["bold","italic","underline","strike"]}},"href":{"type":"string","maxLength":8192}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"variable"},"path":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},"format":{"type":"object","properties":{"kind":{"type":"string","enum":["date","number","currency"]},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fractionDigits":{"type":"integer","minimum":0,"maximum":6}},"required":["kind"],"additionalProperties":false},"marks":{"maxItems":4,"type":"array","items":{"type":"string","enum":["bold","italic","underline","strike"]}},"href":{"type":"string","maxLength":8192}},"required":["type","path"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"break"}},"required":["type"],"additionalProperties":false}]}},"listInline":{"maxItems":50,"type":"array","items":{"maxItems":500,"type":"array","items":{"oneOf":[{"type":"object","properties":{"type":{"type":"string","const":"text"},"text":{"type":"string","maxLength":20000},"marks":{"maxItems":4,"type":"array","items":{"type":"string","enum":["bold","italic","underline","strike"]}},"href":{"type":"string","maxLength":8192}},"required":["type","text"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"variable"},"path":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},"format":{"type":"object","properties":{"kind":{"type":"string","enum":["date","number","currency"]},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fractionDigits":{"type":"integer","minimum":0,"maximum":6}},"required":["kind"],"additionalProperties":false},"marks":{"maxItems":4,"type":"array","items":{"type":"string","enum":["bold","italic","underline","strike"]}},"href":{"type":"string","maxLength":8192}},"required":["type","path"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"break"}},"required":["type"],"additionalProperties":false}]}}},"href":{"type":"string","maxLength":8192},"alt":{"type":"string","maxLength":400},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assetUrl":{"type":"string","maxLength":2048},"darkAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"darkAssetUrl":{"type":"string","maxLength":2048},"level":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":3}]},"style":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"mobile":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"dark":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"children":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocument/$defs/__schema0"}},"otherwise":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocument/$defs/__schema0"}},"condition":{"type":"object","properties":{"field":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"operator":{"type":"string","enum":["equals","not_equals","exists","true","false"]},"value":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["field","operator"],"additionalProperties":false},"repeat":{"type":"object","properties":{"field":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"itemName":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["field","itemName"],"additionalProperties":false},"items":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":8192}},"rows":{"maxItems":51,"type":"array","items":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","maxLength":8192}}},"columnWidths":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"number","minimum":1,"maximum":100}},"mobileStack":{"type":"string","enum":["forward","reverse","none"]},"tableMobile":{"type":"string","enum":["scroll","stack"]},"componentBindings":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"additionalProperties":{"type":"object","properties":{"field":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"}},"required":["field"],"additionalProperties":false}},"componentVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locked":{"type":"boolean"},"format":{"type":"object","properties":{"kind":{"type":"string","enum":["date","number","currency"]},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fractionDigits":{"type":"integer","minimum":0,"maximum":6}},"required":["kind"],"additionalProperties":false},"valueField":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"}},"required":["id","type"],"additionalProperties":false}}},"TemplateDocumentV2":{"type":"object","properties":{"schemaVersion":{"type":"number","const":2},"rendererVersion":{"type":"string","const":"2.0.0"},"tokens":{"type":"object","properties":{"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"surfaceColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"textColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"mutedColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"accentColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"contentWidth":{"type":"integer","minimum":320,"maximum":960},"spacing":{"type":"integer","minimum":0,"maximum":80},"buttonRadius":{"type":"number","minimum":0,"maximum":200},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80}},"required":["backgroundColor","surfaceColor","textColor","mutedColor","accentColor","fontFamily","contentWidth","spacing","buttonRadius","locale","timeZone"],"additionalProperties":false},"blocks":{"minItems":1,"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocumentV2/$defs/__schema0"}}},"required":["schemaVersion","rendererVersion","tokens","blocks"],"additionalProperties":false,"$defs":{"__schema0":{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"type":{"type":"string","enum":["section","columns","column","heading","text","button","image","divider","spacer","list","table","code","condition","repeat"]},"label":{"type":"string","maxLength":100},"text":{"type":"string","maxLength":20000},"richText":{"type":"string","maxLength":30000},"href":{"type":"string","maxLength":8192},"alt":{"type":"string","maxLength":400},"assetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"assetUrl":{"type":"string","maxLength":2048},"darkAssetId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"darkAssetUrl":{"type":"string","maxLength":2048},"level":{"anyOf":[{"type":"number","const":1},{"type":"number","const":2},{"type":"number","const":3}]},"style":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"mobile":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"dark":{"type":"object","properties":{"color":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"backgroundColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"fontFamily":{"type":"string","maxLength":180,"pattern":"^[A-Za-z0-9 ,\"'-]+$"},"fontSize":{"type":"number","minimum":8,"maximum":96},"fontWeight":{"type":"integer","minimum":100,"maximum":900},"lineHeight":{"type":"number","minimum":0.8,"maximum":3},"letterSpacing":{"type":"number","minimum":-2,"maximum":10},"align":{"type":"string","enum":["left","center","right"]},"paddingTop":{"type":"number","minimum":0,"maximum":200},"paddingRight":{"type":"number","minimum":0,"maximum":200},"paddingBottom":{"type":"number","minimum":0,"maximum":200},"paddingLeft":{"type":"number","minimum":0,"maximum":200},"borderColor":{"type":"string","pattern":"^(#(?:[0-9a-fA-F]{3}|[0-9a-fA-F]{4}|[0-9a-fA-F]{6}|[0-9a-fA-F]{8})|transparent)$"},"borderWidth":{"type":"number","minimum":0,"maximum":12},"borderRadius":{"type":"number","minimum":0,"maximum":200},"width":{"type":"number","minimum":1,"maximum":1200},"height":{"type":"number","minimum":0,"maximum":1200},"verticalAlign":{"type":"string","enum":["top","middle","bottom"]},"hidden":{"type":"boolean"}},"additionalProperties":false},"children":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocumentV2/$defs/__schema0"}},"otherwise":{"maxItems":200,"type":"array","items":{"$ref":"#/components/schemas/TemplateDocumentV2/$defs/__schema0"}},"condition":{"type":"object","properties":{"field":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"operator":{"type":"string","enum":["equals","not_equals","exists","true","false"]},"value":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["field","operator"],"additionalProperties":false},"repeat":{"type":"object","properties":{"field":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"},"itemName":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["field","itemName"],"additionalProperties":false},"items":{"maxItems":50,"type":"array","items":{"type":"string","maxLength":8192}},"rows":{"maxItems":51,"type":"array","items":{"minItems":1,"maxItems":8,"type":"array","items":{"type":"string","maxLength":8192}}},"columnWidths":{"minItems":1,"maxItems":4,"type":"array","items":{"type":"number","minimum":1,"maximum":100}},"mobileStack":{"type":"string","enum":["forward","reverse","none"]},"tableMobile":{"type":"string","enum":["scroll","stack"]},"componentVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"locked":{"type":"boolean"},"format":{"type":"object","properties":{"kind":{"type":"string","enum":["date","number","currency"]},"locale":{"type":"string","maxLength":40},"timeZone":{"type":"string","maxLength":80},"currency":{"type":"string","pattern":"^[A-Z]{3}$"},"fractionDigits":{"type":"integer","minimum":0,"maximum":6}},"required":["kind"],"additionalProperties":false},"valueField":{"type":"string","maxLength":200,"pattern":"^[A-Za-z][A-Za-z0-9_]*(?:\\.[A-Za-z][A-Za-z0-9_]*){0,3}$"}},"required":["id","type"],"additionalProperties":false}}},"TemplateVersion":{"type":"object","properties":{"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"variables":{"$ref":"#/components/schemas/VariableSchema"},"id":{"type":"string","format":"uuid"},"templateId":{"type":"string","format":"uuid"},"version":{"type":"integer"},"hash":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"authoring":{"$ref":"#/components/schemas/TemplateAuthoring"}},"required":["id","templateId","version","hash","createdAt","subject","variables"],"additionalProperties":false},"TemplateSummaryPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TemplateSummary"}},"nextCursor":{"type":["string","null"],"format":"uuid"}},"required":["data","nextCursor"],"additionalProperties":false},"TemplateSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","environment","name","publishedVersionId","updatedAt"],"additionalProperties":false},"TemplateEditorResource":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/TemplateContent"},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"versions":{"type":"array","items":{"$ref":"#/components/schemas/TemplateVersionSummary"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque revision of the current name and draft. Supply as expectedRevision when saving or publishing."},"versionsNextCursor":{"type":["string","null"]}},"additionalProperties":false,"required":["id","projectId","environment","name","draft","publishedVersionId","versions","createdAt","updatedAt","versionsNextCursor"]},"TemplateVersionSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"templateId":{"type":"string","format":"uuid"},"version":{"type":"integer"},"hash":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","templateId","version","hash","createdAt"],"additionalProperties":false},"AutomationWorkflow":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/WorkflowGraph"},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"status":{"enum":["draft","active","paused"]},"versions":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowVersion"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque revision of the current name and draft. Supply as expectedRevision when saving or publishing."}},"additionalProperties":false,"required":["id","projectId","environment","name","draft","status","versions"]},"WorkflowGraph":{"type":"object","properties":{"lifecycle":{"type":"object","properties":{"goalEvent":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"goalWindowSeconds":{"type":"integer","minimum":60,"maximum":2592000},"reentryCooldownSeconds":{"type":"integer","minimum":0,"maximum":2592000},"sendingWindow":{"type":"object","properties":{"startHour":{"type":"integer","minimum":0,"maximum":23},"endHour":{"type":"integer","minimum":1,"maximum":24},"days":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"timezoneProperty":{"default":"timezone","type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"fallbackTimezone":{"default":"UTC","type":"string","maxLength":100}},"required":["startHour","endHour","days"],"additionalProperties":false}},"additionalProperties":false},"schemaVersion":{"type":"number","const":2},"context":{"type":"object","properties":{"contactId":{"type":"string","minLength":1,"maxLength":320}},"additionalProperties":false},"nodes":{"minItems":2,"maxItems":20,"type":"array","items":{"oneOf":[{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"trigger"},"event":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"segmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"next":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","event","next"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"delay"},"seconds":{"type":"integer","minimum":1,"maximum":2592000},"until":{"type":"string","maxLength":200},"next":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","next"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"wait"},"event":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"filter":{"$ref":"#/components/schemas/WorkflowGraph/$defs/__schema0"},"timeoutSeconds":{"type":"integer","minimum":1,"maximum":2592000},"onEvent":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"onTimeout":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","event","timeoutSeconds","onEvent","onTimeout"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"condition"},"field":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}(?:\\.[A-Za-z][A-Za-z0-9_]{0,63}){0,3}$"},"operator":{"type":"string","enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"rules":{"$ref":"#/components/schemas/WorkflowGraph/$defs/__schema0"},"value":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},"yes":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"no":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","field","operator","yes","no"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"email"},"classification":{"type":"string","enum":["transactional","marketing"]},"topicId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false},"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"from":{"type":"string","minLength":3,"maxLength":320},"to":{"type":"string","minLength":3,"maxLength":320},"replyTo":{"type":"string","maxLength":320},"variables":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"expiresInSeconds":{"type":"integer","minimum":60,"maximum":86400},"next":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","templateVersionId","from","to","variables","expiresInSeconds","next"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"contact"},"operation":{"type":"string","enum":["update","delete","add_to_segment","remove_from_segment"]},"contactId":{"type":"string","minLength":1,"maxLength":320},"segmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"fields":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:firstName|lastName|properties\\.[A-Za-z][A-Za-z0-9_]{0,63})$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"}]}},"next":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","operation","contactId","next"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"notify"},"channel":{"type":"string","enum":["email","slack","webhook"]},"message":{"type":"string","minLength":1,"maxLength":1000},"next":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"}},"required":["id","type","channel","message","next"],"additionalProperties":false},{"type":"object","properties":{"id":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_-]{0,63}$"},"label":{"type":"string","maxLength":100},"position":{"type":"object","properties":{"x":{"type":"number"},"y":{"type":"number"}},"required":["x","y"],"additionalProperties":false},"type":{"type":"string","const":"end"}},"required":["id","type"],"additionalProperties":false}]}},"eventSchemas":{"type":"object","propertyNames":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"additionalProperties":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"object"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"properties":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false}},"fallback":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}},"required":["type","properties"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"array"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"items":{"anyOf":[{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false},{"type":"object","properties":{"type":{"type":"string","const":"object"},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"properties":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"type":"object","properties":{"type":{"type":"string","enum":["string","number","boolean","email","datetime"]},"required":{"type":"boolean"},"description":{"type":"string","maxLength":200},"fallback":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["type"],"additionalProperties":false}},"fallback":{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}},"required":["type","properties"],"additionalProperties":false}]},"fallback":{"maxItems":50,"type":"array","items":{"anyOf":[{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},{"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}}]}}},"required":["type","items"],"additionalProperties":false}]}}},"cancelEvents":{"maxItems":10,"type":"array","items":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"}},"entryPolicy":{"type":"string","enum":["ignore","replace"]},"maxRunSeconds":{"type":"integer","minimum":60,"maximum":2592000}},"required":["nodes","eventSchemas","entryPolicy","maxRunSeconds"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}(?:\\.[A-Za-z][A-Za-z0-9_]{0,63}){0,5}$"},"operator":{"type":"string","enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["kind","field","operator"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["and","or"]},"rules":{"minItems":1,"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/WorkflowGraph/$defs/__schema0"}}},"required":["kind","rules"],"additionalProperties":false}]}}},"WorkflowVersion":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"workflowId":{"type":"string","format":"uuid"},"version":{"type":"integer"},"graph":{"$ref":"#/components/schemas/WorkflowGraph"},"createdAt":{"type":"string","format":"date-time"}},"additionalProperties":false,"required":["id","workflowId","version","graph","createdAt"]},"WorkflowSummaryPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowSummary"}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false},"WorkflowSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"status":{"enum":["draft","active","paused"]},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","projectId","environment","name","status","publishedVersionId","updatedAt"],"additionalProperties":false},"WorkflowEditorResource":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"draft":{"$ref":"#/components/schemas/WorkflowGraph"},"publishedVersionId":{"type":["string","null"],"format":"uuid"},"status":{"enum":["draft","active","paused"]},"versions":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowVersionSummary"}},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque revision of the current name and draft. Supply as expectedRevision when saving or publishing."},"versionsNextCursor":{"type":["string","null"]}},"additionalProperties":false,"required":["id","projectId","environment","name","draft","status","versions","versionsNextCursor"]},"WorkflowVersionSummary":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"workflowId":{"type":"string","format":"uuid"},"version":{"type":"integer"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","workflowId","version","createdAt"],"additionalProperties":false},"TemplatePreviewResult":{"type":"object","properties":{"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"simulated":{"const":true},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"diagnostics":{"type":"array","items":{"$ref":"#/components/schemas/TemplateDiagnostic"}},"assetPreviews":{"type":"object","description":"Asset IDs to owner-authorized preview URLs. Never automatically fetch arbitrary HTML URLs.","additionalProperties":{"type":"string"}}},"required":["subject","simulated"],"additionalProperties":false},"TemplateValues":{"type":"object","description":"At most 32 KiB serialized, 50 fields, and 50 elements per collection. No nested collections. Names and types must match the saved declaration.","maxProperties":50,"additionalProperties":{"anyOf":[{"$ref":"#/components/schemas/ScalarValue"},{"type":"object","maxProperties":50,"additionalProperties":{"$ref":"#/components/schemas/ScalarValue"}},{"type":"array","maxItems":50,"items":{"anyOf":[{"$ref":"#/components/schemas/ScalarValue"},{"type":"object","maxProperties":50,"additionalProperties":{"$ref":"#/components/schemas/ScalarValue"}}]}}]}},"ScalarValue":{"oneOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]},"WorkflowValidation":{"type":"object","required":["valid","revision","executionHash","previewRequired","changes"],"properties":{"valid":{"const":true},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"executionHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"previewRequired":{"type":"boolean"},"changes":{"type":"array","items":{"type":"string"}},"issues":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowIssue"}},"changeDetails":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowChange"}}}},"WorkflowChange":{"type":"object","properties":{"field":{"type":"string"},"before":{},"after":{},"nodeId":{"type":"string"}},"required":["field","before","after"],"additionalProperties":false},"SimulationResult":{"type":"object","properties":{"simulated":{"const":true},"steps":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string"},"type":{"type":"string"},"outcome":{"type":"string"},"atSeconds":{"type":"number"},"nextNodeId":{"type":"string"},"connectorField":{"type":"string"},"reasonCode":{"type":"string"}},"additionalProperties":false}},"emails":{"type":"array","items":{"type":"object","properties":{"nodeId":{"type":"string"},"subject":{"type":"string"},"to":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"}},"additionalProperties":false}},"warnings":{"type":"array","items":{"type":"string"}},"previewReceiptId":{"type":"string","format":"uuid"},"executionHash":{"type":"string","pattern":"^[a-f0-9]{64}$"},"revision":{"type":"string","pattern":"^[a-f0-9]{64}$"},"clock":{"type":"string","format":"date-time"},"untestedNodeIds":{"type":"array","items":{"type":"string"}},"traversedConnectors":{"type":"array","items":{"type":"object","properties":{"sourceId":{"type":"string"},"targetId":{"type":"string"},"field":{"type":"string"}},"required":["sourceId","targetId","field"],"additionalProperties":false}}},"additionalProperties":false,"required":["simulated","steps","emails","warnings"]},"SimulationInput":{"type":"object","properties":{"payload":{"$ref":"#/components/schemas/TemplateValues"},"events":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"atSeconds":{"type":"number","minimum":0},"payload":{"$ref":"#/components/schemas/TemplateValues"},"revision":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["name","atSeconds","payload","revision"]}},"entityId":{"type":"string"},"expectedRevision":{"type":"string","pattern":"^[a-f0-9]{64}$","description":"Opaque draft revision from the latest read. A stale value returns 409 DRAFT_CONFLICT; reload and review before retrying."},"clock":{"type":"string","format":"date-time","description":"Frozen synthetic reference clock; does not affect runtime deadlines."},"sampleId":{"type":"string","format":"uuid"}},"additionalProperties":false,"anyOf":[{"required":["payload"]},{"required":["sampleId"]}]},"WorkflowRun":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"workflowId":{"type":"string","format":"uuid"},"versionId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"entityId":{"type":"string"},"revision":{"type":"integer"},"status":{"enum":["running","waiting","sending","blocked","paused","completed","cancelled","superseded","expired","failed"]},"currentNodeId":{"type":["string","null"]},"dueAt":{"type":["string","null"],"format":"date-time"},"deadlineAt":{"type":"string","format":"date-time"},"reason":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"steps":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"nodeId":{"type":"string"},"status":{"type":"string"},"reason":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"messageId":{"type":["string","null"],"format":"uuid"}},"additionalProperties":false}},"messages":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"status":{"type":"string"},"reviewStatus":{"type":"string"},"intentId":{"type":"string","format":"uuid"}},"additionalProperties":false}}},"additionalProperties":false,"required":["id","workflowId","versionId","projectId","environment","entityId","revision","status","deadlineAt","createdAt","updatedAt"]},"AutomationEventResult":{"type":"object","properties":{"id":{"type":"string"},"duplicate":{"type":"boolean"},"stale":{"type":"boolean"},"runIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"additionalProperties":false,"required":["id","duplicate","stale","runIds"]},"AutomationEventInput":{"type":"object","properties":{"contactId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"environment":{"type":"string","enum":["test","live"]},"id":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"name":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"entityId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9_.:-]+$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"payload":{}},"required":["id","name","entityId","revision","payload"],"additionalProperties":false},"WorkflowPreviewSample":{"type":"object","required":["id","kind","name","input","updatedAt"],"properties":{"id":{"type":"string","format":"uuid"},"kind":{"enum":["normal","cancellation","timeout"]},"name":{"type":"string","maxLength":80},"input":{"$ref":"#/components/schemas/SimulationInput"},"updatedAt":{"type":"string","format":"date-time"}}},"SavedPreviewInput":{"type":"object","properties":{"payload":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"events":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"atSeconds":{"type":"number","minimum":0},"payload":{"type":"object","additionalProperties":{"oneOf":[{"type":"string"},{"type":"number"},{"type":"boolean"}]}},"revision":{"type":"integer","minimum":1}},"additionalProperties":false,"required":["name","atSeconds","payload","revision"]}},"entityId":{"type":"string"},"clock":{"type":"string","format":"date-time","description":"Frozen synthetic reference clock; does not affect runtime deadlines."}},"additionalProperties":false,"required":["payload"]},"TemplateVersionPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/TemplateVersionSummary"}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false},"WorkflowVersionPage":{"type":"object","properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/WorkflowVersionSummary"}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":false},"NamedTemplateVersion":{"type":"object","properties":{"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"variables":{"$ref":"#/components/schemas/VariableSchema"},"id":{"type":"string","format":"uuid"},"templateId":{"type":"string","format":"uuid"},"version":{"type":"integer"},"hash":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"authoring":{"$ref":"#/components/schemas/TemplateAuthoring"},"templateName":{"type":"string"}},"required":["id","templateId","version","hash","createdAt","subject","variables","templateName"],"additionalProperties":false},"CoreBatchInput":{"type":"object","properties":{"emails":{"minItems":1,"maxItems":100,"type":"array","items":{"anyOf":[{"type":"object","properties":{"from":{"type":"string","minLength":3,"maxLength":320},"to":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"cc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"bcc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"subject":{"type":"string","minLength":1,"maxLength":998},"text":{"type":"string","maxLength":100000},"html":{"type":"string","maxLength":200000},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"additionalProperties":false},"attachments":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":54000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["filename","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filename":{"type":"string","minLength":1,"maxLength":200},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["attachmentId"],"additionalProperties":false}]}},"headers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":78,"pattern":"^[A-Za-z0-9-]+$"},"additionalProperties":{"type":"string","maxLength":998}},"tags":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"value":{"type":"string","maxLength":256,"pattern":"^[\\x20-\\x7e]*$"}},"required":["name","value"],"additionalProperties":false}},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresInSeconds":{"default":86400,"type":"integer","minimum":60,"maximum":86400}},"required":["from","to","subject"],"additionalProperties":false},{"type":"object","properties":{"from":{"type":"string","minLength":3,"maxLength":320},"to":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"cc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"bcc":{"anyOf":[{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"}}]},"subject":{"not":{}},"text":{"not":{}},"html":{"not":{}},"replyTo":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"additionalProperties":false},"attachments":{"maxItems":10,"type":"array","items":{"anyOf":[{"type":"object","properties":{"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":54000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["filename","content"],"additionalProperties":false},{"type":"object","properties":{"attachmentId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filename":{"type":"string","minLength":1,"maxLength":200},"contentId":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[A-Za-z0-9._@-]+$"}},"required":["attachmentId"],"additionalProperties":false}]}},"headers":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":78,"pattern":"^[A-Za-z0-9-]+$"},"additionalProperties":{"type":"string","maxLength":998}},"tags":{"maxItems":50,"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":64,"pattern":"^[A-Za-z0-9_-]+$"},"value":{"type":"string","maxLength":256,"pattern":"^[\\x20-\\x7e]*$"}},"required":["name","value"],"additionalProperties":false}},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresInSeconds":{"default":86400,"type":"integer","minimum":60,"maximum":86400},"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variables":{}},"required":["from","to","templateVersionId","variables"],"additionalProperties":false}]}},"idempotencyKey":{"type":"string"}},"required":["emails"],"additionalProperties":false},"CoreBatch":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["accepted","processed"]},"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"type":"string","enum":["demo","live"]},"recipientCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"processedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"index":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","index"],"additionalProperties":{}}}},"required":["id","state","data"],"additionalProperties":{}},"CoreCancellation":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"state":{"type":"string","enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"type":"string","enum":["demo","live"]},"recipientCount":{"type":"integer","minimum":0,"maximum":9007199254740991},"processedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"scheduledAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"revision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"updatedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"deliveries":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer","minimum":0,"maximum":9007199254740991},"id":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"status":{"type":"string","enum":["queued","submitted","accepted","bounced","complained","failed","expired","uncertain"]},"errorCode":{"type":["string","null"]}},"required":["index","id","status","errorCode"],"additionalProperties":{}}},"partiallyCancelled":{"type":"boolean"}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","deliveries","partiallyCancelled"],"additionalProperties":{}},"CoreAttachmentInput":{"type":"object","properties":{"operationId":{"type":"string","minLength":8,"maxLength":128,"pattern":"^[A-Za-z0-9_.:-]+$"},"filename":{"type":"string","minLength":1,"maxLength":200},"content":{"type":"string","maxLength":54000000,"pattern":"^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$"},"url":{"type":"string","maxLength":2048,"format":"uri"},"contentType":{"type":"string","maxLength":120,"pattern":"^[a-zA-Z0-9.+-]+\\/[a-zA-Z0-9.+-]+$"}},"required":["operationId","filename"],"additionalProperties":false},"CoreAttachment":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"filename":{"type":["string","null"]},"contentType":{"type":["string","null"]},"size":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"available":{"type":"boolean"}},"required":["id","filename","contentType","size","expiresAt","available"],"additionalProperties":{}},"CoreDomainPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sendingRegion":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"purpose":{"type":"string"},"purposeType":{"type":"string","enum":["ownership","dkim","bounce_mx","bounce_spf","dmarc"]},"priority":{"type":"number"},"managed":{"type":"boolean"}},"required":["type","name","value","status","purpose"],"additionalProperties":{}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"verifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextCheckAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkError":{"type":["string","null"]},"observations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"expected":{"type":"string"},"observed":{"type":"array","items":{"type":"string"}},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","name","expected","observed","checkedAt"],"additionalProperties":{}}},"configurationRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bounceDomain":{"type":["string","null"]},"authentication":{"type":"object","properties":{"state":{"type":"string","enum":["finish_setup","checking","ready","ready_warning","needs_attention","unavailable"]},"canSend":{"type":"boolean"},"fresh":{"type":"boolean"},"reason":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessfulAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ownership":{"type":"boolean"},"dkim":{"type":"boolean"},"dmarc":{"type":"boolean"},"bounce":{"type":"string","enum":["ready","fallback","pending"]}},"required":["state","canSend","fresh","reason","checkedAt","lastSuccessfulAt","ownership","dkim","dmarc","bounce"],"additionalProperties":{}}},"required":["id","projectId","name","status","records","createdAt","verifiedAt","checkedAt","nextCheckAt","checkError","observations","configurationRevision","bounceDomain","authentication"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":{}},"CoreDomainInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":253},"region":{"type":"string","pattern":"^[a-z]{2}(?:-gov)?-[a-z]+-\\d$"}},"required":["name"],"additionalProperties":false},"CoreDomain":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sendingRegion":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"purpose":{"type":"string"},"purposeType":{"type":"string","enum":["ownership","dkim","bounce_mx","bounce_spf","dmarc"]},"priority":{"type":"number"},"managed":{"type":"boolean"}},"required":["type","name","value","status","purpose"],"additionalProperties":{}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"verifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextCheckAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkError":{"type":["string","null"]},"observations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"expected":{"type":"string"},"observed":{"type":"array","items":{"type":"string"}},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","name","expected","observed","checkedAt"],"additionalProperties":{}}},"configurationRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bounceDomain":{"type":["string","null"]},"authentication":{"type":"object","properties":{"state":{"type":"string","enum":["finish_setup","checking","ready","ready_warning","needs_attention","unavailable"]},"canSend":{"type":"boolean"},"fresh":{"type":"boolean"},"reason":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessfulAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ownership":{"type":"boolean"},"dkim":{"type":"boolean"},"dmarc":{"type":"boolean"},"bounce":{"type":"string","enum":["ready","fallback","pending"]}},"required":["state","canSend","fresh","reason","checkedAt","lastSuccessfulAt","ownership","dkim","dmarc","bounce"],"additionalProperties":{}}},"required":["id","projectId","name","status","records","createdAt","verifiedAt","checkedAt","nextCheckAt","checkError","observations","configurationRevision","bounceDomain","authentication"],"additionalProperties":{}},"CoreOk":{"type":"object","properties":{"ok":{"type":"boolean","const":true}},"required":["ok"],"additionalProperties":{}},"CoreApiKeyPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"prefix":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"environment":{"type":"string","enum":["test","live"]},"capabilities":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","projectId","name","prefix","createdAt","environment","capabilities","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":{}},"CoreApiKeyInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"capabilities":{"minItems":1,"maxItems":36,"type":"array","items":{"type":"string","enum":["email:send","email:read","email:write","domains:read","domains:write","keys:read","keys:write","suppressions:read","suppressions:write","webhooks:read","webhooks:write","webhooks:listen","webhooks:listen-live","usage:read","metrics:read","tracking:read","tracking:write","request-logs:read","attachments:read","attachments:write","marketing:read","marketing:write","marketing:send","inboxes:read","inboxes:write","inboxes:send","receiving:read","smtp:send","events:write","templates:read","templates:write","templates:use","workflows:read","workflows:write","runs:read","runs:write"]}},"operationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["name","capabilities","operationId"],"additionalProperties":false},"CoreApiKeyCreated":{"type":"object","properties":{"key":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"prefix":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"environment":{"type":"string","enum":["test","live"]},"capabilities":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","projectId","name","prefix","createdAt","environment","capabilities","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":{}},"token":{"type":["string","null"]},"secretUnavailable":{"type":"boolean"}},"required":["key","token"],"additionalProperties":{}},"CoreApiKey":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"name":{"type":"string"},"prefix":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"environment":{"type":"string","enum":["test","live"]},"capabilities":{"type":"array","items":{"type":"string"}},"expiresAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastUsedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"revokedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]}},"required":["id","projectId","name","prefix","createdAt","environment","capabilities","expiresAt","lastUsedAt","revokedAt"],"additionalProperties":{}},"CoreSuppressionPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"enforcement":{"type":"boolean"}},"required":["id","projectId","email","reason","createdAt","enforcement"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":{}},"CoreSuppressionInput":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"reason":{"type":"string","minLength":1,"maxLength":240}},"required":["email","reason"],"additionalProperties":false},"CoreSuppression":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"email":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"reason":{"type":"string"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"enforcement":{"type":"boolean"}},"required":["id","projectId","email","reason","createdAt","enforcement"],"additionalProperties":{}},"CoreWebhookPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","projectId","url","events","enabled","createdAt"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["data","nextCursor"],"additionalProperties":{}},"CoreWebhookInput":{"type":"object","properties":{"url":{"type":"string","maxLength":2048,"format":"uri"},"events":{"minItems":1,"maxItems":20,"type":"array","items":{"type":"string","enum":["email.queued","email.submitted","email.accepted","email.bounced","email.complained","email.failed","email.expired","email.uncertain","email.received","email.receiving_failed","email.opened","email.clicked","contact.unsubscribed","inbox.message_received","inbox.message_queued","webhook.test"]}}},"required":["url","events"],"additionalProperties":false},"CoreWebhookCreated":{"type":"object","properties":{"endpoint":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","projectId","url","events","enabled","createdAt"],"additionalProperties":{}},"secret":{"type":"string"}},"required":["endpoint","secret"],"additionalProperties":{}},"CoreWebhook":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string"}},"enabled":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","projectId","url","events","enabled","createdAt"],"additionalProperties":{}},"CorePrepareInput":{"type":"object","properties":{"operationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"bounceSubdomain":{"type":"string","minLength":1,"maxLength":253},"refresh":{"type":"boolean"}},"additionalProperties":false},"CoreDomainSetup":{"type":"object","properties":{"domain":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"workspaceId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"sendingRegion":{"type":"string"},"name":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"purpose":{"type":"string"},"purposeType":{"type":"string","enum":["ownership","dkim","bounce_mx","bounce_spf","dmarc"]},"priority":{"type":"number"},"managed":{"type":"boolean"}},"required":["type","name","value","status","purpose"],"additionalProperties":{}}},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"verifiedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"nextCheckAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"checkError":{"type":["string","null"]},"observations":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"expected":{"type":"string"},"observed":{"type":"array","items":{"type":"string"}},"checkedAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["type","name","expected","observed","checkedAt"],"additionalProperties":{}}},"configurationRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"bounceDomain":{"type":["string","null"]},"authentication":{"type":"object","properties":{"state":{"type":"string","enum":["finish_setup","checking","ready","ready_warning","needs_attention","unavailable"]},"canSend":{"type":"boolean"},"fresh":{"type":"boolean"},"reason":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessfulAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ownership":{"type":"boolean"},"dkim":{"type":"boolean"},"dmarc":{"type":"boolean"},"bounce":{"type":"string","enum":["ready","fallback","pending"]}},"required":["state","canSend","fresh","reason","checkedAt","lastSuccessfulAt","ownership","dkim","dmarc","bounce"],"additionalProperties":{}}},"required":["id","projectId","name","status","records","createdAt","verifiedAt","checkedAt","nextCheckAt","checkError","observations","configurationRevision","bounceDomain","authentication"],"additionalProperties":{}},"records":{"type":"array","items":{"type":"object","properties":{"type":{"type":"string"},"name":{"type":"string"},"value":{"type":"string"},"status":{"type":"string","enum":["pending","verified"]},"purpose":{"type":"string"},"purposeType":{"type":"string","enum":["ownership","dkim","bounce_mx","bounce_spf","dmarc"]},"priority":{"type":"number"},"managed":{"type":"boolean"}},"required":["type","name","value","status","purpose"],"additionalProperties":{}}},"authentication":{"type":"object","properties":{"state":{"type":"string","enum":["finish_setup","checking","ready","ready_warning","needs_attention","unavailable"]},"canSend":{"type":"boolean"},"fresh":{"type":"boolean"},"reason":{"type":"string"},"checkedAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"lastSuccessfulAt":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"ownership":{"type":"boolean"},"dkim":{"type":"boolean"},"dmarc":{"type":"boolean"},"bounce":{"type":"string","enum":["ready","fallback","pending"]}},"required":["state","canSend","fresh","reason","checkedAt","lastSuccessfulAt","ownership","dkim","dmarc","bounce"],"additionalProperties":{}},"preparation":{"anyOf":[{"type":"object","properties":{"status":{"type":"string","enum":["preparing","prepared","active","uncertain","review_required","expired","deleted"]},"operationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expiresAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"reason":{"type":["string","null"]}},"required":["status","operationId","expiresAt","reason"],"additionalProperties":{}},{"type":"null"}]}},"required":["domain","records","authentication","preparation"],"additionalProperties":{}},"CoreWebhookRotation":{"type":"object","properties":{"secret":{"type":"string"},"previousSecretValidForSeconds":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["secret","previousSecretValidForSeconds"],"additionalProperties":{}},"CoreEventCreated":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["id"],"additionalProperties":{}},"CoreWebhookHistory":{"type":"object","properties":{"deliveries":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"endpointId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventType":{"type":"string"},"status":{"type":"string","enum":["pending","processing","delivered","failed","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastError":{"type":["string","null"]},"nextAttemptAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","endpointId","projectId","eventId","eventType","status","attempts","lastStatus","lastError","nextAttemptAt","createdAt"],"additionalProperties":{}}},"attempts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deliveryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":["string","null"]},"durationMs":{"type":"number","minimum":0},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","deliveryId","attempt","status","error","durationMs","createdAt"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]}},"required":["deliveries","attempts","nextCursor"],"additionalProperties":{}},"CoreWebhookDeliveryDetail":{"type":"object","properties":{"delivery":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"endpointId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"projectId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"eventType":{"type":"string"},"status":{"type":"string","enum":["pending","processing","delivered","failed","cancelled"]},"attempts":{"type":"integer","minimum":0,"maximum":9007199254740991},"lastStatus":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"lastError":{"type":["string","null"]},"nextAttemptAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","endpointId","projectId","eventId","eventType","status","attempts","lastStatus","lastError","nextAttemptAt","createdAt"],"additionalProperties":{}},"attempts":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"deliveryId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"attempt":{"type":"integer","minimum":0,"maximum":9007199254740991},"status":{"anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"error":{"type":["string","null"]},"durationMs":{"type":"number","minimum":0},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["id","deliveryId","attempt","status","error","durationMs","createdAt"],"additionalProperties":{}}}},"required":["delivery","attempts"],"additionalProperties":{}},"CoreUsage":{"type":"object","properties":{"scope":{"type":"string","const":"project"},"environment":{"type":"string","enum":["test","live"]},"periodStart":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"periodEnd":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"simulatedRecipients":{"type":"integer","minimum":0,"maximum":9007199254740991},"usage":{"type":"array","items":{"type":"object","properties":{"kind":{"type":"string"},"state":{"type":"string"},"units":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["kind","state","units"],"additionalProperties":{}}},"projectLimits":{"type":"object","properties":{"daily":{"anyOf":[{"type":"integer","minimum":0,"maximum":9007199254740991},{"type":"null"}]},"monthly":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["daily","monthly"],"additionalProperties":{}}},"required":["scope","environment","periodStart","periodEnd","simulatedRecipients","usage","projectLimits"],"additionalProperties":{}},"CoreMetrics":{"type":"object","properties":{"scope":{"type":"string","const":"project"},"environment":{"type":"string","enum":["test","live"]},"range":{"type":"string","enum":["1h","6h","24h","7d"]},"simulated":{"type":"boolean"},"counts":{"type":"object","properties":{"total":{"type":"integer","minimum":0,"maximum":9007199254740991},"queued":{"type":"integer","minimum":0,"maximum":9007199254740991},"providerConfirmed":{"type":"integer","minimum":0,"maximum":9007199254740991},"accepted":{"type":"integer","minimum":0,"maximum":9007199254740991},"bounced":{"type":"integer","minimum":0,"maximum":9007199254740991},"complained":{"type":"integer","minimum":0,"maximum":9007199254740991},"failed":{"type":"integer","minimum":0,"maximum":9007199254740991},"uncertain":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["total","queued","providerConfirmed","accepted","bounced","complained","failed","uncertain"],"additionalProperties":{}},"queueLatencyMs":{"type":"object","properties":{"p50":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]},"p95":{"anyOf":[{"type":"number","minimum":0},{"type":"null"}]}},"required":["p50","p95"],"additionalProperties":{}},"acceptanceMeaning":{"type":"string"}},"required":["scope","environment","range","simulated","counts","queueLatencyMs","acceptanceMeaning"],"additionalProperties":{}},"CoreRequestLogPage":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"requestId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"method":{"type":"string"},"route":{"type":"string"},"status":{"type":"integer","minimum":100,"maximum":599},"durationMs":{"type":"number","minimum":0},"createdAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["requestId","method","route","status","durationMs","createdAt"],"additionalProperties":{}}},"nextCursor":{"type":["string","null"]},"retentionDays":{"type":"integer","minimum":0,"maximum":9007199254740991},"maximumRetainedPerProject":{"type":"integer","minimum":0,"maximum":9007199254740991}},"required":["data","nextCursor","retentionDays","maximumRetainedPerProject"],"additionalProperties":{}},"SdkListContactsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"subscribed":{"type":"boolean"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"email":{"type":"string"},"firstName":{"type":"string"},"lastName":{"type":"string"},"properties":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}}},"required":["id","subscribed","createdAt","updatedAt","email","properties"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["data","nextCursor"],"additionalProperties":false},"ContactInput":{"type":"object","properties":{"email":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"firstName":{"type":"string","maxLength":100},"lastName":{"type":"string","maxLength":100},"properties":{"default":{},"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"}]}},"subscribed":{"default":false,"type":"boolean"},"consent":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"wording":{"type":"string","minLength":1,"maxLength":4000},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source","wording","occurredAt"],"additionalProperties":false},"segmentIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"required":["email"],"additionalProperties":false},"Contact":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"firstName":{"type":"string"},"lastName":{"type":"string"},"properties":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"subscribed":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","email","properties","subscribed","createdAt","updatedAt"],"additionalProperties":false},"OperationSuccess":{"type":"object","properties":{"ok":{"const":true}},"required":["ok"],"additionalProperties":false},"ContactDetail":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"email":{"type":"string","format":"email"},"firstName":{"type":"string"},"lastName":{"type":"string"},"properties":{"type":"object","additionalProperties":{"type":["string","number","boolean"]}},"subscribed":{"type":"boolean"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"subscriptions":{"type":"array","items":{"type":"object","properties":{"topicId":{"type":"string","format":"uuid"},"subscribed":{"type":"boolean"}},"required":["topicId","subscribed"],"additionalProperties":false}},"segmentIds":{"type":"array","items":{"type":"string","format":"uuid"}}},"required":["id","email","properties","subscribed","createdAt","updatedAt","subscriptions","segmentIds"],"additionalProperties":false},"SdkListSegmentsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"count":{"type":"number"},"rules":{"type":"object","properties":{"match":{"enum":["all","any"]},"conditions":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"attribute"},"predicate":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string"},"operator":{"enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"required":["kind","field","operator"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"and"},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string"},"operator":{"enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"required":["kind","field","operator"],"additionalProperties":false},{},{"type":"object","properties":{"kind":{"type":"string","const":"or"},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string"},"operator":{"enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"required":["kind","field","operator"],"additionalProperties":false},{},{}]}}},"required":["kind","rules"],"additionalProperties":false}]}}},"required":["kind","rules"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"or"},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string"},"operator":{"enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"required":["kind","field","operator"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"and"},"rules":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string"},"operator":{"enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"required":["kind","field","operator"],"additionalProperties":false},{},{}]}}},"required":["kind","rules"],"additionalProperties":false},{}]}}},"required":["kind","rules"],"additionalProperties":false}]}},"required":["kind","predicate"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"event"},"name":{"type":"string"},"withinSeconds":{"type":"number"},"olderThanSeconds":{"type":"number"},"minimum":{"type":"number"},"maximum":{"type":"number"}},"required":["kind","name","withinSeconds","minimum"],"additionalProperties":false}]}}},"required":["match","conditions"],"additionalProperties":false},"evaluatedAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"refreshing":{"enum":[false,true]}},"required":["id","name","count"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"AudienceRules":{"type":"object","properties":{"match":{"type":"string","enum":["all","any"]},"conditions":{"minItems":1,"maxItems":10,"type":"array","items":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"attribute"},"predicate":{"$ref":"#/components/schemas/AudienceRules/$defs/__schema0"}},"required":["kind","predicate"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"event"},"name":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"withinSeconds":{"type":"integer","minimum":60,"maximum":2592000},"olderThanSeconds":{"type":"integer","minimum":0,"maximum":2591999},"minimum":{"type":"integer","minimum":0,"maximum":100000},"maximum":{"type":"integer","minimum":0,"maximum":100000}},"required":["kind","name","withinSeconds","minimum"],"additionalProperties":false}]}}},"required":["match","conditions"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"object","properties":{"kind":{"type":"string","const":"rule"},"field":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}(?:\\.[A-Za-z][A-Za-z0-9_]{0,63}){0,5}$"},"operator":{"type":"string","enum":["equals","not_equals","exists","gt","gte","lt","lte","contains","starts_with","ends_with","is_empty"]},"value":{"anyOf":[{"type":"string","maxLength":8192},{"type":"number"},{"type":"boolean"}]}},"required":["kind","field","operator"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","enum":["and","or"]},"rules":{"minItems":1,"maxItems":10,"type":"array","items":{"$ref":"#/components/schemas/AudienceRules/$defs/__schema0"}}},"required":["kind","rules"],"additionalProperties":false}]}}},"SdkListTopicsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"description":{"type":"string"},"defaultSubscribed":{"type":"boolean"},"public":{"type":"boolean"}},"required":["id","name","description","defaultSubscribed","public"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"ContactProperty":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"enum":["string","number","boolean","datetime"]},"fallback":{"type":["string","number","boolean"]}},"required":["id","name","type"],"additionalProperties":false},"SdkListBroadcastsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"revision":{"type":"number"},"status":{"enum":["paused","draft","scheduled","sending","completed","cancelled"]},"draft":{"type":"object","properties":{"experiment":{"type":"object","properties":{"kind":{"enum":["subject","content"]},"variantB":{"type":"object","properties":{"subject":{"type":"string"},"templateVersionId":{"type":"string"}},"required":[],"additionalProperties":false}},"required":["kind","variantB"],"additionalProperties":false},"goal":{"type":"object","properties":{"event":{"type":"string"},"windowSeconds":{"type":"number"}},"required":["event","windowSeconds"],"additionalProperties":false},"from":{"type":"string"},"replyTo":{"type":"string"},"templateVersionId":{"type":"string"},"variables":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"segmentIds":{"type":"array","items":{"type":"string"}},"topicId":{"type":"string"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}},"required":["from","templateVersionId","variables","segmentIds","tracking"],"additionalProperties":false},"scheduledAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"startedAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"reason":{"anyOf":[{"type":"null"},{"type":"string"}]},"counts":{"type":"object","additionalProperties":{"type":"number"}},"createdAt":{"type":"string"}},"required":["id","name","revision","status","draft","scheduledAt","startedAt","reason","counts","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"BroadcastDraft":{"type":"object","properties":{"experiment":{"oneOf":[{"type":"object","properties":{"kind":{"type":"string","const":"subject"},"variantB":{"type":"object","properties":{"subject":{"type":"string","minLength":1,"maxLength":998}},"required":["subject"],"additionalProperties":false}},"required":["kind","variantB"],"additionalProperties":false},{"type":"object","properties":{"kind":{"type":"string","const":"content"},"variantB":{"type":"object","properties":{"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["templateVersionId"],"additionalProperties":false}},"required":["kind","variantB"],"additionalProperties":false}]},"goal":{"type":"object","properties":{"event":{"type":"string","pattern":"^[a-z][a-z0-9_.-]{0,99}$"},"windowSeconds":{"type":"integer","minimum":60,"maximum":2592000}},"required":["event","windowSeconds"],"additionalProperties":false},"from":{"type":"string","minLength":3,"maxLength":320},"replyTo":{"type":"string","format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"templateVersionId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"variables":{"default":{},"type":"object","propertyNames":{"type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"additionalProperties":{"anyOf":[{"type":"string","maxLength":2000},{"type":"number"},{"type":"boolean"}]}},"segmentIds":{"minItems":1,"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"topicId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"tracking":{"default":{"opens":true,"clicks":true},"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}},"required":["from","templateVersionId","segmentIds"],"additionalProperties":false},"Broadcast":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"revision":{"type":"integer"},"status":{"enum":["draft","scheduled","sending","paused","completed","cancelled"]},"draft":{"$ref":"#/components/schemas/BroadcastDraft"},"scheduledAt":{"type":["string","null"]},"startedAt":{"type":["string","null"]},"reason":{"type":["string","null"]},"counts":{"type":"object","additionalProperties":{"type":"integer"}},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","revision","status","draft","scheduledAt","startedAt","reason","counts","createdAt"],"additionalProperties":false},"SdkUpdateBroadcastResult":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"revision":{"type":"number"},"status":{"enum":["paused","draft","scheduled","sending","completed","cancelled"]},"draft":{"type":"object","properties":{"experiment":{"type":"object","properties":{"kind":{"enum":["subject","content"]},"variantB":{"type":"object","properties":{"subject":{"type":"string"},"templateVersionId":{"type":"string"}},"required":[],"additionalProperties":false}},"required":["kind","variantB"],"additionalProperties":false},"goal":{"type":"object","properties":{"event":{"type":"string"},"windowSeconds":{"type":"number"}},"required":["event","windowSeconds"],"additionalProperties":false},"from":{"type":"string"},"replyTo":{"type":"string"},"templateVersionId":{"type":"string"},"variables":{"type":"object","additionalProperties":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean","const":false},{"type":"boolean","const":true}]}},"segmentIds":{"type":"array","items":{"type":"string"}},"topicId":{"type":"string"},"tracking":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}},"required":["from","templateVersionId","variables","segmentIds","tracking"],"additionalProperties":false},"scheduledAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"startedAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"reason":{"anyOf":[{"type":"null"},{"type":"string"}]},"counts":{"type":"object","additionalProperties":{"type":"number"}},"createdAt":{"type":"string"}},"required":["id","name","revision","status","draft","scheduledAt","startedAt","reason","counts","createdAt"],"additionalProperties":false},"CsvPage":{"type":"object","properties":{"csv":{"type":"string"},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["csv","nextCursor"],"additionalProperties":false},"ContactImportInput":{"type":"object","properties":{"provider":{"default":"generic","type":"string","enum":["generic","resend","postmark","mailchimp"]},"kind":{"default":"contacts","type":"string","enum":["contacts","suppressions"]},"csv":{"type":"string"},"mapping":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:email|firstName|lastName|subscribed|reason|properties\\.[A-Za-z][A-Za-z0-9_]{0,63})$"},"additionalProperties":{"type":"string","minLength":1,"maxLength":200}},"segmentIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"consent":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"wording":{"type":"string","minLength":1,"maxLength":4000},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source","wording","occurredAt"],"additionalProperties":false},"operationId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"required":["csv","operationId"],"additionalProperties":false},"SdkGetContactImportResult":{"type":"object","properties":{"id":{"type":"string"},"status":{"type":"string"},"total":{"type":"number"},"processed":{"type":"number"},"errors":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number"},"message":{"type":"string"}},"required":["row","message"],"additionalProperties":false}},"reason":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["id","status","total","processed","errors","reason"],"additionalProperties":false},"ContactImportPreviewInput":{"type":"object","properties":{"provider":{"default":"generic","type":"string","enum":["generic","resend","postmark","mailchimp"]},"kind":{"default":"contacts","type":"string","enum":["contacts","suppressions"]},"csv":{"type":"string"},"mapping":{"type":"object","propertyNames":{"type":"string","pattern":"^(?:email|firstName|lastName|subscribed|reason|properties\\.[A-Za-z][A-Za-z0-9_]{0,63})$"},"additionalProperties":{"type":"string","minLength":1,"maxLength":200}},"segmentIds":{"default":[],"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"consent":{"type":"object","properties":{"source":{"type":"string","minLength":1,"maxLength":200},"wording":{"type":"string","minLength":1,"maxLength":4000},"occurredAt":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"}},"required":["source","wording","occurredAt"],"additionalProperties":false}},"required":["csv"],"additionalProperties":false},"SdkPreviewContactImportResult":{"type":"object","properties":{"total":{"type":"number"},"headers":{"type":"array","items":{"type":"string"}},"preview":{"type":"array","items":{"type":"object","additionalProperties":{"type":"string"}}},"duplicateRows":{"type":"number"},"errors":{"type":"array","items":{"type":"object","properties":{"row":{"type":"number"},"message":{"type":"string"}},"required":["row","message"],"additionalProperties":false}},"willSendEmail":{"type":"boolean","const":false},"existingUnsubscribesPreserved":{"type":"boolean","const":true},"suggestedMapping":{"type":"object","additionalProperties":{"type":"string"}},"unsupportedColumns":{"type":"array","items":{"type":"string"}},"limitations":{"type":"array","items":{"type":"string"}},"kind":{"enum":["contacts","suppressions"]},"provider":{"enum":["generic","resend","postmark","mailchimp"]}},"required":["total","headers","preview","duplicateRows","errors","willSendEmail","existingUnsubscribesPreserved","suggestedMapping","unsupportedColumns","limitations","kind","provider"],"additionalProperties":false},"TrackingChoice":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false},"BroadcastRecipient":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"contactId":{"type":"string","format":"uuid"},"messageId":{"anyOf":[{"type":"string","format":"uuid"},{"type":"null"}]},"status":{"type":"string"},"reason":{"anyOf":[{"type":"string"},{"type":"null"}]},"deliveryStatus":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","contactId","messageId","status","reason","deliveryStatus"],"additionalProperties":false},"SdkListInboxesResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"projectId":{"type":"string"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"receivingDomainId":{"anyOf":[{"type":"null"},{"type":"string"}]},"createdAt":{"type":"string"}},"required":["id","projectId","environment","name","receivingDomainId","createdAt"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"Inbox":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"name":{"type":"string"},"receivingDomainId":{"type":["string","null"],"format":"uuid"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","projectId","environment","name","receivingDomainId","createdAt"],"additionalProperties":false},"SdkListInboxThreadsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"subject":{"type":"string"},"unread":{"type":"boolean"},"trashed":{"type":"boolean"},"lastReceivedAt":{"type":"string"},"labels":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"archived":{"enum":[false,true]},"snoozedUntil":{"anyOf":[{"type":"null"},{"type":"string"}]},"assigneeUserId":{"anyOf":[{"type":"null"},{"type":"string"}]},"revision":{"type":"number"}},"required":["id","subject","unread","trashed","lastReceivedAt","labels"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["data","nextCursor"],"additionalProperties":false},"InboxBulkUpdate":{"type":"object","properties":{"threads":{"minItems":1,"maxItems":100,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"required":["id","expectedRevision"],"additionalProperties":false}},"change":{"type":"object","properties":{"unread":{"type":"boolean"},"trashed":{"type":"boolean"},"archived":{"type":"boolean"},"snoozedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"assigneeUserId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"labelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"addLabelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"removeLabelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}}},"additionalProperties":false}},"required":["threads","change"],"additionalProperties":false},"InboxThreadUpdateResult":{"type":"object","properties":{"ok":{"const":true},"updated":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"revision":{"type":"integer"}},"required":["id","revision"],"additionalProperties":false}}},"required":["ok","updated"],"additionalProperties":false},"InboxLabel":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false},"SdkListInboxDraftsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"revision":{"type":"number"},"state":{"enum":["draft","sending","queued"]},"emailId":{"anyOf":[{"type":"null"},{"type":"string"}]},"threadId":{"anyOf":[{"type":"null"},{"type":"string"}]},"content":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"replyTo":{"type":"string"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string"},"content":{"type":"string"},"contentType":{"type":"string"}},"required":["filename","content","contentType"],"additionalProperties":false}}},"required":["from","to","subject"],"additionalProperties":false}},"required":["id","revision","state","emailId","content"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"InboxDraftContent":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string","format":"email"},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"replyTo":{"type":"string","format":"email"},"headers":{"type":"object","additionalProperties":{"type":"string"}},"attachments":{"type":"array","items":{"type":"object","properties":{"filename":{"type":"string"},"content":{"type":"string"},"contentType":{"type":"string"}},"required":["filename","content","contentType"],"additionalProperties":false}}},"required":["from","to","subject"],"additionalProperties":false},"InboxDraft":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"revision":{"type":"integer"},"state":{"enum":["draft","sending","queued"]},"emailId":{"type":["string","null"],"format":"uuid"},"content":{"$ref":"#/components/schemas/InboxDraftContent"}},"required":["id","revision","state","emailId","content"],"additionalProperties":false},"InboxSentMessage":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"threadId":{"type":"string","format":"uuid"},"from":{"type":"string"},"to":{"type":"array","items":{"type":"string"}},"subject":{"type":"string"},"text":{"type":"string"},"html":{"type":"string"},"bodyPurged":{"type":"boolean"},"state":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"simulated":{"type":"boolean"},"outcomes":{"type":"array","items":{"type":"object","properties":{"id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string"},"errorCode":{"type":["string","null"]}},"required":["id","status","errorCode"],"additionalProperties":false}}},"required":["id","threadId","from","to","subject","bodyPurged","state","createdAt","simulated","outcomes"],"additionalProperties":false},"InboxThreadUpdate":{"type":"object","properties":{"unread":{"type":"boolean"},"trashed":{"type":"boolean"},"archived":{"type":"boolean"},"snoozedUntil":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},{"type":"null"}]},"assigneeUserId":{"anyOf":[{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},{"type":"null"}]},"labelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"addLabelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"removeLabelIds":{"maxItems":50,"type":"array","items":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"}},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":2147483647}},"additionalProperties":false},"LogicalEmailResult":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"state":{"enum":["pending","processing","blocked","paused","queued","failed","cancelled","expired"]},"mode":{"enum":["demo","live"]},"recipientCount":{"type":"integer"},"processedRecipients":{"type":"integer"},"scheduledAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"revision":{"type":"integer"},"errorCode":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"deliveries":{"type":"array","items":{"type":"object","properties":{"index":{"type":"integer"},"id":{"type":["string","null"],"format":"uuid"},"status":{"type":"string"},"errorCode":{"type":["string","null"]}},"required":["index","id","status","errorCode"],"additionalProperties":false}}},"required":["id","state","mode","recipientCount","processedRecipients","scheduledAt","expiresAt","revision","errorCode","createdAt","updatedAt","deliveries"],"additionalProperties":true},"SdkGetTrackingSettingsResult":{"type":"object","properties":{"projectId":{"type":"string"},"environment":{"enum":["test","live"]},"revision":{"type":"number"},"transactional":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false},"marketing":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}},"required":["projectId","environment","revision","transactional","marketing"],"additionalProperties":false},"SdkUpdateTrackingSettingsResult":{"type":"object","properties":{"projectId":{"type":"string"},"environment":{"enum":["test","live"]},"revision":{"type":"number"},"transactional":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false},"marketing":{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}},"required":["projectId","environment","revision","transactional","marketing"],"additionalProperties":false},"SdkGetEngagementResult":{"type":"object","properties":{"generatedAt":{"type":"string"},"data":{"type":"array","items":{"type":"object","properties":{"messageId":{"type":"string"},"logicalEmailId":{"anyOf":[{"type":"null"},{"type":"string"}]},"recipient":{"type":"string"},"subject":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string"},"classification":{"enum":["transactional","marketing"]},"opens":{"type":"number"},"clicks":{"type":"number"},"suspectedAutomatedOpens":{"type":"number"},"suspectedAutomatedClicks":{"type":"number"},"tracking":{"anyOf":[{"type":"null"},{"type":"object","properties":{"opens":{"type":"boolean"},"clicks":{"type":"boolean"}},"required":["opens","clicks"],"additionalProperties":false}]},"uniqueClickedLinks":{"type":"number"},"firstActivityAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"lastActivityAt":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["messageId","logicalEmailId","recipient","subject","status","createdAt","classification","opens","clicks","suspectedAutomatedOpens","suspectedAutomatedClicks","tracking","uniqueClickedLinks","firstActivityAt","lastActivityAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"null"},{"type":"string"}]},"limitations":{"type":"string"}},"required":["generatedAt","data","nextCursor","limitations"],"additionalProperties":false},"SdkListSendingRegionsResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"region":{"type":"string"},"status":{"enum":["ready","simulated","paused","not_ready"]},"checkedAt":{"anyOf":[{"type":"null"},{"type":"string"}]},"reason":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["region","status","checkedAt","reason"],"additionalProperties":false}}},"required":["data"],"additionalProperties":false},"SdkWorkspaceGetWorkspaceResult":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"createdAt":{"type":"string"},"role":{"enum":["owner","admin"]}},"required":["id","name","createdAt","role"],"additionalProperties":false},"SdkWorkspaceListMembersResult":{"type":"object","properties":{"workspaceId":{"type":"string"},"members":{"type":"array","items":{"type":"object","properties":{"userId":{"type":"string"},"email":{"type":"string"},"role":{"enum":["owner","admin","member"]},"joinedAt":{"type":"string"}},"required":["userId","email","role","joinedAt"],"additionalProperties":false}}},"required":["workspaceId","members"],"additionalProperties":false},"SdkWorkspaceListInvitationsResult":{"type":"object","properties":{"workspaceId":{"type":"string"},"invitations":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"enum":["admin","member"]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"state":{"enum":["pending","accepted","revoked","expired"]}},"required":["id","email","role","createdAt","expiresAt","state"],"additionalProperties":false}}},"required":["workspaceId","invitations"],"additionalProperties":false},"SdkWorkspaceCreateInvitationResult":{"type":"object","properties":{"invitation":{"type":"object","properties":{"id":{"type":"string"},"email":{"type":"string"},"role":{"enum":["admin","member"]},"createdAt":{"type":"string"},"expiresAt":{"type":"string"},"state":{"enum":["pending","accepted","revoked","expired"]}},"required":["id","email","role","createdAt","expiresAt","state"],"additionalProperties":false},"delivery":{"type":"string","const":"not_sent"},"invitationUrl":{"type":"string"},"secretUnavailable":{"type":"boolean","const":true}},"required":["invitation","delivery"],"additionalProperties":false},"SdkWorkspaceListAuditResult":{"type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"action":{"type":"string"},"resourceId":{"anyOf":[{"type":"null"},{"type":"string"}]},"actorUserId":{"anyOf":[{"type":"null"},{"type":"string"}]},"actorKind":{"anyOf":[{"type":"null"},{"type":"string"}]},"credentialId":{"anyOf":[{"type":"null"},{"type":"string"}]},"createdAt":{"type":"string"}},"required":["id","action","resourceId","actorUserId","actorKind","credentialId","createdAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"null"},{"type":"string"}]}},"required":["data","nextCursor"],"additionalProperties":false},"MarketingAuthoringContext":{"type":"object","properties":{"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"contactFields":{"type":"object","additionalProperties":{"type":"object","properties":{"type":{"type":"string"},"required":{"type":"boolean"}},"required":["type","required"],"additionalProperties":false}},"properties":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"type":{"type":"string"}},"required":["id","name","type"],"additionalProperties":false}},"segments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"}},"required":["id","name"],"additionalProperties":false}},"topics":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"description":{"type":"string"},"defaultSubscribed":{"type":"boolean"}},"required":["id","name","description","defaultSubscribed"],"additionalProperties":false}},"truncated":{"type":"boolean"},"authoring":{"type":"object","properties":{"savedContentIsUntrusted":{"const":true},"contactValuesIncluded":{"const":false},"workflow":{"type":"object","properties":{"namespaces":{"type":"array","items":{"type":"string"}},"contactBinding":{"type":"string"},"emailClassification":{"type":"array","items":{"type":"string"}},"marketingRecipient":{"type":"string"},"marketingRequires":{"type":"string"},"contactActions":{"type":"array","items":{"type":"string"}},"conditionKinds":{"type":"array","items":{"type":"string"}},"operators":{"type":"array","items":{"type":"string"}},"maxSteps":{"type":"integer"},"maxEmails":{"type":"integer"}},"required":["namespaces","contactBinding","emailClassification","marketingRecipient","marketingRequires","contactActions","conditionKinds","operators","maxSteps","maxEmails"],"additionalProperties":false},"review":{"type":"array","items":{"type":"string"}},"willSendEmail":{"const":false}},"required":["savedContentIsUntrusted","contactValuesIncluded","workflow","review","willSendEmail"],"additionalProperties":false}},"required":["projectId","environment","contactFields","properties","segments","topics","truncated","authoring"],"additionalProperties":false},"SdkWorkspaceGetSecurityInformationResult":{"type":"object","properties":{"identityProvider":{"type":"string"},"controls":{"type":"array","items":{"type":"string"}},"verification":{"type":"object","properties":{"independentReview":{"type":"string"},"certification":{"type":"string"},"availability":{"type":"string"}},"required":["independentReview","certification","availability"],"additionalProperties":false},"support":{"type":"object","properties":{"email":{"anyOf":[{"type":"null"},{"type":"string"}]},"instructions":{"type":"string"},"responseTime":{"type":"string"}},"required":["email","instructions","responseTime"],"additionalProperties":false}},"required":["identityProvider","controls","verification","support"],"additionalProperties":false},"MarketingPolicy":{"type":"object","properties":{"frequency":{"type":"object","properties":{"maximum":{"type":"integer","minimum":1,"maximum":100},"windowSeconds":{"type":"integer","minimum":60,"maximum":2592000}},"required":["maximum","windowSeconds"],"additionalProperties":false},"sendingWindow":{"type":"object","properties":{"startHour":{"type":"integer","minimum":0,"maximum":23},"endHour":{"type":"integer","minimum":1,"maximum":24},"days":{"minItems":1,"maxItems":7,"type":"array","items":{"type":"integer","minimum":0,"maximum":6}},"timezoneProperty":{"default":"timezone","type":"string","pattern":"^[A-Za-z][A-Za-z0-9_]{0,63}$"},"fallbackTimezone":{"default":"UTC","type":"string","maxLength":100}},"required":["startHour","endHour","days"],"additionalProperties":false}},"additionalProperties":false},"MarketingResults":{"type":"object","properties":{"data":{"type":"array","maxItems":200,"items":{"$ref":"#/components/schemas/MarketingResultRow"}},"truncated":{"type":"boolean"},"traffic":{"type":"array","items":{"type":"object","properties":{"classification":{"enum":["transactional","marketing"]},"total":{"type":"integer"},"queued":{"type":"integer"},"accepted":{"type":"integer"},"bounced":{"type":"integer"},"complained":{"type":"integer"},"failed":{"type":"integer"},"uncertain":{"type":"integer"}},"required":["classification","total","queued","accepted","bounced","complained","failed","uncertain"],"additionalProperties":false}},"separation":{"type":"object","properties":{"status":{"enum":["simulated","shared","awaiting_verification","verified"]},"verifiedAt":{"type":["string","null"],"format":"date-time"}},"required":["status","verifiedAt"],"additionalProperties":false},"limitations":{"type":"string"}},"required":["data","truncated","traffic","separation","limitations"],"additionalProperties":false},"MarketingResultRow":{"type":"object","properties":{"broadcastId":{"type":"string","format":"uuid"},"name":{"type":"string"},"variant":{"enum":["A","B","pending"]},"recipients":{"type":"integer"},"queued":{"type":"integer"},"accepted":{"type":"integer"},"bounced":{"type":"integer"},"conversions":{"type":"integer"},"clicks":{"type":"integer"},"suspectedAutomated":{"type":"integer"},"unsubscribes":{"type":"integer"},"complaints":{"type":"integer"}},"required":["broadcastId","name","variant","recipients","queued","accepted","bounced","conversions","clicks","suspectedAutomated","unsubscribes","complaints"],"additionalProperties":false},"ContactProfile":{"type":"object","properties":{"events":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"occurredAt":{"type":"string","format":"date-time"},"receivedAt":{"type":"string","format":"date-time"}},"required":["id","name","occurredAt","receivedAt"],"additionalProperties":false}},"workflows":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"name":{"type":"string"},"status":{"type":"string"},"reason":{"type":["string","null"]},"createdAt":{"type":"string","format":"date-time"}},"required":["id","name","status","reason","createdAt"],"additionalProperties":false}},"messages":{"type":"array","maxItems":100,"items":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"subject":{"type":"string"},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"}},"required":["id","subject","status","createdAt"],"additionalProperties":false}},"limitations":{"type":"string"}},"required":["events","workflows","messages","limitations"],"additionalProperties":false},"MarketingForm":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"revision":{"type":"integer"},"name":{"type":"string"},"description":{"type":"string"},"consentWording":{"type":"string"},"topicId":{"type":"string","format":"uuid"},"doubleOptIn":{"type":"boolean"},"from":{"type":"string"},"active":{"type":"boolean"},"url":{"type":"string"},"embed":{"type":"string"}},"required":["id","revision","name","description","consentWording","doubleOptIn","from","active","url","embed"],"additionalProperties":false},"MarketingFormInput":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":80},"description":{"default":"","type":"string","maxLength":500},"consentWording":{"type":"string","minLength":1,"maxLength":1000},"topicId":{"type":"string","format":"uuid","pattern":"^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"},"doubleOptIn":{"default":true,"type":"boolean"},"from":{"type":"string","maxLength":254,"format":"email","pattern":"^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"},"active":{"default":false,"type":"boolean"},"expectedRevision":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991}},"required":["name","consentWording","from"],"additionalProperties":false},"RelaySession":{"type":"object","properties":{"id":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"status":{"enum":["active","closed","paused","expired","revoked"]},"createdAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"},"queuedEvents":{"type":"integer","minimum":0,"maximum":9007199254740991},"queuedBytes":{"type":"integer","minimum":0,"maximum":9007199254740991},"acknowledgedSequence":{"type":"string","pattern":"^[0-9]+$"},"overflowEvents":{"type":"integer","minimum":0,"maximum":9007199254740991},"expiredEvents":{"type":"integer","minimum":0,"maximum":9007199254740991},"restored":{"type":"boolean"}},"required":["id","workspaceId","projectId","environment","status","createdAt","expiresAt","queuedEvents","queuedBytes","acknowledgedSequence","overflowEvents","expiredEvents","restored"],"additionalProperties":false},"RelayTicket":{"type":"object","properties":{"ticket":{"type":"string"},"url":{"type":"string"},"expiresAt":{"type":"string","format":"date-time"}},"required":["ticket","url","expiresAt"],"additionalProperties":false},"ApiKeyCapability":{"type":"string","enum":["email:send","email:read","email:write","domains:read","domains:write","keys:read","keys:write","suppressions:read","suppressions:write","webhooks:read","webhooks:write","webhooks:listen","webhooks:listen-live","usage:read","metrics:read","tracking:read","tracking:write","request-logs:read","attachments:read","attachments:write","marketing:read","marketing:write","marketing:send","inboxes:read","inboxes:write","inboxes:send","receiving:read","smtp:send","events:write","templates:read","templates:write","templates:use","workflows:read","workflows:write","runs:read","runs:write"]},"CliAuthorizationStart":{"type":"object","properties":{"deviceCode":{"type":"string"},"userCode":{"type":"string"},"verificationUri":{"const":"/app?panel=cli-toolkit"},"environment":{"enum":["test","live"]},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyCapability"}},"expiresAt":{"type":"string","format":"date-time"},"interval":{"const":5}},"required":["deviceCode","userCode","verificationUri","environment","capabilities","expiresAt","interval"],"additionalProperties":false},"CliAuthorizationPoll":{"oneOf":[{"type":"object","properties":{"status":{"enum":["pending","slow_down","denied","expired","consumed"]},"interval":{"const":5}},"required":["status","interval"],"additionalProperties":false},{"type":"object","properties":{"status":{"const":"approved"},"interval":{"const":5},"token":{"type":"string"},"credentialId":{"type":"string","format":"uuid"},"workspaceId":{"type":"string","format":"uuid"},"projectId":{"type":"string","format":"uuid"},"environment":{"enum":["test","live"]},"capabilities":{"type":"array","items":{"$ref":"#/components/schemas/ApiKeyCapability"}},"kind":{"const":"project"},"expiresAt":{"type":"string","format":"date-time"}},"required":["status","interval","token","credentialId","workspaceId","projectId","environment","capabilities","kind","expiresAt"],"additionalProperties":false}]}}}}
