{"info":{"version":"1.0.0","description":"Public API for trigger ingestion and message status lookup.","title":"Vext Public API"},"components":{"schemas":{"ProblemDetailsResponse":{"type":"object","required":["type","title","status","detail","instance"],"properties":{"status":{"type":"integer"},"type":{"type":"string"},"instance":{"type":"string"},"title":{"type":"string"},"detail":{"type":"string"}}},"PublicAcceptedResponse":{"type":"object","required":["status","workflow_id"],"properties":{"status":{"type":"string","enum":["accepted"]},"workflow_id":{"type":"string"}}},"PublicMessageStatusResponse":{"type":"object","required":["message_id","status","sent_at"],"properties":{"status":{"type":"string"},"message_id":{"type":"string"},"sent_at":{"type":["string","null"],"format":"date-time"}}},"PublicTriggerErrorResponse":{"type":"object","required":["status","error"],"properties":{"error":{"type":"string","enum":["invalid_payload","insufficient_credits","trigger_dispatch_failed","internal_server_error"]},"reason":{"type":"string"},"status":{"type":"string","enum":["error"]},"node_id":{"type":"string"},"workflow_id":{"type":"string"}}},"PublicTriggerRequest":{"type":"object","description":"Trigger payload. Authentication is required with `Authorization: Bearer <token>`. Legacy `token` field in body is ignored if present.","additionalProperties":true,"properties":{"message":{"type":"string","description":"Message body (max 4096 chars)","maxLength":4096},"name":{"type":"string","description":"Contact/display name"},"metadata":{"type":"object","additionalProperties":true},"token":{"type":"string","description":"Legacy token field (ignored)"},"to":{"type":"string","description":"Destination phone/JID"},"channel":{"type":"string","description":"Target channel (optional)"},"device_id":{"type":"string","description":"Optional target session/device id"},"phone":{"type":"string","description":"Destination phone/JID (alias of `to`)"},"trigger_type":{"type":"string","description":"Optional trigger source/type label"}}},"SimpleErrorResponse":{"type":"object","required":["error"],"properties":{"error":{"type":"string"}}}}},"tags":[{"name":"Triggers","description":"Event trigger ingestion endpoints"},{"name":"Messages","description":"Message delivery status endpoints"}],"paths":{"/api/v1/messages/{id}":{"get":{"parameters":[{"in":"path","name":"id","description":"Message ID","required":true,"schema":{"type":"string"}}],"tags":["Messages"],"summary":"Fetch message status by message id","responses":{"200":{"description":"Message status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicMessageStatusResponse"}}}},"404":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimpleErrorResponse"}}}}},"operationId":"publicMessageStatus"}},"/api/v1/send":{"post":{"tags":["Triggers"],"summary":"Backward-compatible alias for /api/v1/triggers/events","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAcceptedResponse"}}}},"401":{"description":"Unauthorized (missing/malformed Authorization header, invalid or expired token, unknown token type, missing workflow claim)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"402":{"description":"Insufficient credits for workflow dispatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"403":{"description":"Workflow is not active","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"422":{"description":"Invalid payload (missing/invalid phone, invalid message type, message too long)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"500":{"description":"Unexpected internal error (including transient DB/runtime failures)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"503":{"description":"No runner available or dispatch failure (worker/session/runtime unavailable)","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetailsResponse"},{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}]}}}}},"operationId":"publicSendAlias","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerRequest"}}}}}},"/api/v1/triggers/events":{"post":{"tags":["Triggers"],"summary":"Ingest trigger event","responses":{"202":{"description":"Accepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicAcceptedResponse"}}}},"401":{"description":"Unauthorized (missing/malformed Authorization header, invalid or expired token, unknown token type, missing workflow claim)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"402":{"description":"Insufficient credits for workflow dispatch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"403":{"description":"Workflow is not active","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"404":{"description":"Workflow not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemDetailsResponse"}}}},"422":{"description":"Invalid payload (missing/invalid phone, invalid message type, message too long)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"500":{"description":"Unexpected internal error (including transient DB/runtime failures)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}}}},"503":{"description":"No runner available or dispatch failure (worker/session/runtime unavailable)","content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ProblemDetailsResponse"},{"$ref":"#/components/schemas/PublicTriggerErrorResponse"}]}}}}},"operationId":"publicTriggerEvents","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PublicTriggerRequest"}}}}}}},"openapi":"3.2.0","servers":[{"url":"/"}]}