Retrieve the automation catalog
Lists every trigger and step type with its settings, the events Voidhash records, and what rules and templates can read: everything needed to write a definition.
Guide: Automations
AuthorizationBearer <token>
A project secret key: vh_sk_... for production, vh_sk_test_... for test. Keep it on your servers.
In: header
Path parameters
projectId*string
The project's id, proj_.... A secret key works only in the project it belongs to.
Examples
curl -X GET "https://api.voidhash.com/api/v1/projects/proj_tz4a98xxat96iws9zmbrgj3a/automations/catalog" \ -H "Authorization: Bearer vh_sk_..."{ "triggers": [ { "type": "person_signed_up", "label": "Person signs up", "description": "Starts within about a minute of a person first being identified.", "fields": [ { "key": "filter", "label": "Only if", "kind": "condition", "description": null, "isRequired": false, "placeholder": null, "maxLength": null } ] } ], "steps": [ { "type": "send_push", "kind": "action", "label": "Send push notification", "description": "Sends a push notification to every device of the person.", "fields": [ { "key": "title", "label": "Title", "kind": "template", "description": null, "isRequired": true, "placeholder": "Welcome, {{ person.name | default: \"friend\" }}", "maxLength": 200 }, { "key": "body", "label": "Message", "kind": "long_template", "description": null, "isRequired": true, "placeholder": null, "maxLength": 1000 }, { "key": "data", "label": "Data", "kind": "key_values", "description": "Values your app receives with the notification, such as a screen to open.", "isRequired": false, "placeholder": null, "maxLength": null } ], "ports": [ { "key": "out", "label": "Then" } ], "outputs": [], "permission": "project:notifications:send" }, { "type": "condition", "kind": "flow", "label": "Condition", "description": "Takes one path if the rules hold and another if they don't.", "fields": [ { "key": "condition", "label": "If", "kind": "condition", "description": null, "isRequired": true, "placeholder": null, "maxLength": null } ], "ports": [ { "key": "yes", "label": "Yes" }, { "key": "no", "label": "No" } ], "outputs": [], "permission": null } ], "events": [ { "event": "$subscription.created", "label": "Subscription started", "description": "A person started a subscription or a trial." } ], "contextFields": [ { "path": "person.name", "label": "Name", "description": "Their name, if known." }, { "path": "person.entitlements", "label": "Entitlements", "description": "Keys of the perks they can use now. Use \"contains\" to check for one." } ]}{ "error": { "type": "invalid_request", "code": "string", "message": "string", "param": "string" }}{ "error": { "type": "unauthenticated", "code": "invalid_api_key", "message": "This secret key is not valid." }}{ "error": { "type": "permission_denied", "code": "permission_denied", "message": "Insufficient permissions." }}{ "error": { "type": "not_found", "code": "project_not_found", "message": "There is no project proj_tz4a98xxat96iws9zmbrgj3a, or this credential cannot use it.", "param": "projectId" }}{ "error": { "type": "internal", "code": "internal_error", "message": "Something went wrong on our side. Try again, and contact support with the Request-Id header if it keeps failing." }}Response body
application/json
application/json
application/json
application/json
application/json
application/json
Errors
This operation adds no error codes of its own. It can fail with the errors every operation shares, such as unauthenticated; see Errors.
More in Automations
- List automations
GET - Create an automation
POST - List audience cohorts
GET - Retrieve an automation
GET - Update an automation
PATCH - Check an automation
POST - Test an automation
POST - Activate an automation
POST - Pause an automation
POST - Archive an automation
POST - Unarchive an automation
POST - List an automation's versions
GET - Retrieve an automation's stats
GET - List an automation's runs
GET - Start a run
POST - Retrieve a run
GET - Cancel a run
POST - Retry a run
POST
Something wrong or missing on this page? Tell us by email or on Discord.