{"components":{"securitySchemes":{"bearer":{"description":"API key (vr_…)","scheme":"bearer","type":"http"}}},"info":{"description":"WhatsApp gateway API. Full guide: /docs. Errors: {ok:false, code, error}. Webhooks are signed with X-Signature: sha256=HMAC(secret, timestamp + '.' + body).","title":"Vivid Relay API","version":"95d829b"},"openapi":"3.0.3","paths":{"/api/autoreplies":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Auto-reply rules","tags":["Automation"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create rule","tags":["Automation"]}},"/api/autoreplies/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete rule","tags":["Automation"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Update rule","tags":["Automation"]}},"/api/campaigns":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"List campaigns","tags":["Campaigns"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create {name, sessions[], message, audience, schedule?, speed?}","tags":["Campaigns"]}},"/api/campaigns/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete campaign","tags":["Campaigns"]},"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Campaign with stats","tags":["Campaigns"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Edit draft/scheduled campaign","tags":["Campaigns"]}},"/api/campaigns/{id}/report.csv":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Report CSV","tags":["Campaigns"]}},"/api/campaigns/{id}/{action}":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}},{"in":"path","name":"action","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"pause | resume | cancel | duplicate | run-now","tags":["Campaigns"]}},"/api/contacts":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Search contacts (?q=\u0026tag=\u0026page=\u0026limit=)","tags":["Contacts"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create/update by phone","tags":["Contacts"]}},"/api/contacts/bulk":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Bulk tag/opt-out/delete {ids[], action, tag?}","tags":["Contacts"]}},"/api/contacts/export.csv":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Export CSV","tags":["Contacts"]}},"/api/contacts/import":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Import CSV (multipart file) or JSON rows","tags":["Contacts"]}},"/api/contacts/tags":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Tags with counts","tags":["Contacts"]}},"/api/contacts/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete contact","tags":["Contacts"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Update contact","tags":["Contacts"]}},"/api/keys":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"List API keys","tags":["Developer"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create API key {name}","tags":["Developer"]}},"/api/keys/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Revoke API key","tags":["Developer"]}},"/api/licence":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Licence and usage","tags":["Account"]}},"/api/licence/redeem":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Redeem a licence key {key}","tags":["Account"]}},"/api/link-preview":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Check a link's preview card (?url=\u0026session=\u0026fresh=1)","tags":["Messages"]}},"/api/me":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Current user, licence and usage","tags":["Account"]}},"/api/media":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Media library","tags":["Media"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Upload (multipart file)","tags":["Media"]}},"/api/media/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete file","tags":["Media"]}},"/api/media/{id}/file":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Download file","tags":["Media"]}},"/api/optouts":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Opt-out list","tags":["Contacts"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Add opt-outs {numbers[]}","tags":["Contacts"]}},"/api/optouts/{phone}":{"delete":{"parameters":[{"in":"path","name":"phone","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Remove opt-out","tags":["Contacts"]}},"/api/queue":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Queue over several numbers {pool[], …}","tags":["Messages"]}},"/api/queue/{id}":{"get":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"One queued message","tags":["Messages"]}},"/api/sessions":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"List numbers","tags":["Numbers"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Add a number {label}","tags":["Numbers"]}},"/api/sessions/{name}":{"delete":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Remove number","tags":["Numbers"]},"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Number details","tags":["Numbers"]},"patch":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Update label, webhook_url, paused, proxy, settings","tags":["Numbers"]}},"/api/sessions/{name}/channels":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Channels you follow/own","tags":["Channels"]},"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create channel {name, description}","tags":["Channels"]}},"/api/sessions/{name}/channels/resolve":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Channel from invite link (?invite=)","tags":["Channels"]}},"/api/sessions/{name}/check":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Check numbers on WhatsApp {numbers[]}","tags":["Messages"]}},"/api/sessions/{name}/delete":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete for everyone {chat, id, sender?}","tags":["Messages"]}},"/api/sessions/{name}/edit":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Edit {chat, id, text}","tags":["Messages"]}},"/api/sessions/{name}/groups":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Groups and communities","tags":["Groups"]},"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create group/community {name, participants[], community?}","tags":["Groups"]}},"/api/sessions/{name}/groups/join":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Join by invite link {link}","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Group info and participants","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}/invite":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Invite link (?reset=1)","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}/leave":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Leave group","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}/participants":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Add/remove/promote/demote {action, participants[]}","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}/save-contacts":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Save members as contacts {tag}","tags":["Groups"]}},"/api/sessions/{name}/groups/{jid}/settings":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}},{"in":"path","name":"jid","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Name, topic, announce_only, locked","tags":["Groups"]}},"/api/sessions/{name}/logout":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Unlink","tags":["Numbers"]}},"/api/sessions/{name}/pair-code":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Link with a code {phone}","tags":["Numbers"]}},"/api/sessions/{name}/proxy-test":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Test a proxy {proxy}","tags":["Numbers"]}},"/api/sessions/{name}/qr":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Current QR (poll every 3s)","tags":["Numbers"]},"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Start QR linking","tags":["Numbers"]}},"/api/sessions/{name}/queue":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Queue counts for a number","tags":["Messages"]},"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Queue bulk messages safely {messages[] | template+recipients[]}","tags":["Messages"]}},"/api/sessions/{name}/react":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"React {chat, id, sender?, emoji}","tags":["Messages"]}},"/api/sessions/{name}/read":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Mark read {chat, ids[]}","tags":["Messages"]}},"/api/sessions/{name}/reconnect":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Reconnect","tags":["Numbers"]}},"/api/sessions/{name}/send":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Send now: {to, text | media | poll | location | contact | menu}","tags":["Messages"]}},"/api/sessions/{name}/status":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Post WhatsApp Status {text | media, background?, status_audience?}","tags":["Messages"]}},"/api/sessions/{name}/typing":{"post":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Typing indicator {to, state}","tags":["Messages"]}},"/api/sessions/{name}/wa-contacts":{"get":{"parameters":[{"in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"The linked phone's WhatsApp contacts (saved + unsaved), A to Z","tags":["Contacts"]}},"/api/stats":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Daily sent/failed/received (?days=14)","tags":["Account"]}},"/api/templates":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"List templates","tags":["Templates"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create template {name, message}","tags":["Templates"]}},"/api/templates/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete template","tags":["Templates"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Update template","tags":["Templates"]}},"/api/webhooks":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"List webhooks","tags":["Developer"]},"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Create webhook {url, events[]}","tags":["Developer"]}},"/api/webhooks/{id}":{"delete":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Delete webhook","tags":["Developer"]},"patch":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Update webhook","tags":["Developer"]}},"/api/webhooks/{id}/test":{"post":{"parameters":[{"in":"path","name":"id","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"summary":"Send a test event","tags":["Developer"]}},"/health":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"security":[],"summary":"Health check","tags":["Public"]}},"/public/contact":{"post":{"requestBody":{"content":{"application/json":{"schema":{"type":"object"}}}},"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"security":[],"summary":"Contact form","tags":["Public"]}},"/public/plans":{"get":{"responses":{"200":{"description":"`{ok:true, …}`"},"default":{"description":"`{ok:false, code, error}`"}},"security":[],"summary":"Public plans","tags":["Public"]}}},"security":[{"bearer":[]}],"servers":[{"url":"https://relay.vividbrandify.com"}]}
