GoliathDevelopersGet an API key
Reference/Workflowsgenerated from the gateway manifest

updateContentTemplate

Update a template by id (name, body, subject).

POST/api/v1/callWRITEidempotent · 24 hruns as the key's owner
View as Markdown

Update a template by id (name, body, subject). The id is nested in the input object.

curl https://server.goliathdata.com/api/v1/call \
  -H "Authorization: Bearer $GOLIATH_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{
    "operationId": "updateContentTemplate",
    "variables": {
      "input": {
        "id": "<id>",
        "input": {
          "name": "<String>",
          "bodyContent": "<String>"
        }
      }
    }
  }'
import { GoliathClient } from '@goliath-data/sdk'

const goliath = new GoliathClient({
  apiKey: process.env.GOLIATH_API_KEY!,
  baseUrl: 'https://server.goliathdata.com',
})

const result = await goliath.workflows.updateContentTemplate(
  {
    input: {
      id: '<id>',
      input: {
        name: '<String>',
        bodyContent: '<String>'
      }
    }
  },
  { idempotencyKey: crypto.randomUUID() },
)
const res = await fetch('https://server.goliathdata.com/api/v1/call', {
  method: 'POST',
  headers: {
    Authorization: `Bearer ${process.env.GOLIATH_API_KEY}`,
    'Content-Type': 'application/json',
    'Idempotency-Key': crypto.randomUUID(),
  },
  body: JSON.stringify({
    operationId: 'updateContentTemplate',
    variables: {
      input: {
        id: '<id>',
        input: {
          name: '<String>',
          bodyContent: '<String>'
        }
      }
    }
  }),
})
const { data, errors } = await res.json()

Variables

The example sends only what the schema requires. Some operations also need one of several optional variables (one filter or another, say); the description above says which.

