TailorGraphql Operation

The TailorGraphql operation enables interaction with TailorDB to perform operations such as querying data or making changes (mutations). This operation type is ideal for database operations triggered by events, webhooks, or schedules.

Configuration Example

<span><span style="color: var(--shiki-token-function)">resource</span><span style="color: var(--shiki-color-text)"> &quot;tailor_executor&quot; &quot;tailor_graphql_executor&quot; {</span></span>
<span><span style="color: var(--shiki-color-text)">  workspace_id </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> tailor_workspace.ims.id</span></span>
<span><span style="color: var(--shiki-color-text)">  name         </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;tailor-graphql-executor&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">  description  </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-string-expression)">&quot;Execute GraphQL operations&quot;</span></span>
<span></span>
<span><span style="color: var(--shiki-color-text)">  trigger </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)"># Choose one of the trigger types:</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)"># event = { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)"># webhook = { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)"># schedule = { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">  }</span></span>
<span></span>
<span><span style="color: var(--shiki-color-text)">  operation </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">    tailor_graphql </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">      app_name </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> tailor_application.ims.name</span></span>
<span><span style="color: var(--shiki-color-text)">      invoker </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">        event_user </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-constant)">true</span></span>
<span><span style="color: var(--shiki-color-text)">      }</span></span>
<span><span style="color: var(--shiki-color-text)">      query     </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">&lt;&lt;EOF</span></span>
<span><span style="color: var(--shiki-token-string)">        mutation createProduct($categoryID: ID!, $title: String!) {</span></span>
<span><span style="color: var(--shiki-token-string)">          createProduct(input: {</span></span>
<span><span style="color: var(--shiki-token-string)">            categoryID: $categoryID</span></span>
<span><span style="color: var(--shiki-token-string)">            title: $title</span></span>
<span><span style="color: var(--shiki-token-string)">          }) {</span></span>
<span><span style="color: var(--shiki-token-string)">            id</span></span>
<span><span style="color: var(--shiki-token-string)">          }</span></span>
<span><span style="color: var(--shiki-token-string)">        }</span></span>
<span><span style="color: var(--shiki-token-keyword)">      EOF</span></span>
<span><span style="color: var(--shiki-color-text)">      variables </span><span style="color: var(--shiki-token-keyword)">=</span><span style="color: var(--shiki-color-text)"> </span><span style="color: var(--shiki-token-keyword)">&lt;&lt;EOF</span></span>
<span><span style="color: var(--shiki-token-string)">      ({</span></span>
<span><span style="color: var(--shiki-token-string)">        &quot;categoryID&quot;: args.record.id,</span></span>
<span><span style="color: var(--shiki-token-string)">        &quot;title&quot;: args.record.name + &quot; Product&quot;</span></span>
<span><span style="color: var(--shiki-token-string)">      })</span></span>
<span><span style="color: var(--shiki-token-keyword)">      EOF</span></span>
<span><span style="color: var(--shiki-color-text)">    }</span></span>
<span><span style="color: var(--shiki-color-text)">  }</span></span>
<span><span style="color: var(--shiki-color-text)">}</span></span>
<span></span>
<span><span style="color: var(--shiki-color-text)">#tailorGraphqlExecutor: executor.#Executor </span><span style="color: var(--shiki-token-keyword)">&amp;</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">  Name:        </span><span style="color: var(--shiki-color-text)">&quot;</span><span style="color: var(--shiki-token-string-expression)">tailor-graphql-executor</span><span style="color: var(--shiki-color-text)">&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">  Description: </span><span style="color: var(--shiki-color-text)">&quot;</span><span style="color: var(--shiki-token-string-expression)">Execute GraphQL operations</span><span style="color: var(--shiki-color-text)">&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">  Trigger: {</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)">// Choose one of the trigger types:</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)">// executor.#TriggerEvent &amp; { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)">// executor.#TriggerIncomingWebhook &amp; { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">    </span><span style="color: var(--shiki-token-comment)">// executor.#TriggerSchedule &amp; { ... }</span></span>
<span><span style="color: var(--shiki-color-text)">  }</span></span>
<span><span style="color: var(--shiki-color-text)">  Target: executor.#TargetTailorGraphql </span><span style="color: var(--shiki-token-keyword)">&amp;</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">    AppName: </span><span style="color: var(--shiki-color-text)">&quot;</span><span style="color: var(--shiki-token-string-expression)">ims</span><span style="color: var(--shiki-color-text)">&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">    Invoker: executor.#InvokerEventUser</span></span>
<span><span style="color: var(--shiki-color-text)">    Query: common.#Script </span><span style="color: var(--shiki-token-keyword)">&amp;</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">      Expr: </span><span style="color: var(--shiki-color-text)">&quot;&quot;&quot;</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        mutation createProduct($categoryID: ID!, $title: String!) {</span></span>
<span><span style="color: var(--shiki-token-string-expression)">          createProduct(input: {</span></span>
<span><span style="color: var(--shiki-token-string-expression)">            categoryID: $categoryID</span></span>
<span><span style="color: var(--shiki-token-string-expression)">            title: $title</span></span>
<span><span style="color: var(--shiki-token-string-expression)">          }) {</span></span>
<span><span style="color: var(--shiki-token-string-expression)">            id</span></span>
<span><span style="color: var(--shiki-token-string-expression)">          }</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        }</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        </span><span style="color: var(--shiki-color-text)">&quot;&quot;&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">    }</span></span>
<span><span style="color: var(--shiki-color-text)">    Variables: common.#Script </span><span style="color: var(--shiki-token-keyword)">&amp;</span><span style="color: var(--shiki-color-text)"> {</span></span>
<span><span style="color: var(--shiki-color-text)">      Expr: </span><span style="color: var(--shiki-color-text)">&quot;&quot;&quot;</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        ({</span></span>
<span><span style="color: var(--shiki-token-string-expression)">          &quot;categoryID&quot;: args.record.id,</span></span>
<span><span style="color: var(--shiki-token-string-expression)">          &quot;title&quot;: args.record.name + &quot; Product&quot;</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        })</span></span>
<span><span style="color: var(--shiki-token-string-expression)">        </span><span style="color: var(--shiki-color-text)">&quot;&quot;&quot;</span></span>
<span><span style="color: var(--shiki-color-text)">    }</span></span>
<span><span style="color: var(--shiki-color-text)">  }</span></span>
<span><span style="color: var(--shiki-color-text)">}</span></span>
<span></span>

