Webhook
A signed call to your service when a record changes. A manifest can install one.
Area: The retailer's setup · Why it is here: recipe webhook_receiver · Fields: 18
Read and write it
Every call runs as your app's own user, with its key in one header, at the retailer's own address. The user reads and writes only what its role allows: your app's user, and the rights the retailer gives it.
Read a list (only name unless you ask for fields):
curl -s "https://⟨site⟩/api/resource/Webhook?fields=%5B%22*%22%5D&limit_page_length=20" \
-H "Authorization: token ⟨api key⟩:⟨api secret⟩"
Read one, with its tables:
curl -s "https://⟨site⟩/api/resource/Webhook/⟨name⟩" -H "Authorization: token ⟨api key⟩:⟨api secret⟩"
Create one (the required fields first), if your app's role may:
curl -s -X POST "https://⟨site⟩/api/resource/Webhook" -H "Authorization: token ⟨api key⟩:⟨api secret⟩" \
-H "Content-Type: application/json" -d '{"webhook_doctype": …, "request_url": …, "request_method": …}'
Change one with PUT /api/resource/Webhook/⟨name⟩ and the fields you change; a table sent there replaces its rows, so send its existing rows too. All the record calls and their answers: the API reference.
Samples that use it
Fields
Read from the product at POS 2.1.0.667 (till app 60147699c): its own fields, the fields iVendNext adds to it, and iVendNext's changes to any of them. Read-only fields are set by iVendNext; a hidden one is not on the form but can be read. Every record also has name (its id, in the address), owner, creation, modified, modified_by and docstatus (0 a draft, 1 submitted, 2 cancelled), all read-only.
| Field | Field name | Type | Required | Read-only | Hidden | Links to |
|---|---|---|---|---|---|---|
| DocType | webhook_doctype |
Link | yes | DocType | ||
| Doc Event | webhook_docevent |
Select | one of: after_insert, on_update, on_submit, on_cancel, on_trash, on_update_after_submit, on_change | |||
| Enabled | enabled |
Check | ||||
| Condition | condition |
Small Text | ||||
| Request URL | request_url |
Small Text | yes | |||
| Is Dynamic URL? | is_dynamic_url |
Check | ||||
| Request Timeout | timeout |
Int | ||||
| Background Jobs Queue | background_jobs_queue |
Autocomplete | ||||
| Request Method | request_method |
Select | yes | one of: POST, PUT, DELETE | ||
| Request Structure | request_structure |
Select | one of: Form URL-Encoded, JSON | |||
| Enable Security | enable_security |
Check | ||||
| Webhook Secret | webhook_secret |
Password | ||||
| Headers | webhook_headers |
Table | Webhook Header | |||
| Data | webhook_data |
Table | Webhook Data | |||
| JSON Request Body | webhook_json |
Code | ||||
| Select Document | preview_document |
Dynamic Link | ||||
| Meets Condition? | meets_condition |
Data | ||||
| Request Body | preview_request_body |
Code |
Table: Webhook Data
The rows of webhook_data. Each row also has idx (its place), parent, parentfield and parenttype.
| Field | Field name | Type | Required | Read-only | Hidden | Links to |
|---|---|---|---|---|---|---|
| Fieldname | fieldname |
Select | yes | |||
| Key | key |
Data | yes |
Table: Webhook Header
The rows of webhook_headers. Each row also has idx (its place), parent, parentfield and parenttype.
| Field | Field name | Type | Required | Read-only | Hidden | Links to |
|---|---|---|---|---|---|---|
| Key | key |
Small Text | ||||
| Value | value |
Small Text |