inputUpdateContentTemplateInput!required
idID!required
inputContentTemplateMutationInput!required
Every field, all the way down
variables
[
  {
    "name": "input",
    "type": "UpdateContentTemplateInput!",
    "required": true,
    "description": null,
    "defaultValue": null,
    "fields": [
      {
        "name": "id",
        "type": "ID!",
        "required": true,
        "description": null,
        "defaultValue": null
      },
      {
        "name": "input",
        "type": "ContentTemplateMutationInput!",
        "required": true,
        "description": null,
        "defaultValue": null,
        "fields": [
          {
            "name": "name",
            "type": "String!",
            "required": true,
            "description": null,
            "defaultValue": null
          },
          {
            "name": "bodyContent",
            "type": "String!",
            "required": true,
            "description": null,
            "defaultValue": null
          },
          {
            "name": "bodyFormat",
            "type": "String",
            "required": false,
            "description": null,
            "defaultValue": null
          },
          {
            "name": "subjectContent",
            "type": "String",
            "required": false,
            "description": null,
            "defaultValue": null
          },
          {
            "name": "attachments",
            "type": "[ContentTemplateAttachmentInput!]",
            "required": false,
            "description": null,
            "defaultValue": null,
            "fields": [
              {
                "name": "uploadedFileId",
                "type": "ID!",
                "required": true,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "fileName",
                "type": "String!",
                "required": true,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "contentType",
                "type": "String!",
                "required": true,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "fileSize",
                "type": "Int!",
                "required": true,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "page",
                "type": "ContentTemplateAttachmentPageInput",
                "required": false,
                "description": null,
                "defaultValue": null,
                "fields": [
                  {
                    "name": "itemId",
                    "type": "ID!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "versionNumber",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "sendsLatestAs",
                    "type": "ID",
                    "required": false,
                    "description": null,
                    "defaultValue": null
                  }
                ]
              }
            ]
          },
          {
            "name": "taskConfig",
            "type": "TaskTemplateConfigInput",
            "required": false,
            "description": "Structured config for a TASK content template. The template's `bodyContent` holds the task description and `name` is the template label; everything else task-shaped lives here. Assignee is intentionally absent: an applied task template is always assigned to the acting user at apply time.",
            "defaultValue": null,
            "fields": [
              {
                "name": "title",
                "type": "String!",
                "required": true,
                "description": "Task title. Rendered with merge fields + spintax against the contact at apply time.",
                "defaultValue": null
              },
              {
                "name": "taskType",
                "type": "String",
                "required": false,
                "description": "Free-text subtype label (maps to `Task.taskType`).",
                "defaultValue": null
              },
              {
                "name": "dueOffset",
                "type": "TaskTemplateRelativeDateOffsetInput!",
                "required": true,
                "description": "Due date as a relative offset from apply time.",
                "defaultValue": null,
                "fields": [
                  {
                    "name": "amount",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "unit",
                    "type": "TaskTemplateRelativeTimeUnit!",
                    "required": true,
                    "description": null,
                    "defaultValue": null,
                    "enumValues": [
                      "DAYS",
                      "WEEKS",
                      "MONTHS"
                    ]
                  }
                ]
              },
              {
                "name": "preferredTimeOfDay",
                "type": "TaskTemplateTimeOfDayInput!",
                "required": true,
                "description": "Time-of-day the resolved due date snaps to.",
                "defaultValue": null,
                "fields": [
                  {
                    "name": "hour",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "minute",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "timezone",
                    "type": "Timezone!",
                    "required": true,
                    "description": "AZ: Arizona: MST all year, no DST.",
                    "defaultValue": null,
                    "enumValues": [
                      "IDLW",
                      "SST",
                      "HST",
                      "AKST",
                      "PST",
                      "MST",
                      "AZ",
                      "CST",
                      "EST",
                      "AST",
                      "BRT",
                      "FNT",
                      "AZOT",
                      "UTC",
                      "CET",
                      "EET",
                      "MSK",
                      "GST",
                      "PKT",
                      "BST",
                      "ICT",
                      "JST",
                      "AEST",
                      "NCT",
                      "NZST"
                    ]
                  }
                ]
              },
              {
                "name": "autoCompleteOnNoteAdded",
                "type": "Boolean",
                "required": false,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "autoCompleteOnReassignment",
                "type": "Boolean",
                "required": false,
                "description": null,
                "defaultValue": null
              }
            ]
          },
          {
            "name": "taskSetSteps",
            "type": "[TaskSetStepInput!]",
            "required": false,
            "description": "One step of a TASK_SET template. `taskTemplateId` must name a TASK template in the caller's organization: a TASK_SET is rejected (a set cannot contain a set). The same template may appear more than once. The timing here WINS over the referenced template's own `taskConfig` timing.",
            "defaultValue": null,
            "fields": [
              {
                "name": "taskTemplateId",
                "type": "ID!",
                "required": true,
                "description": null,
                "defaultValue": null
              },
              {
                "name": "dueOffset",
                "type": "TaskTemplateRelativeDateOffsetInput!",
                "required": true,
                "description": null,
                "defaultValue": null,
                "fields": [
                  {
                    "name": "amount",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "unit",
                    "type": "TaskTemplateRelativeTimeUnit!",
                    "required": true,
                    "description": null,
                    "defaultValue": null,
                    "enumValues": [
                      "DAYS",
                      "WEEKS",
                      "MONTHS"
                    ]
                  }
                ]
              },
              {
                "name": "preferredTimeOfDay",
                "type": "TaskTemplateTimeOfDayInput!",
                "required": true,
                "description": null,
                "defaultValue": null,
                "fields": [
                  {
                    "name": "hour",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "minute",
                    "type": "Int!",
                    "required": true,
                    "description": null,
                    "defaultValue": null
                  },
                  {
                    "name": "timezone",
                    "type": "Timezone!",
                    "required": true,
                    "description": "AZ: Arizona: MST all year, no DST.",
                    "defaultValue": null,
                    "enumValues": [
                      "IDLW",
                      "SST",
                      "HST",
                      "AKST",
                      "PST",
                      "MST",
                      "AZ",
                      "CST",
                      "EST",
                      "AST",
                      "BRT",
                      "FNT",
                      "AZOT",
                      "UTC",
                      "CET",
                      "EET",
                      "MSK",
                      "GST",
                      "PKT",
                      "BST",
                      "ICT",
                      "JST",
                      "AEST",
                      "NCT",
                      "NZST"
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
]

Response

What comes back under data: a list shows as one entry, and a value as its type.

response shape
{
  "data": {
    "workflowAutomationsMutation": {
      "updateContentTemplate": {
        "id": "<ID>",
        "name": "…",
        "type": "EMAIL",
        "updatedAt": "2026-01-01T00:00:00.000Z",
        "taskSetSteps": [
          {
            "id": "<ID>",
            "taskTemplate": {
              "id": "<ID>",
              "name": "…"
            },
            "dueOffset": {
              "amount": 0,
              "unit": "DAYS"
            },
            "preferredTimeOfDay": {
              "hour": 0,
              "minute": 0,
              "timezone": "IDLW"
            }
          }
        ]
      }
    }
  }
}

Errors

Idempotency

Send an Idempotency-Key of 1 to 255 characters. A finished request retried with the same key replays its stored response, marked Idempotency-Replayed: true; one still in flight returns 409 idempotency_conflict. Keys expire after 24 hours. Write without fear →