Properties

Executor Properties

PropertyTypeRequiredDescription
namestringYesThe name of the executor. The name field has the validation rule ^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$, and it does not allow capital letters
workspace_idstringYesThe ID of the workspace that the executor namespace belongs to
descriptionstringNoThe description of the executor
triggerobjectYesThe type of trigger (webhook, event, or schedule)

TailorGraphql Operation Properties

PropertyTypeSupports ScriptingRequiredDescription
app_namestring-YesThe name of the TailorDB application
querystringJavaScript / CELYesThe GraphQL query or mutation to execute
variablesstringJavaScript / CELNoThe variables to pass to the GraphQL operation
invokerobject-NoThe invoker of the operation

Refer to the Tailor Platform Provider documentation for more details on executor properties.

Executor Properties

PropertyTypeRequiredDescription
NamestringYesThe name of the executor. The name field has the validation rule ^[a-z0-9][a-z0-9-]{1,61}[a-z0-9]$, and it does not allow capital letters
DescriptionstringNoThe description of the executor
TriggerobjectYesThe type of trigger (e.g., #TriggerIncomingWebhook, #TriggerEvent, #TriggerSchedule)

TargetTailorGraphql Properties

PropertyTypeSupports ScriptingRequiredDescription
AppNamestring-YesThe name of the TailorDB application
QuerystringJavaScript / CELYesThe GraphQL query or mutation to execute
VariablesstringJavaScript / CELNoThe variables to pass to the GraphQL operation
Invokerobject-NoThe invoker of the operation

Related Documentation