mirror of
https://github.com/hasura/graphql-engine.git
synced 2024-12-18 21:12:09 +03:00
b84db36ebb
* basic doc for actions * custom_types, sync and async actions * switch to graphql-parser-hs on github * update docs * metadata import/export * webhook calls are now supported * relationships in sync actions * initialise.sql is now in sync with the migration file * fix metadata tests * allow specifying arguments of actions * fix blacklist check on check_build_worthiness job * track custom_types and actions related tables * handlers are now triggered on async actions * default to pgjson unless a field is involved in relationships, for generating definition list * use 'true' for action filter for non admin role * fix create_action_permission sql query * drop permissions when dropping an action * add a hdb_role view (and relationships) to fetch all roles in the system * rename 'webhook' key in action definition to 'handler' * allow templating actions wehook URLs with env vars * add 'update_action' /v1/query type * allow forwarding client headers by setting `forward_client_headers` in action definition * add 'headers' configuration in action definition * handle webhook error response based on status codes * support array relationships for custom types * implement single row mutation, see https://github.com/hasura/graphql-engine/issues/3731 * single row mutation: rename 'pk_columns' -> 'columns' and no-op refactor * use top level primary key inputs for delete_by_pk & account select permissions for single row mutations * use only REST semantics to resolve the webhook response * use 'pk_columns' instead of 'columns' for update_by_pk input * add python basic tests for single row mutations * add action context (name) in webhook payload * Async action response is accessible for non admin roles only if the request session vars equals to action's * clean nulls, empty arrays for actions, custom types in export metadata * async action mutation returns only the UUID of the action * unit tests for URL template parser * Basic sync actions python tests * fix output in async query & add async tests * add admin secret header in async actions python test * document async action architecture in Resolve/Action.hs file * support actions returning array of objects * tests for list type response actions * update docs with actions and custom types metadata API reference * update actions python tests as per #f8e1330 Co-authored-by: Tirumarai Selvan <tirumarai.selvan@gmail.com> Co-authored-by: Aravind Shankar <face11301@gmail.com> Co-authored-by: Rakesh Emmadi <12475069+rakeshkky@users.noreply.github.com>
222 lines
4.2 KiB
ReStructuredText
222 lines
4.2 KiB
ReStructuredText
.. meta::
|
|
:description: Manage event triggers with the Hasura schema/metadata API
|
|
:keywords: hasura, docs, schema/metadata API, API reference, event trigger
|
|
|
|
Schema/Metadata API Reference: Event Triggers
|
|
=============================================
|
|
|
|
.. contents:: Table of contents
|
|
:backlinks: none
|
|
:depth: 1
|
|
:local:
|
|
|
|
Event triggers are used to capture database changes and send them to a configured webhook.
|
|
|
|
.. _create_event_trigger:
|
|
|
|
create_event_trigger
|
|
--------------------
|
|
|
|
``create_event_trigger`` is used to create a new event trigger or replace an existing event trigger.
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/query HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type" : "create_event_trigger",
|
|
"args" : {
|
|
"name": "sample_trigger",
|
|
"table": "users",
|
|
"webhook": "https://httpbin.org/post",
|
|
"insert": {
|
|
"columns": "*",
|
|
"payload": ["username"]
|
|
},
|
|
"update": {
|
|
"columns": ["username", "real_name"],
|
|
"payload": "*"
|
|
},
|
|
"delete": {
|
|
"columns": "*"
|
|
},
|
|
"headers":[
|
|
{
|
|
"name": "X-Hasura-From-Val",
|
|
"value": "myvalue"
|
|
},
|
|
{
|
|
"name": "X-Hasura-From-Env",
|
|
"value_from_env": "EVENT_WEBHOOK_HEADER"
|
|
}
|
|
],
|
|
"replace": false
|
|
}
|
|
}
|
|
|
|
.. _create_event_trigger_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- TriggerName_
|
|
- Name of the event trigger
|
|
* - table
|
|
- true
|
|
- :ref:`TableName <TableName>`
|
|
- Name of the table
|
|
* - webhook
|
|
- true
|
|
- String
|
|
- Full url of webhook
|
|
* - insert
|
|
- false
|
|
- OperationSpec_
|
|
- Specification for insert operation
|
|
* - update
|
|
- false
|
|
- OperationSpec_
|
|
- Specification for update operation
|
|
* - delete
|
|
- false
|
|
- OperationSpec_
|
|
- Specification for delete operation
|
|
* - headers
|
|
- false
|
|
- [ :ref:`HeaderFromValue <HeaderFromValue>` | :ref:`HeaderFromEnv <HeaderFromEnv>` ]
|
|
- List of headers to be sent with the webhook
|
|
* - replace
|
|
- false
|
|
- Boolean
|
|
- If set to true, the event trigger is replaced with the new definition
|
|
|
|
.. _delete_event_trigger:
|
|
|
|
delete_event_trigger
|
|
--------------------
|
|
|
|
``delete_event_trigger`` is used to delete an event trigger.
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/query HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type" : "delete_event_trigger",
|
|
"args" : {
|
|
"name": "sample_trigger"
|
|
}
|
|
}
|
|
|
|
.. _delete_event_trigger_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- TriggerName_
|
|
- Name of the event trigger
|
|
|
|
.. _invoke_event_trigger:
|
|
|
|
invoke_event_trigger
|
|
--------------------
|
|
|
|
``invoke_event_trigger`` is used to invoke an event trigger manually.
|
|
|
|
.. code-block:: http
|
|
|
|
POST /v1/query HTTP/1.1
|
|
Content-Type: application/json
|
|
X-Hasura-Role: admin
|
|
|
|
{
|
|
"type" : "invoke_event_trigger",
|
|
"args" : {
|
|
"name": "sample_trigger",
|
|
"payload": {}
|
|
}
|
|
}
|
|
|
|
.. _invoke_event_trigger_syntax:
|
|
|
|
Args syntax
|
|
^^^^^^^^^^^
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - name
|
|
- true
|
|
- TriggerName_
|
|
- Name of the event trigger
|
|
* - payload
|
|
- true
|
|
- JSON
|
|
- Some JSON payload to send to trigger
|
|
|
|
.. _TriggerName:
|
|
|
|
TriggerName
|
|
&&&&&&&&&&&
|
|
|
|
.. parsed-literal::
|
|
|
|
String
|
|
|
|
.. _OperationSpec:
|
|
|
|
OperationSpec
|
|
&&&&&&&&&&&&&
|
|
|
|
.. list-table::
|
|
:header-rows: 1
|
|
|
|
* - Key
|
|
- Required
|
|
- Schema
|
|
- Description
|
|
* - columns
|
|
- true
|
|
- EventTriggerColumns_
|
|
- List of columns or "*" to listen to changes
|
|
* - payload
|
|
- false
|
|
- EventTriggerColumns_
|
|
- List of columns or "*" to send as part of webhook payload
|
|
|
|
.. _EventTriggerColumns:
|
|
|
|
EventTriggerColumns
|
|
&&&&&&&&&&&&&&&&&&&
|
|
|
|
.. parsed-literal::
|
|
:class: haskell-pre
|
|
|
|
"*" | [:ref:`PGColumn`]
|