Create a channel
const url = 'http://api.disclosebot.localdev:3000/v1/channels';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"data":{"type":"channel","attributes":{"name":"example","short_description":"example","enabled":true,"prefilter_query":{"q":{"additionalProperty":["2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"]},"results":{"additionalProperty":{"additionalProperty":"example"}}},"prefilter_saved_search_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","definition":{"steps":{"additionalProperty":{"kind":"triage","needs":["example"],"task":"summary","engine":"ai","scale":"standard","instructions":"example","method":"prompt","lookback_days":1,"public_key_id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0","integration":{"type":"Webhook","id":"2489E9AD-2EE2-8E00-8EC9-32D5F69181C0"},"cloaked":"send","only_when":{"additionalProperty":["example"]}}}}}}}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url http://api.disclosebot.localdev:3000/v1/channels \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "data": { "type": "channel", "attributes": { "name": "example", "short_description": "example", "enabled": true, "prefilter_query": { "q": { "additionalProperty": [ "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" ] }, "results": { "additionalProperty": { "additionalProperty": "example" } } }, "prefilter_saved_search_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "definition": { "steps": { "additionalProperty": { "kind": "triage", "needs": [ "example" ], "task": "summary", "engine": "ai", "scale": "standard", "instructions": "example", "method": "prompt", "lookback_days": 1, "public_key_id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0", "integration": { "type": "Webhook", "id": "2489E9AD-2EE2-8E00-8EC9-32D5F69181C0" }, "cloaked": "send", "only_when": { "additionalProperty": [ "example" ] } } } } } } }'Creates the channel with its pre-filter (a saved search reference or a custom query, never both), records the definition as workflow version 1, and enables it when enabled is true.
Authorizations
Section titled “Authorizations ”Request Body required
Section titled “Request Body required ”object
object
object
Enable on create; default false
A custom pre-filter; not with prefilter_saved_search_id
object
object
object
object
A saved search the pre-filter reads live; not with prefilter_query
The flat workflow definition: one entry per step keyed by name
object
object
One step of a workflow definition; the fields depend on kind
object
Names of the steps this step runs after
Triage only
Triage only; rule is available for scope and duplicate
Triage, severity only
Triage, severity with the custom scale
Triage, duplicate with the ai engine
Triage, duplicate only
Transmit only; the body is encrypted to this key before delivery, and sent as it stands without one
Transmit only
object
Transmit only; what to do with a report the reporter encrypted in the browser: send its ciphertext as it stands, or send no body
Transmit only; result key to the allowed values
object
Responses
Section titled “ Responses ”Referencing a saved search, with the search included
object
object
object
The custom pre-filter; null when the pre-filter references a saved search or there is none
object
object
object
object
The saved search the pre-filter reads; its query applies as it is now. Never set together with prefilter_query
object
object
object
object
Example
{ "data": { "type": "channel" }}Unauthorized
Channels not available for the account
Name taken