> ## Documentation Index
> Fetch the complete documentation index at: https://developer.siit.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Update a Custom Action

> Only the provided attributes change. Every definition change creates a new version of the action; past executions keep the version they ran with.

## Usage


## OpenAPI

````yaml put /v1/custom_integrations/{custom_integration_uid}/custom_actions/{uid}
openapi: 3.0.1
info:
  title: Siit Public API
  version: v0
servers:
  - url: https://api.siit.io
security: []
paths:
  /v1/custom_integrations/{custom_integration_uid}/custom_actions/{uid}:
    parameters:
      - name: custom_integration_uid
        in: path
        description: The UID of the Custom Integration
        required: true
        schema:
          type: string
      - name: uid
        in: path
        description: The UID of the Custom Action
        required: true
        schema:
          type: string
    put:
      tags:
        - Custom Action
      summary: Update a Custom Action
      description: >-
        Only the provided attributes change. Every definition change creates a
        new version of the action; past executions keep the version they ran
        with.
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/custom_action_write'
      responses:
        '200':
          description: Successful
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/custom_action_result_object'
      security:
        - bearer: []
components:
  schemas:
    custom_action_write:
      type: object
      description: >-
        On update, only the provided attributes change; `custom_headers`
        replaces the whole list. Send `workflow_input_definition: null` to
        remove the action from Workflows, and an empty `body` to restore the
        default payload.
      properties:
        name:
          type: string
          maxLength: 100
          description: >-
            The Custom Action name, unique within its Custom Integration
            (case-insensitive)
        description:
          type: string
          maxLength: 1000
          nullable: true
          description: >-
            What the action does. Shown to admins and used by AI agents to
            decide when to run it.
        context:
          type: string
          enum:
            - app_access_request
            - none
            - request
            - user
          default: none
          description: >-
            The record the action runs on: `request`, `user`,
            `app_access_request`, or `none`. It decides which `{{variable}}`
            interpolations are available in the URL, headers and body.
        enabled:
          type: boolean
          default: false
          description: Whether the action can be executed
        interactive_mode:
          type: string
          enum:
            - disabled
            - dynamic_inputs
            - no_inputs
            - static_inputs
          default: disabled
          description: >-
            How the action is offered to agents in the Siit UI: `disabled` (not
            offered), `no_inputs` (run in one click), `static_inputs` (form
            described by `interactive_input_definition`), or `dynamic_inputs`
            (form fetched from `interactive_input_definition_url` at run time)
        interactive_input_definition_url:
          type: string
          format: uri
          maxLength: 2048
          nullable: true
          description: >-
            HTTPS URL returning the form to display. Required when
            `interactive_mode` is `dynamic_inputs`; cleared otherwise.
        interactive_input_definition:
          type: array
          items:
            oneOf:
              - title: Enum field
                type: object
                required:
                  - slug
                  - kind
                  - label
                  - values
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The allowed values
              - title: Scalar field
                type: object
                required:
                  - slug
                  - kind
                  - label
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          nullable: true
          description: >-
            The form to display. Required when `interactive_mode` is
            `static_inputs`; cleared otherwise.
        workflow_input_definition:
          type: array
          items:
            oneOf:
              - title: Enum field
                type: object
                required:
                  - slug
                  - kind
                  - label
                  - values
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The allowed values
              - title: Scalar field
                type: object
                required:
                  - slug
                  - kind
                  - label
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          nullable: true
          description: >-
            Inputs Workflows provide when running the action. `null` keeps the
            action out of Workflows; an empty array offers it to Workflows
            without inputs.
        submit_url:
          type: string
          format: uri
          maxLength: 2048
          description: >-
            HTTPS URL Siit calls when the action runs. Supports `{{variable}}`
            interpolation.
        http_method:
          type: string
          enum:
            - get
            - post
            - put
            - patch
            - delete
          default: post
          description: >-
            HTTP method used to call `submit_url`. A `get` action cannot declare
            inputs nor a body. Case-insensitive.
        custom_headers:
          type: array
          items:
            type: object
            required:
              - name
              - value
            properties:
              name:
                type: string
                description: The HTTP header name
              value:
                type: string
                description: >-
                  The HTTP header value. Supports `{{variable}}` interpolation
                  (e.g. `{{company.name}}`), resolved when the request is sent.
          description: >-
            Extra HTTP headers sent with the request, on top of the Custom
            Integration ones
        body:
          type: string
          maxLength: 100000
          nullable: true
          description: >-
            Request body template. Supports `{{variable}}` interpolation. When
            empty, Siit sends a JSON object of the input values keyed by slug;
            use `{{variable}}` interpolation in a custom body to send context
            fields.
        output_definition:
          type: array
          items:
            oneOf:
              - title: Enum output
                type: object
                required:
                  - slug
                  - kind
                  - values
                properties:
                  slug:
                    type: string
                    description: >-
                      Path of the value in your endpoint JSON response, segments
                      separated by dots (e.g. `ticket.id` or `items.0.name`)
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The possible values
              - title: Scalar output
                type: object
                required:
                  - slug
                  - kind
                properties:
                  slug:
                    type: string
                    description: >-
                      Path of the value in your endpoint JSON response, segments
                      separated by dots (e.g. `ticket.id` or `items.0.name`)
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          default: []
          description: >-
            Values extracted from your endpoint JSON response, reusable in later
            Workflow steps
    custom_action_result_object:
      type: object
      properties:
        result:
          $ref: '#/components/schemas/custom_action'
    custom_action:
      type: object
      properties:
        uid:
          type: string
          readOnly: true
          description: The UID of the Custom Action
        custom_integration_uid:
          type: string
          readOnly: true
          description: The UID of the Custom Integration the action belongs to
        name:
          type: string
          description: >-
            The Custom Action name, unique within its Custom Integration
            (case-insensitive)
        description:
          type: string
          nullable: true
          description: >-
            What the action does. Shown to admins and used by AI agents to
            decide when to run it.
        context:
          type: string
          enum:
            - app_access_request
            - none
            - request
            - user
          description: >-
            The record the action runs on: `request`, `user`,
            `app_access_request`, or `none`. It decides which `{{variable}}`
            interpolations are available in the URL, headers and body.
        enabled:
          type: boolean
          description: Whether the action can be executed
        interactive_mode:
          type: string
          enum:
            - disabled
            - dynamic_inputs
            - no_inputs
            - static_inputs
          description: >-
            How the action is offered to agents in the Siit UI: `disabled` (not
            offered), `no_inputs` (run in one click), `static_inputs` (form
            described by `interactive_input_definition`), or `dynamic_inputs`
            (form fetched from `interactive_input_definition_url` at run time)
        interactive_input_definition_url:
          type: string
          nullable: true
          description: >-
            HTTPS URL returning the form to display. Required when
            `interactive_mode` is `dynamic_inputs`; cleared otherwise.
        interactive_input_definition:
          type: array
          items:
            oneOf:
              - title: Enum field
                type: object
                required:
                  - slug
                  - kind
                  - label
                  - values
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The allowed values
              - title: Scalar field
                type: object
                required:
                  - slug
                  - kind
                  - label
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          nullable: true
          description: >-
            The form to display. Required when `interactive_mode` is
            `static_inputs`; cleared otherwise.
        workflow_input_definition:
          type: array
          items:
            oneOf:
              - title: Enum field
                type: object
                required:
                  - slug
                  - kind
                  - label
                  - values
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The allowed values
              - title: Scalar field
                type: object
                required:
                  - slug
                  - kind
                  - label
                properties:
                  slug:
                    type: string
                    pattern: ^[a-zA-Z][a-zA-Z0-9_]*$
                    description: Key under which the value is sent to your endpoint
                  label:
                    type: string
                    maxLength: 200
                    description: Label displayed to the person filling the field
                  required:
                    type: boolean
                    default: false
                  multiple:
                    type: boolean
                    default: false
                    description: Accept several values. Only for `text` and `enum` fields.
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          nullable: true
          description: >-
            Inputs Workflows provide when running the action. `null` keeps the
            action out of Workflows; an empty array offers it to Workflows
            without inputs.
        submit_url:
          type: string
          description: >-
            HTTPS URL Siit calls when the action runs. Supports `{{variable}}`
            interpolation.
        http_method:
          type: string
          enum:
            - get
            - post
            - put
            - patch
            - delete
          description: >-
            HTTP method used to call `submit_url`. A `get` action cannot declare
            inputs nor a body.
        custom_headers:
          type: array
          items:
            type: object
            required:
              - name
              - value
            properties:
              name:
                type: string
                description: The HTTP header name
              value:
                type: string
                description: >-
                  The HTTP header value. Supports `{{variable}}` interpolation
                  (e.g. `{{company.name}}`), resolved when the request is sent.
          description: >-
            Extra HTTP headers sent with the request, on top of the Custom
            Integration ones
        body:
          type: string
          nullable: true
          description: >-
            Request body template. Supports `{{variable}}` interpolation. When
            empty, Siit sends a JSON object of the input values keyed by slug;
            use `{{variable}}` interpolation in a custom body to send context
            fields.
        output_definition:
          type: array
          items:
            oneOf:
              - title: Enum output
                type: object
                required:
                  - slug
                  - kind
                  - values
                properties:
                  slug:
                    type: string
                    description: >-
                      Path of the value in your endpoint JSON response, segments
                      separated by dots (e.g. `ticket.id` or `items.0.name`)
                  kind:
                    type: string
                    enum:
                      - enum
                  values:
                    type: array
                    items:
                      type: string
                    minItems: 1
                    description: The possible values
              - title: Scalar output
                type: object
                required:
                  - slug
                  - kind
                properties:
                  slug:
                    type: string
                    description: >-
                      Path of the value in your endpoint JSON response, segments
                      separated by dots (e.g. `ticket.id` or `items.0.name`)
                  kind:
                    type: string
                    enum:
                      - boolean
                      - date
                      - number
                      - text
          description: >-
            Values extracted from your endpoint JSON response, reusable in later
            Workflow steps
        created_at:
          type: string
          format: date-time
          description: datetime formatted as ISO 8601 (e.g. "2020-12-15T03:34:13.000Z")
          readOnly: true
        updated_at:
          type: string
          format: date-time
          description: datetime formatted as ISO 8601 (e.g. "2020-12-15T03:34:13.000Z")
          readOnly: true
  securitySchemes:
    bearer:
      type: http
      scheme: bearer

````