## Update a sequence draft

`client.Sequence.UpdateDraft(ctx, id, body) (*SequenceUpdateDraftResponse, error)`

**post** `/v1/sequences/{id}/draft`

Saves changes to the sequence’s open draft, or opens one from the published version when none is open. Only the fields sent are changed; `definition.steps` replaces the whole step list. Changes take effect when the draft is published. See <u>[Using sequences with the API](/sequences/using-the-api#editing-a-draft)</u> for the draft and version model.

Returns 409 when `expectedVersion` is not the open draft’s `version`, or for a `steps` save while the draft has unfinished edits in Lightfield; retrieve the draft and retry. A refused save changes nothing: 400 `invalid_configuration` lists every problem under `issues`, 400 `referenced_resource_missing` names a reviewer or sender that does not exist, and a value outside its field’s documented bounds returns 400 naming the field in `param`. See <u>[Sequence errors](/using-the-api/errors/#sequence-errors)</u>.

**[Required scope](/using-the-api/scopes/):** `sequences:update`

**[Rate limit category](/using-the-api/rate-limits/):** Write

### Parameters

- `id string`

  Unique identifier of the sequence.

- `body SequenceUpdateDraftParams`

  - `Definition param.Field[SequenceUpdateDraftParamsDefinition]`

    Fields to change. Omitted fields are unchanged.

    - `Description string`

      What this version of the sequence is for.

    - `Messaging SequenceUpdateDraftParamsDefinitionMessaging`

      Messaging inputs that frame every step. Omitted fields are unchanged; null clears a field.

      - `CallToAction string`

        What the recipient is asked to do.

      - `Persona string`

        Who the sequence targets.

      - `Trigger string`

        Why the outreach is timely.

      - `ValueProp string`

        The value proposition.

    - `Pacing SequenceUpdateDraftParamsDefinitionPacing`

      How the whole sequence paces each step type it sends, keyed by sequence step type. Omitted step types are unchanged.

      - `Email SequenceUpdateDraftParamsDefinitionPacingEmail`

        Email steps.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

      - `LinkedinInvite SequenceUpdateDraftParamsDefinitionPacingLinkedinInvite`

        LinkedIn connection requests.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

      - `LinkedinMessage SequenceUpdateDraftParamsDefinitionPacingLinkedinMessage`

        LinkedIn messages.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

    - `Priority string`

      Send priority relative to other sequences.

      - `const SequenceUpdateDraftParamsDefinitionPriorityHigh SequenceUpdateDraftParamsDefinitionPriority = "HIGH"`

      - `const SequenceUpdateDraftParamsDefinitionPriorityNormal SequenceUpdateDraftParamsDefinitionPriority = "NORMAL"`

    - `SendWindow SequenceUpdateDraftParamsDefinitionSendWindow`

      When the sequence may send. Omitted fields are unchanged.

      - `DaysOfWeek []int64`

        Days sends may go out, 0 = Sunday.

      - `EndHour int64`

        Local hour sends stop, exclusive (1–24).

      - `StartHour int64`

        First local hour sends may go out (0–23).

      - `Timezone string`

        IANA timezone of the window.

    - `Steps []SequenceUpdateDraftParamsDefinitionStepUnion`

      The complete ordered step list, replacing the current one. Keep a step by sending its `id`; omit `id` for a new step.

      - `type SequenceUpdateDraftParamsDefinitionStepObject struct{…}`

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftParamsDefinitionStepObjectDeliveryModeAuto SequenceUpdateDraftParamsDefinitionStepObjectDeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftParamsDefinitionStepObjectDeliveryModeForReview SequenceUpdateDraftParamsDefinitionStepObjectDeliveryMode = "FOR_REVIEW"`

        - `Name string`

          Display name of the step.

        - `Prompt string`

          Instructions the agent follows when composing this message.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftParamsDefinitionStepObjectTypeEmail SequenceUpdateDraftParamsDefinitionStepObjectType = "EMAIL"`

          - `const SequenceUpdateDraftParamsDefinitionStepObjectTypeLinkedinMessage SequenceUpdateDraftParamsDefinitionStepObjectType = "LINKEDIN_MESSAGE"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in. Optional: the content decides, a `prompt` for `AGENT` and a `template` for `TEMPLATE`. A kept template step sent with a `prompt` is refused unless `mode` is `AGENT`, so its template is never dropped by accident.

          - `const SequenceUpdateDraftParamsDefinitionStepObjectModeAgent SequenceUpdateDraftParamsDefinitionStepObjectMode = "AGENT"`

      - `type SequenceUpdateDraftParamsDefinitionStepObject2 struct{…}`

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftParamsDefinitionStepObject2DeliveryModeAuto SequenceUpdateDraftParamsDefinitionStepObject2DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject2DeliveryModeForReview SequenceUpdateDraftParamsDefinitionStepObject2DeliveryMode = "FOR_REVIEW"`

        - `Name string`

          Display name of the step.

        - `Prompt string`

          Instructions the agent follows when composing this message.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftParamsDefinitionStepObject2TypeLinkedinInvite SequenceUpdateDraftParamsDefinitionStepObject2Type = "LINKEDIN_INVITE"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

        - `IncludeNote bool`

          Whether the connection request carries a note. Omit to keep the current setting; a new step defaults to false.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in. Optional: the content decides, a `prompt` for `AGENT` and a `template` for `TEMPLATE`. A kept template step sent with a `prompt` is refused unless `mode` is `AGENT`, so its template is never dropped by accident.

          - `const SequenceUpdateDraftParamsDefinitionStepObject2ModeAgent SequenceUpdateDraftParamsDefinitionStepObject2Mode = "AGENT"`

      - `type SequenceUpdateDraftParamsDefinitionStepObject3 struct{…}`

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftParamsDefinitionStepObject3DeliveryModeAuto SequenceUpdateDraftParamsDefinitionStepObject3DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject3DeliveryModeForReview SequenceUpdateDraftParamsDefinitionStepObject3DeliveryMode = "FOR_REVIEW"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftParamsDefinitionStepObject3Template`

          The email every contact receives. Requires template steps for the workspace.

          - `Body string`

            Email body as Markdown; paragraphs, bold, italics, links and lists keep their formatting. Leave out the sign-off and signature, which are added when the message is written. A variable cannot be part of a link address. Write each variable as {{ coalesce(<variable>, "fallback") }}, with a fallback for contacts missing the value. A variable reads a contact field as {attr:<id>}, the contact's first or last name as {col:firstName} or {col:lastName}, the contact's first account's field as {rel:account.<id>}, that account's name as {rel:account.col:name}, and the sender's name or email as {rel:sender.col:name} or {rel:sender.col:email}; a SINGLE_SELECT field reads its option's label, as {attr:<id>.label} or {rel:account.<id>.label}. <id> is the literal id of a CrmContact or CrmAccount field in the CRM schema whose type is one of TEXT, NUMBER, CURRENCY, DATETIME, SINGLE_SELECT, FULL_NAME, EMAIL, URL; never a slug, a name, or an id starting with __synthetic_. Nothing else is a variable: leave such a value out rather than reading a different field. A {{ }} that is not a variable would send as written, so it is refused. A field's <id> may be the `ad_` ID the field-definitions endpoints list.

          - `Subject string`

            Plain-text subject line. Write each variable as {{ coalesce(<variable>, "fallback") }}, with a fallback for contacts missing the value. A variable reads a contact field as {attr:<id>}, the contact's first or last name as {col:firstName} or {col:lastName}, the contact's first account's field as {rel:account.<id>}, that account's name as {rel:account.col:name}, and the sender's name or email as {rel:sender.col:name} or {rel:sender.col:email}; a SINGLE_SELECT field reads its option's label, as {attr:<id>.label} or {rel:account.<id>.label}. <id> is the literal id of a CrmContact or CrmAccount field in the CRM schema whose type is one of TEXT, NUMBER, CURRENCY, DATETIME, SINGLE_SELECT, FULL_NAME, EMAIL, URL; never a slug, a name, or an id starting with __synthetic_. Nothing else is a variable: leave such a value out rather than reading a different field. A {{ }} that is not a variable would send as written, so it is refused. A field's <id> may be the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftParamsDefinitionStepObject3TypeEmail SequenceUpdateDraftParamsDefinitionStepObject3Type = "EMAIL"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in. Optional: the content decides, a `prompt` for `AGENT` and a `template` for `TEMPLATE`. A kept template step sent with a `prompt` is refused unless `mode` is `AGENT`, so its template is never dropped by accident.

          - `const SequenceUpdateDraftParamsDefinitionStepObject3ModeTemplate SequenceUpdateDraftParamsDefinitionStepObject3Mode = "TEMPLATE"`

      - `type SequenceUpdateDraftParamsDefinitionStepObject4 struct{…}`

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftParamsDefinitionStepObject4DeliveryModeAuto SequenceUpdateDraftParamsDefinitionStepObject4DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject4DeliveryModeForReview SequenceUpdateDraftParamsDefinitionStepObject4DeliveryMode = "FOR_REVIEW"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftParamsDefinitionStepObject4Template`

          The message every contact receives; for an invite, its connection note, sent only with `includeNote` and otherwise left empty. Requires template steps for the workspace.

          - `Body string`

            Plain-text message. Write each variable as {{ coalesce(<variable>, "fallback") }}, with a fallback for contacts missing the value. A variable reads a contact field as {attr:<id>}, the contact's first or last name as {col:firstName} or {col:lastName}, the contact's first account's field as {rel:account.<id>}, that account's name as {rel:account.col:name}, and the sender's name or email as {rel:sender.col:name} or {rel:sender.col:email}; a SINGLE_SELECT field reads its option's label, as {attr:<id>.label} or {rel:account.<id>.label}. <id> is the literal id of a CrmContact or CrmAccount field in the CRM schema whose type is one of TEXT, NUMBER, CURRENCY, DATETIME, SINGLE_SELECT, FULL_NAME, EMAIL, URL; never a slug, a name, or an id starting with __synthetic_. Nothing else is a variable: leave such a value out rather than reading a different field. A {{ }} that is not a variable would send as written, so it is refused. A field's <id> may be the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftParamsDefinitionStepObject4TypeLinkedinMessage SequenceUpdateDraftParamsDefinitionStepObject4Type = "LINKEDIN_MESSAGE"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in. Optional: the content decides, a `prompt` for `AGENT` and a `template` for `TEMPLATE`. A kept template step sent with a `prompt` is refused unless `mode` is `AGENT`, so its template is never dropped by accident.

          - `const SequenceUpdateDraftParamsDefinitionStepObject4ModeTemplate SequenceUpdateDraftParamsDefinitionStepObject4Mode = "TEMPLATE"`

      - `type SequenceUpdateDraftParamsDefinitionStepObject5 struct{…}`

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftParamsDefinitionStepObject5DeliveryModeAuto SequenceUpdateDraftParamsDefinitionStepObject5DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject5DeliveryModeForReview SequenceUpdateDraftParamsDefinitionStepObject5DeliveryMode = "FOR_REVIEW"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftParamsDefinitionStepObject5Template`

          The message every contact receives; for an invite, its connection note, sent only with `includeNote` and otherwise left empty. Requires template steps for the workspace.

          - `Body string`

            Plain-text message. Write each variable as {{ coalesce(<variable>, "fallback") }}, with a fallback for contacts missing the value. A variable reads a contact field as {attr:<id>}, the contact's first or last name as {col:firstName} or {col:lastName}, the contact's first account's field as {rel:account.<id>}, that account's name as {rel:account.col:name}, and the sender's name or email as {rel:sender.col:name} or {rel:sender.col:email}; a SINGLE_SELECT field reads its option's label, as {attr:<id>.label} or {rel:account.<id>.label}. <id> is the literal id of a CrmContact or CrmAccount field in the CRM schema whose type is one of TEXT, NUMBER, CURRENCY, DATETIME, SINGLE_SELECT, FULL_NAME, EMAIL, URL; never a slug, a name, or an id starting with __synthetic_. Nothing else is a variable: leave such a value out rather than reading a different field. A {{ }} that is not a variable would send as written, so it is refused. A field's <id> may be the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftParamsDefinitionStepObject5TypeLinkedinInvite SequenceUpdateDraftParamsDefinitionStepObject5Type = "LINKEDIN_INVITE"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

        - `IncludeNote bool`

          Whether the connection request carries a note. Omit to keep the current setting; a new step defaults to false.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in. Optional: the content decides, a `prompt` for `AGENT` and a `template` for `TEMPLATE`. A kept template step sent with a `prompt` is refused unless `mode` is `AGENT`, so its template is never dropped by accident.

          - `const SequenceUpdateDraftParamsDefinitionStepObject5ModeTemplate SequenceUpdateDraftParamsDefinitionStepObject5Mode = "TEMPLATE"`

      - `type SequenceUpdateDraftParamsDefinitionStepObject6 struct{…}`

        - `Duration int64`

          Length of the wait.

        - `Type string`

          `WAIT` pauses for a fixed time; `WAIT_FOR_CONNECTION` waits up to that long for a LinkedIn invite to be accepted.

          - `const SequenceUpdateDraftParamsDefinitionStepObject6TypeWait SequenceUpdateDraftParamsDefinitionStepObject6Type = "WAIT"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject6TypeWaitForConnection SequenceUpdateDraftParamsDefinitionStepObject6Type = "WAIT_FOR_CONNECTION"`

        - `Unit string`

          Unit of `duration`.

          - `const SequenceUpdateDraftParamsDefinitionStepObject6UnitDay SequenceUpdateDraftParamsDefinitionStepObject6Unit = "DAY"`

          - `const SequenceUpdateDraftParamsDefinitionStepObject6UnitMinute SequenceUpdateDraftParamsDefinitionStepObject6Unit = "MINUTE"`

        - `ID string`

          ID of a step in the current draft to keep. Omit for a new step. Kept steps must stay in their relative order and keep their type.

  - `ExpectedVersion param.Field[string]`

    The open draft’s `version` as last read. Required when a draft is open; omit it only when none is, to start one from the published version.

  - `Name param.Field[string]`

    Name of the sequence.

  - `Reviewers param.Field[SequenceUpdateDraftParamsReviewers]`

    Extra members who may approve this sequence’s `FOR_REVIEW` messages before they send. The sending member and the sequence’s creator always review, whether or not they are listed. Changes the list by adding and removing members; omit to keep it.

    - `Add []string`

      Member IDs of active members to add. A member already listed is unchanged.

    - `Remove []string`

      Member IDs to remove, including members who have left the workspace. A member not listed is unchanged.

  - `Senders param.Field[SequenceUpdateDraftParamsSenders]`

    The senders this sequence sends from; new contacts rotate across them. Changes the list by adding and removing senders; omit to keep it.

    - `Add []string`

      Sender IDs of unarchived senders to add. A sender already listed is unchanged.

    - `Remove []string`

      Sender IDs to remove, including archived senders. A sender not listed is unchanged.

### Returns

- `type SequenceUpdateDraftResponse struct{…}`

  - `Channels []string`

    Channels the draft's steps send on.

    - `const SequenceUpdateDraftResponseChannelEmail SequenceUpdateDraftResponseChannel = "EMAIL"`

    - `const SequenceUpdateDraftResponseChannelLinkedin SequenceUpdateDraftResponseChannel = "LINKEDIN"`

  - `Definition SequenceUpdateDraftResponseDefinition`

    The draft configuration, in the same shape as a published definition.

    - `Description string`

      What this version of the sequence is for.

    - `Messaging SequenceUpdateDraftResponseDefinitionMessaging`

      Messaging inputs that frame every step.

      - `CallToAction string`

        What the recipient is asked to do.

      - `Persona string`

        Who the sequence targets.

      - `Trigger string`

        Why the outreach is timely.

      - `ValueProp string`

        The value proposition.

    - `Pacing SequenceUpdateDraftResponseDefinitionPacing`

      How the whole sequence paces each step type it sends, keyed by sequence step type.

      - `Email SequenceUpdateDraftResponseDefinitionPacingEmail`

        Email steps.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

      - `LinkedinInvite SequenceUpdateDraftResponseDefinitionPacingLinkedinInvite`

        LinkedIn connection requests.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

      - `LinkedinMessage SequenceUpdateDraftResponseDefinitionPacingLinkedinMessage`

        LinkedIn messages.

        - `DailyLimit int64`

          Most sends of this step type across the whole sequence in any rolling 24 hours, or null when the sequence sets no daily cap. Workspace and sender limits still apply.

    - `Priority string`

      Send priority relative to other sequences.

      - `const SequenceUpdateDraftResponseDefinitionPriorityHigh SequenceUpdateDraftResponseDefinitionPriority = "HIGH"`

      - `const SequenceUpdateDraftResponseDefinitionPriorityNormal SequenceUpdateDraftResponseDefinitionPriority = "NORMAL"`

    - `SendWindow SequenceUpdateDraftResponseDefinitionSendWindow`

      When the sequence may send.

      - `DaysOfWeek []int64`

        Days sends may go out, 0 = Sunday.

      - `EndHour int64`

        Local hour sends stop, exclusive (1–24).

      - `StartHour int64`

        First local hour sends may go out (0–23).

      - `Timezone string`

        IANA timezone of the window.

    - `Steps []SequenceUpdateDraftResponseDefinitionStepUnion`

      Email, LinkedIn and wait steps in execution order.

      - `type SequenceUpdateDraftResponseDefinitionStepObject struct{…}`

        - `ID string`

          Step identifier, referenced by enrollment `currentStepId` and message `sequenceStepId`.

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftResponseDefinitionStepObjectDeliveryModeAuto SequenceUpdateDraftResponseDefinitionStepObjectDeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftResponseDefinitionStepObjectDeliveryModeForReview SequenceUpdateDraftResponseDefinitionStepObjectDeliveryMode = "FOR_REVIEW"`

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in.

          - `const SequenceUpdateDraftResponseDefinitionStepObjectModeAgent SequenceUpdateDraftResponseDefinitionStepObjectMode = "AGENT"`

        - `Name string`

          Display name of the step.

        - `Prompt string`

          Instructions the agent follows when composing this message.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftResponseDefinitionStepObjectTypeEmail SequenceUpdateDraftResponseDefinitionStepObjectType = "EMAIL"`

          - `const SequenceUpdateDraftResponseDefinitionStepObjectTypeLinkedinMessage SequenceUpdateDraftResponseDefinitionStepObjectType = "LINKEDIN_MESSAGE"`

      - `type SequenceUpdateDraftResponseDefinitionStepObject2 struct{…}`

        - `ID string`

          Step identifier, referenced by enrollment `currentStepId` and message `sequenceStepId`.

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftResponseDefinitionStepObject2DeliveryModeAuto SequenceUpdateDraftResponseDefinitionStepObject2DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject2DeliveryModeForReview SequenceUpdateDraftResponseDefinitionStepObject2DeliveryMode = "FOR_REVIEW"`

        - `IncludeNote bool`

          Whether the connection request carries a note. A step authored before this setting existed reads as true.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in.

          - `const SequenceUpdateDraftResponseDefinitionStepObject2ModeAgent SequenceUpdateDraftResponseDefinitionStepObject2Mode = "AGENT"`

        - `Name string`

          Display name of the step.

        - `Prompt string`

          Instructions the agent follows when composing this message.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftResponseDefinitionStepObject2TypeLinkedinInvite SequenceUpdateDraftResponseDefinitionStepObject2Type = "LINKEDIN_INVITE"`

      - `type SequenceUpdateDraftResponseDefinitionStepObject3 struct{…}`

        - `ID string`

          Step identifier, referenced by enrollment `currentStepId` and message `sequenceStepId`.

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftResponseDefinitionStepObject3DeliveryModeAuto SequenceUpdateDraftResponseDefinitionStepObject3DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject3DeliveryModeForReview SequenceUpdateDraftResponseDefinitionStepObject3DeliveryMode = "FOR_REVIEW"`

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in.

          - `const SequenceUpdateDraftResponseDefinitionStepObject3ModeTemplate SequenceUpdateDraftResponseDefinitionStepObject3Mode = "TEMPLATE"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftResponseDefinitionStepObject3Template`

          The email every contact receives.

          - `Body string`

            Email body as Markdown, without the sign-off or signature, which are added when the message is written. Each `{{ }}` is a variable filled in per contact, with a fallback for a contact missing the value; a field variable names the field by the `ad_` ID the field-definitions endpoints list.

          - `Subject string`

            Plain-text subject line. Each `{{ }}` is a variable filled in per contact, with a fallback for a contact missing the value; a field variable names the field by the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftResponseDefinitionStepObject3TypeEmail SequenceUpdateDraftResponseDefinitionStepObject3Type = "EMAIL"`

      - `type SequenceUpdateDraftResponseDefinitionStepObject4 struct{…}`

        - `ID string`

          Step identifier, referenced by enrollment `currentStepId` and message `sequenceStepId`.

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftResponseDefinitionStepObject4DeliveryModeAuto SequenceUpdateDraftResponseDefinitionStepObject4DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject4DeliveryModeForReview SequenceUpdateDraftResponseDefinitionStepObject4DeliveryMode = "FOR_REVIEW"`

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in.

          - `const SequenceUpdateDraftResponseDefinitionStepObject4ModeTemplate SequenceUpdateDraftResponseDefinitionStepObject4Mode = "TEMPLATE"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftResponseDefinitionStepObject4Template`

          The message every contact receives; for an invite, its connection note, sent only with `includeNote`.

          - `Body string`

            Plain-text message. Each `{{ }}` is a variable filled in per contact, with a fallback for a contact missing the value; a field variable names the field by the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftResponseDefinitionStepObject4TypeLinkedinMessage SequenceUpdateDraftResponseDefinitionStepObject4Type = "LINKEDIN_MESSAGE"`

      - `type SequenceUpdateDraftResponseDefinitionStepObject5 struct{…}`

        - `ID string`

          Step identifier, referenced by enrollment `currentStepId` and message `sequenceStepId`.

        - `DeliveryMode string`

          `AUTO` sends without manual approval, subject to the send window and limits; `FOR_REVIEW` requires a person to approve the draft before sending.

          - `const SequenceUpdateDraftResponseDefinitionStepObject5DeliveryModeAuto SequenceUpdateDraftResponseDefinitionStepObject5DeliveryMode = "AUTO"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject5DeliveryModeForReview SequenceUpdateDraftResponseDefinitionStepObject5DeliveryMode = "FOR_REVIEW"`

        - `IncludeNote bool`

          Whether the connection request carries a note. A step authored before this setting existed reads as true.

        - `Mode string`

          How each message is written: `AGENT` composes it from `prompt`; `TEMPLATE` sends `template` to every contact, with its variables filled in.

          - `const SequenceUpdateDraftResponseDefinitionStepObject5ModeTemplate SequenceUpdateDraftResponseDefinitionStepObject5Mode = "TEMPLATE"`

        - `Name string`

          Display name of the step.

        - `Template SequenceUpdateDraftResponseDefinitionStepObject5Template`

          The message every contact receives; for an invite, its connection note, sent only with `includeNote`.

          - `Body string`

            Plain-text message. Each `{{ }}` is a variable filled in per contact, with a fallback for a contact missing the value; a field variable names the field by the `ad_` ID the field-definitions endpoints list.

        - `Type string`

          Step type.

          - `const SequenceUpdateDraftResponseDefinitionStepObject5TypeLinkedinInvite SequenceUpdateDraftResponseDefinitionStepObject5Type = "LINKEDIN_INVITE"`

      - `type SequenceUpdateDraftResponseDefinitionStepObject6 struct{…}`

        - `ID string`

          Step identifier.

        - `Duration int64`

          Length of the wait.

        - `Type string`

          `WAIT` pauses for a fixed time; `WAIT_FOR_CONNECTION` waits up to that long for a LinkedIn invite to be accepted.

          - `const SequenceUpdateDraftResponseDefinitionStepObject6TypeWait SequenceUpdateDraftResponseDefinitionStepObject6Type = "WAIT"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject6TypeWaitForConnection SequenceUpdateDraftResponseDefinitionStepObject6Type = "WAIT_FOR_CONNECTION"`

        - `Unit string`

          Unit of `duration`.

          - `const SequenceUpdateDraftResponseDefinitionStepObject6UnitDay SequenceUpdateDraftResponseDefinitionStepObject6Unit = "DAY"`

          - `const SequenceUpdateDraftResponseDefinitionStepObject6UnitMinute SequenceUpdateDraftResponseDefinitionStepObject6Unit = "MINUTE"`

  - `Name string`

    Name the sequence takes when the draft is published.

  - `PublishWarnings []SequenceUpdateDraftResponsePublishWarning`

    What publishing this draft would change for contacts already in the sequence; empty when nothing is affected. Before the first publish, the only possible warning is a proposed sender that was archived and would be left off.

    - `Code string`

      What publishing would change.

      - `const SequenceUpdateDraftResponsePublishWarningCodeDelayShortened SequenceUpdateDraftResponsePublishWarningCode = "delay_shortened"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeDelayLengthened SequenceUpdateDraftResponsePublishWarningCode = "delay_lengthened"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeConnectionWaitShortened SequenceUpdateDraftResponsePublishWarningCode = "connection_wait_shortened"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeConnectionWaitLengthened SequenceUpdateDraftResponsePublishWarningCode = "connection_wait_lengthened"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeSendScheduleChanged SequenceUpdateDraftResponsePublishWarningCode = "send_schedule_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeSendConfigurationChanged SequenceUpdateDraftResponsePublishWarningCode = "send_configuration_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeSendPriorityChanged SequenceUpdateDraftResponsePublishWarningCode = "send_priority_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeSendersChanged SequenceUpdateDraftResponsePublishWarningCode = "senders_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeEmailSenderPoolEmptied SequenceUpdateDraftResponsePublishWarningCode = "email_sender_pool_emptied"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeLinkedinAccountPoolEmptied SequenceUpdateDraftResponsePublishWarningCode = "linkedin_account_pool_emptied"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeAssignedSenderRemoved SequenceUpdateDraftResponsePublishWarningCode = "assigned_sender_removed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeDeliveryBecameAutomatic SequenceUpdateDraftResponsePublishWarningCode = "delivery_became_automatic"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeInviteNoteEnabled SequenceUpdateDraftResponsePublishWarningCode = "invite_note_enabled"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeInviteNoteDisabled SequenceUpdateDraftResponsePublishWarningCode = "invite_note_disabled"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeStepInserted SequenceUpdateDraftResponsePublishWarningCode = "step_inserted"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeAutomaticSendStepInserted SequenceUpdateDraftResponsePublishWarningCode = "automatic_send_step_inserted"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeStepRemoved SequenceUpdateDraftResponsePublishWarningCode = "step_removed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeStepTypeChanged SequenceUpdateDraftResponsePublishWarningCode = "step_type_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeStepOrderChanged SequenceUpdateDraftResponsePublishWarningCode = "step_order_changed"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeFullIdentityRewrite SequenceUpdateDraftResponsePublishWarningCode = "full_identity_rewrite"`

      - `const SequenceUpdateDraftResponsePublishWarningCodeLowIdentityOverlap SequenceUpdateDraftResponsePublishWarningCode = "low_identity_overlap"`

    - `Message string`

      What would change, in plain language.

    - `Severity string`

      `destructive` when contacts already in the sequence may skip, repeat or receive a step they would not have; `warning` otherwise.

      - `const SequenceUpdateDraftResponsePublishWarningSeverityWarning SequenceUpdateDraftResponsePublishWarningSeverity = "warning"`

      - `const SequenceUpdateDraftResponsePublishWarningSeverityDestructive SequenceUpdateDraftResponsePublishWarningSeverity = "destructive"`

    - `StepIDs []string`

      The steps involved; empty for a sequence-wide change.

  - `Reviewers []SequenceUpdateDraftResponseReviewer`

    Extra members who may approve this sequence’s `FOR_REVIEW` messages before they send. The sending member and the sequence’s creator always review, whether or not they are listed.

    - `ID string`

      ID of the member.

    - `ObjectType string`

      Always `member`.

      - `const SequenceUpdateDraftResponseReviewerObjectTypeMember SequenceUpdateDraftResponseReviewerObjectType = "member"`

  - `Senders []SequenceUpdateDraftResponseSender`

    The senders this draft will publish; new contacts rotate across them. Until a save changes it, this is the sequence’s live list. An archived sender stays listed but never sends; any change to the list drops it.

    - `ID string`

      ID of the sender.

    - `ObjectType string`

      Always `sender`.

      - `const SequenceUpdateDraftResponseSenderObjectTypeSender SequenceUpdateDraftResponseSenderObjectType = "sender"`

  - `SequenceID string`

    The sequence this draft belongs to.

  - `UpdatedAt string`

    When the draft last changed.

  - `Version string`

    Opaque token for the current state of the draft. Send it as `expectedVersion` on the next save, publish or discard; it changes whenever anyone edits the draft.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/Lightfld/lightfield-go"
  "github.com/Lightfld/lightfield-go/option"
)

func main() {
  client := githubcomlightfldlightfieldgo.NewClient(
    option.WithAPIKey("My API Key"),
  )
  sequenceUpdateDraftResponse, err := client.Sequence.UpdateDraft(
    context.TODO(),
    "id",
    githubcomlightfldlightfieldgo.SequenceUpdateDraftParams{

    },
  )
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", sequenceUpdateDraftResponse.Channels)
}
```

#### Response

```json
{
  "channels": [
    "EMAIL"
  ],
  "definition": {
    "description": "description",
    "messaging": {
      "callToAction": "callToAction",
      "persona": "persona",
      "trigger": "trigger",
      "valueProp": "valueProp"
    },
    "pacing": {
      "EMAIL": {
        "dailyLimit": -9007199254740991
      },
      "LINKEDIN_INVITE": {
        "dailyLimit": -9007199254740991
      },
      "LINKEDIN_MESSAGE": {
        "dailyLimit": -9007199254740991
      }
    },
    "priority": "HIGH",
    "sendWindow": {
      "daysOfWeek": [
        -9007199254740991
      ],
      "endHour": -9007199254740991,
      "startHour": -9007199254740991,
      "timezone": "timezone"
    },
    "steps": [
      {
        "id": "id",
        "deliveryMode": "AUTO",
        "mode": "AGENT",
        "name": "name",
        "prompt": "prompt",
        "type": "EMAIL"
      }
    ]
  },
  "name": "name",
  "publishWarnings": [
    {
      "code": "delay_shortened",
      "message": "message",
      "severity": "warning",
      "stepIds": [
        "string"
      ]
    }
  ],
  "reviewers": [
    {
      "id": "x",
      "objectType": "member"
    }
  ],
  "senders": [
    {
      "id": "x",
      "objectType": "sender"
    }
  ],
  "sequenceId": "sequenceId",
  "updatedAt": "updatedAt",
  "version": "version"
}
```
