{"manifestVersion":"1","app":{"name":"notifier","version":"1.30.0","status":"live"},"actions":[{"id":"system.notifier.messages.get.v1","title":"One message’s status and event trail, scoped to the caller’s org (D8).","route":"/api/v1/messages/$id","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orgId":{"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)$"},"id":{"type":"string","pattern":"^msg_[0-9A-Za-z]{22}$"}},"required":["orgId","id"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"message":{"type":"object","properties":{"id":{"type":"string","pattern":"^msg_[0-9A-Za-z]{22}$"},"channel":{"type":"string","enum":["email","sms","voice"]},"status":{"type":"string"},"recipientAddress":{"anyOf":[{"type":"string"},{"type":"null"}]},"notificationId":{"type":"string","pattern":"^ntf_[0-9A-Za-z]{22}$"},"scheduledFor":{"type":"string"},"createdAt":{"type":"string"},"updatedAt":{"type":"string"},"lastError":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["id","channel","status","recipientAddress","notificationId","scheduledFor","createdAt","updatedAt","lastError"],"additionalProperties":false},"events":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"kind":{"type":"string"},"occurredAt":{"type":"string"},"detail":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"null"}]}},"required":["id","kind","occurredAt","detail"],"additionalProperties":false}}},"required":["message","events"],"additionalProperties":false}},{"id":"system.notifier.messages.send.v1","title":"Enqueue one message on a channel. Replies with an ack; the send is durable on the work stream.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"channel":{"type":"string","enum":["email","sms","voice"]},"orgId":{"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)$"},"idempotencyKey":{"type":"string","minLength":1,"maxLength":255},"to":{"type":"string","minLength":1},"subject":{"type":"string"},"html":{"type":"string"},"text":{"type":"string"},"attachments":{"maxItems":10,"type":"array","items":{"type":"object","properties":{"filename":{"type":"string","minLength":1},"url":{"type":"string","format":"uri"},"content_type":{"type":"string"}},"required":["filename","url"],"additionalProperties":false}},"body":{"type":"string","minLength":1},"voiceId":{"type":"string","minLength":1},"audioUrl":{"type":"string","format":"uri"},"callerId":{"type":"string","minLength":1},"retry":{"type":"integer","minimum":0,"maximum":5}},"required":["channel","orgId","idempotencyKey","to"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean","const":true},"duplicate":{"type":"boolean"},"notificationId":{"type":"string","pattern":"^ntf_[0-9A-Za-z]{22}$"},"messageId":{"type":"string","pattern":"^msg_[0-9A-Za-z]{22}$"},"status":{"type":"string","const":"queued"}},"required":["accepted","duplicate","notificationId","messageId","status"],"additionalProperties":false}},{"id":"system.notifier.notices.send.v1","title":"Send an unbilled operational notice about a tenant, to that tenant. notifier resolves the audience. A caller sends only its own app’s kinds; extraRecipients (support only) are addresses the caller has already verified for that owner, and notifier forgets them once the notice is sent or failed.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"ownerType":{"type":"string","enum":["org","user"]},"ownerId":{"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)$"},"kind":{"type":"string","enum":["storage.quota.warning","support.ticket.replied","support.ticket.status","support.ticket.requester-replied","support.ticket.assigned","support.email.verify"]},"idempotencyKey":{"type":"string","minLength":1,"maxLength":255},"params":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":40},"additionalProperties":{"anyOf":[{"type":"string","maxLength":1000},{"type":"number"}]}},"extraRecipients":{"maxItems":3,"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-z]{2,}$"}}},"required":["ownerType","ownerId","kind","idempotencyKey","params"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean","const":true},"duplicate":{"type":"boolean"}},"required":["accepted","duplicate"],"additionalProperties":false}},{"id":"system.notifier.templates.list.v1","title":"Page of template identities (id, name, channel, updatedAt) for one org. No body.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orgId":{"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)$"},"channel":{"type":"string","enum":["email","sms","voice"]},"cursor":{"type":"string","minLength":1,"maxLength":512},"pageSize":{"type":"integer","minimum":1,"maximum":200}},"required":["orgId"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"templates":{"maxItems":200,"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^(etpl|stpl|vtpl)_[0-9A-Za-z]{22}$"},"name":{"type":"string"},"channel":{"type":"string","enum":["email","sms","voice"]},"updatedAt":{"type":"string"}},"required":["id","name","channel","updatedAt"],"additionalProperties":false}},"nextCursor":{"anyOf":[{"type":"string"},{"type":"null"}]}},"required":["templates","nextCursor"],"additionalProperties":false}},{"id":"system.notifier.templates.send.v1","title":"Enqueue one message rendered from an org template. Ack only; send is on the work stream.","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"orgId":{"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)$"},"templateId":{"type":"string","pattern":"^(etpl|stpl|vtpl)_[0-9A-Za-z]{22}$"},"channel":{"type":"string","enum":["email","sms","voice"]},"to":{"type":"string","minLength":1},"variables":{"type":"object","propertyNames":{"type":"string","minLength":1,"maxLength":64},"additionalProperties":{"type":"string","maxLength":4096}},"idempotencyKey":{"type":"string","minLength":1,"maxLength":255}},"required":["orgId","templateId","channel","to","variables","idempotencyKey"],"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"accepted":{"type":"boolean","const":true},"duplicate":{"type":"boolean"},"notificationId":{"type":"string","pattern":"^ntf_[0-9A-Za-z]{22}$"},"messageId":{"type":"string","pattern":"^msg_[0-9A-Za-z]{22}$"},"status":{"type":"string","const":"queued"}},"required":["accepted","duplicate","notificationId","messageId","status"],"additionalProperties":false}},{"id":"system.notifier.wellknown.capabilities.v1","title":"The notifier capabilities manifest: metadata, callable actions with schemas, public routes, emitted events, and model field catalogs. Public metadata only — a manifest never carries tenant rows.","route":"/.well-known/capabilities","inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{},"additionalProperties":false},"outputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"manifestVersion":{"type":"string","const":"1"},"app":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z0-9]+(-[a-z0-9]+)*$"},"version":{"type":"string","minLength":1},"status":{"type":"string","enum":["live","degraded"]}},"required":["name","version","status"],"additionalProperties":false},"actions":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","pattern":"^system\\.[a-z0-9]+(-[a-z0-9]+)*\\.[a-z0-9]+(-[a-z0-9]+)*\\.[a-z0-9]+(-[a-z0-9]+)*\\.v[1-9][0-9]*$"},"title":{"type":"string","minLength":1},"route":{"type":"string","pattern":"^\\/"},"inputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"outputSchema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["id","title","inputSchema","outputSchema"],"additionalProperties":false}},"functionalities":{"type":"object","properties":{"publicRoutes":{"type":"array","items":{"type":"string","pattern":"^\\/"}},"auth":{"type":"object","properties":{"issuer":{"type":"string","format":"uri"},"authorizationEndpoint":{"type":"string","format":"uri"},"tokenEndpoint":{"type":"string","format":"uri"},"jwksUri":{"type":"string","format":"uri"}},"required":["issuer"],"additionalProperties":false},"webhooks":{"type":"array","items":{"type":"string","minLength":1}}},"required":["publicRoutes","webhooks"],"additionalProperties":false},"events":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","pattern":"^[a-z0-9][a-z0-9.-]*[a-z0-9]$"},"title":{"type":"string","minLength":1},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}}},"required":["name","title","schema"],"additionalProperties":false}},"models":{"type":"object","propertyNames":{"type":"string","minLength":1},"additionalProperties":{"type":"object","properties":{"title":{"type":"string","minLength":1},"schema":{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},"excluded":{"type":"array","items":{"type":"string","minLength":1}}},"required":["title","schema","excluded"],"additionalProperties":false}}},"required":["manifestVersion","app","actions","functionalities","events"],"additionalProperties":false}}],"functionalities":{"publicRoutes":["/unsubscribe/$token","/media/public/$assetId"],"webhooks":["/webhooks/$vendor"]},"events":[{"name":"notifier.note.created","title":"notifier: note created","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"noteId":{"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)$"},"ownerType":{"type":"string","enum":["org","user"]},"ownerId":{"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)$"},"title":{"type":"string"}},"required":["noteId","ownerType","ownerId","title"],"additionalProperties":false}},{"name":"notifier.audit.recorded","title":"notifier: audit recorded","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"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)$"},"occurredAt":{"type":"integer","exclusiveMinimum":0,"maximum":9007199254740991},"orgId":{"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"}]},"actorUserId":{"anyOf":[{"type":"string","minLength":1,"maxLength":255},{"type":"null"}]},"actorKind":{"type":"string","enum":["user","api_key","service","system"]},"action":{"type":"string","minLength":1,"maxLength":160},"targetKind":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"targetId":{"anyOf":[{"type":"string","maxLength":255},{"type":"null"}]},"outcome":{"type":"string","enum":["success","failure"]},"ip":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}]},"userAgent":{"anyOf":[{"type":"string","maxLength":512},{"type":"null"}]},"requestId":{"anyOf":[{"type":"string","maxLength":128},{"type":"null"}]},"metadata":{"anyOf":[{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}},{"type":"null"}]}},"required":["eventId","occurredAt","orgId","actorUserId","actorKind","action","targetKind","targetId","outcome","ip","userAgent","requestId","metadata"],"additionalProperties":false,"$defs":{"__schema0":{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"},{"type":"array","items":{"$ref":"#/$defs/__schema0"}},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{"$ref":"#/$defs/__schema0"}}]}}}}],"models":{"campaign":{"title":"Campaign fields safe to show to workflow builders","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"workflowId":{"type":"string"},"workflowVersionId":{"type":"string"},"name":{"type":"string"},"peopleListIds":{"anyOf":[{"anyOf":[{"type":"string"},{"type":"number"},{"type":"boolean"},{"type":"null"}]},{"type":"object","propertyNames":{"type":"string"},"additionalProperties":{}},{"type":"array","items":{}}]},"scheduledFor":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"},"startedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"finishedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]}},"required":["id","workflowId","workflowVersionId","name","peopleListIds","scheduledFor","status","createdAt","updatedAt","startedAt","finishedAt"],"additionalProperties":false},"excluded":["orgId","ownerType","ownerId","createdBy","orgName","audienceCondition","statsCached","variables","variableBindings","variableFallbacks","variableEmptyPolicies"]},"message":{"title":"Message fields safe to show to workflow builders","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"notificationId":{"type":"string"},"workflowStepId":{"anyOf":[{"type":"string"},{"type":"null"}]},"channel":{"type":"string"},"status":{"type":"string"},"scheduledFor":{"type":"string","format":"date-time"},"nextPollAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"pollAttempts":{"type":"integer","minimum":-2147483648,"maximum":2147483647},"pollUntil":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"sentAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"deliveredAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"failedAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}]},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","notificationId","workflowStepId","channel","status","scheduledFor","nextPollAt","pollAttempts","pollUntil","sentAt","deliveredAt","failedAt","createdAt","updatedAt"],"additionalProperties":false},"excluded":["orgId","ownerType","ownerId","subscriberId","recipientAddress","templateVariantSnapshot","providerId","vendorMessageId","vendorTrackId","billingHeldCents","lastError","lastErrorKind","lastErrorDetail"]},"workflow":{"title":"Workflow fields safe to show to workflow builders","schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"id":{"type":"string"},"triggerKey":{"type":"string"},"name":{"type":"string"},"description":{"anyOf":[{"type":"string"},{"type":"null"}]},"currentVersionId":{"anyOf":[{"type":"string"},{"type":"null"}]},"status":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"updatedAt":{"type":"string","format":"date-time"}},"required":["id","triggerKey","name","description","currentVersionId","status","createdAt","updatedAt"],"additionalProperties":false},"excluded":["orgId","ownerType","ownerId"]}}}