# Update Workflow

> Update the Workflow name or replace its rules. Replacing rules requires the current revision. A changed definition creates a new revision; unchanged rules and name-only edits preserve it. Existing Assets and Uploads keep their selected revision until a ready Asset explicitly updates to the latest revision. Archived Workflows cannot be updated.

```json
{
  "path": "/workflows/{workflowId}",
  "method": "patch",
  "schema": {
    "description": "Update the Workflow name or replace its rules. Replacing rules requires the current revision. A changed definition creates a new revision; unchanged rules and name-only edits preserve it. Existing Assets and Uploads keep their selected revision until a ready Asset explicitly updates to the latest revision. Archived Workflows cannot be updated.",
    "operationId": "patchWorkflow",
    "parameters": [
      {
        "description": "ID of the Workflow.",
        "in": "path",
        "name": "workflowId",
        "required": true,
        "schema": {
          "type": "string"
        }
      }
    ],
    "requestBody": {
      "content": {
        "application/json": {
          "schema": {
            "$ref": "#/components/schemas/WorkflowUpdateParams"
          }
        }
      },
      "required": true
    },
    "responses": {
      "204": {
        "description": "Update Workflow"
      },
      "400": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorValidation"
            }
          }
        },
        "description": "Validation error"
      },
      "401": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorAuthentication"
            }
          }
        },
        "description": "Authentication error"
      },
      "403": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorForbidden"
            }
          }
        },
        "description": "Forbidden error"
      },
      "404": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorNotFound"
            }
          }
        },
        "description": "NotFound error"
      },
      "409": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorConflict"
            }
          }
        },
        "description": "Conflict error"
      },
      "429": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorTooManyRequests"
            }
          }
        },
        "description": "TooManyRequests error"
      },
      "503": {
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/ResponseErrorServiceUnavailable"
            }
          }
        },
        "description": "ServiceUnavailable error"
      }
    },
    "security": [
      {
        "ProjectAccessToken": []
      }
    ],
    "summary": "Update Workflow",
    "tags": [
      "Workflows"
    ],
    "x-codeSamples": [
      {
        "lang": "typescript",
        "source": "import Chunkify from '@chunkify/chunkify';\n\nconst client = new Chunkify({\n  projectAccessToken: 'My Project Access Token',\n});\n\nconst result = await client.workflows.update('wfl_example', {\n  name: 'Updated workflow',\n});\n\nconsole.log(result);"
      },
      {
        "lang": "python",
        "source": "from chunkify import Chunkify\n\nclient = Chunkify(\n    project_access_token=\"My Project Access Token\",\n)\n\nresult = client.workflows.update(\n    \"wfl_example\",\n    name=\"Updated workflow\",\n)\n\nprint(result)"
      },
      {
        "lang": "php",
        "source": "\u003c?php\n\nuse Chunkify\\Client;\n\n$client = new Client(\n    projectAccessToken: 'My Project Access Token',\n);\n\n$result = $client-\u003eworkflows-\u003eupdate(\n    'wfl_example',\n    name: 'Updated workflow',\n);\n\nvar_dump($result);"
      },
      {
        "lang": "golang",
        "source": "package main\n\nimport (\n\t\"context\"\n\n\t\"github.com/chunkifydev/chunkify-go\"\n\t\"github.com/chunkifydev/chunkify-go/option\"\n)\n\nfunc main() {\n\tclient := chunkify.NewClient(\n\t\toption.WithProjectAccessToken(\"My Project Access Token\"),\n\t)\n\n\terr := client.Workflows.Update(\n\t\tcontext.TODO(),\n\t\t\"wfl_example\",\n\t\tchunkify.WorkflowUpdateParams{\n\t\t\tName: chunkify.String(\"Updated workflow\"),\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n}\n"
      }
    ]
  }
}
```



```json #/components/schemas/ResponseErrorForbidden
{
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 403,
          "description": "Code is the HTTP status code",
          "examples": [
            403
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Unauthorized to perform this action"
          ],
          "type": "string"
        },
        "type": {
          "const": "ForbiddenError",
          "description": "Type indicates the error category",
          "enum": [
            "ForbiddenError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/ResponseErrorNotFound
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 404,
          "description": "Code is the HTTP status code",
          "examples": [
            404
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Ressource not found"
          ],
          "type": "string"
        },
        "type": {
          "const": "NotFoundError",
          "description": "Type indicates the error category",
          "enum": [
            "NotFoundError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorConflict
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 409,
          "description": "Code is the HTTP status code",
          "examples": [
            409
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "source_unavailable: the original video is no longer accessible"
          ],
          "type": "string"
        },
        "type": {
          "const": "ConflictError",
          "description": "Type indicates the error category",
          "enum": [
            "ConflictError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorTooManyRequests
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 429,
          "description": "Code is the HTTP status code",
          "examples": [
            429
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Rate limit exceeded"
          ],
          "type": "string"
        },
        "type": {
          "const": "TooManyRequestsError",
          "description": "Type indicates the error category",
          "enum": [
            "TooManyRequestsError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```



```json #/components/schemas/ResponseErrorServiceUnavailable
{
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 503,
          "description": "Code is the HTTP status code",
          "examples": [
            503
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "The service is temporarily unavailable; retry the request"
          ],
          "type": "string"
        },
        "type": {
          "const": "ServiceUnavailableError",
          "description": "Type indicates the error category",
          "enum": [
            "ServiceUnavailableError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/WorkflowUpdateParams
{
  "additionalProperties": false,
  "dependentRequired": {
    "expected_revision": [
      "rules"
    ],
    "rules": [
      "schema_version",
      "expected_revision"
    ],
    "schema_version": [
      "rules"
    ]
  },
  "description": "Changes to a Workflow. Provide a name, a replacement definition, or both. Replacing rules creates a revision; changing only the name does not.",
  "properties": {
    "expected_revision": {
      "description": "ExpectedRevision specifies the current Workflow revision when replacing rules. The update returns a conflict if it no longer matches.\nRequired when rules is provided. Must be at least 1.",
      "minimum": 1,
      "type": "integer"
    },
    "name": {
      "description": "Name specifies the Workflow name.\nUse 1 to 128 characters.",
      "maxLength": 128,
      "minLength": 1,
      "type": "string"
    },
    "rules": {
      "description": "Rules specifies the event subscriptions and actions in this definition.\nProvide exactly one asset.ready rule and up to 15 connected rules, with at most 32 actions and 65536 encoded bytes across all rules. Array order affects display only.\nReplaces the complete definition and requires schema_version and expected_revision. Existing Assets and Uploads keep their pinned revision.",
      "items": {
        "$ref": "#/components/schemas/WorkflowRule"
      },
      "maxItems": 16,
      "minItems": 1,
      "type": "array"
    },
    "schema_version": {
      "description": "SchemaVersion specifies the Workflow definition format. The supported version is 1. Required when rules is provided.",
      "enum": [
        1
      ],
      "type": "integer"
    }
  },
  "type": "object",
  "x-reject-null-fields": [
    "name",
    "schema_version",
    "expected_revision",
    "rules"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowRule
{
  "additionalProperties": false,
  "allOf": [
    {
      "else": {
        "required": [
          "origin"
        ]
      },
      "if": {
        "properties": {
          "event": {
            "const": "asset.ready"
          }
        }
      },
      "then": {
        "not": {
          "required": [
            "origin"
          ]
        }
      }
    }
  ],
  "description": "A starting or connected step with one or more independent actions.",
  "properties": {
    "actions": {
      "description": "Actions specifies the work to start when the rule matches. Actions can run concurrently; array order does not define execution order.\nProvide 1 to 32 actions per rule, with at most 32 across the definition.",
      "items": {
        "$ref": "#/components/schemas/WorkflowAction"
      },
      "maxItems": 32,
      "minItems": 1,
      "type": "array"
    },
    "event": {
      "description": "Event specifies when this rule starts. Use asset.ready for the single starting rule. Output ready events require an origin caption or static rendition action in this Workflow.",
      "enum": [
        "asset.ready",
        "asset.output.ready"
      ],
      "type": "string"
    },
    "id": {
      "description": "Id specifies a stable rule key, unique within this Workflow definition.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "origin": {
      "$ref": "#/components/schemas/WorkflowOrigin",
      "description": "Origin specifies the action whose ready output starts this rule. Required for asset.output.ready; omit it for asset.ready. Translation steps must connect to a create_caption action.\nReferences must point to a compatible action in this definition and must not form a cycle."
    }
  },
  "required": [
    "id",
    "event",
    "actions"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "event",
    "origin",
    "actions"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowAction
{
  "description": "One action to perform when a rule matches. The type determines the required parameters.",
  "discriminator": {
    "mapping": {
      "create_caption": "#/components/schemas/WorkflowCaptionAction",
      "create_static_rendition": "#/components/schemas/WorkflowStaticAction",
      "create_thumbnails": "#/components/schemas/WorkflowThumbnailAction",
      "create_transcript": "#/components/schemas/WorkflowTranscriptAction",
      "translate_caption": "#/components/schemas/WorkflowTranslationAction"
    },
    "propertyName": "type"
  },
  "oneOf": [
    {
      "$ref": "#/components/schemas/WorkflowStaticAction"
    },
    {
      "$ref": "#/components/schemas/WorkflowCaptionAction"
    },
    {
      "$ref": "#/components/schemas/WorkflowTranslationAction"
    },
    {
      "$ref": "#/components/schemas/WorkflowThumbnailAction"
    },
    {
      "$ref": "#/components/schemas/WorkflowTranscriptAction"
    }
  ]
}
```



```json #/components/schemas/WorkflowTranscriptAction
{
  "additionalProperties": false,
  "description": "Creates or reuses the original-language transcript. Can run alongside caption generation in the same asset.ready rule.",
  "properties": {
    "id": {
      "description": "Id specifies a stable action key, unique within its rule.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "params": {
      "$ref": "#/components/schemas/AssetTranscriptOutputParams",
      "description": "Params specifies transcript settings. Pass an empty object."
    },
    "type": {
      "const": "create_transcript",
      "description": "Type specifies the action to perform. Must be create_transcript.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "params"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "type",
    "params"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/AssetTranscriptOutputParams
{
  "additionalProperties": false,
  "description": "Parameters for an original-language transcript. Pass an empty object; the spoken language is detected automatically.",
  "properties": {},
  "type": "object",
  "x-go-required-presence": true,
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowStaticAction
{
  "additionalProperties": false,
  "description": "Creates or reuses one static rendition for the Asset.",
  "properties": {
    "id": {
      "description": "Id specifies a stable action key, unique within its rule.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "params": {
      "$ref": "#/components/schemas/WorkflowStaticParams",
      "description": "Params specifies the static rendition resolution."
    },
    "type": {
      "const": "create_static_rendition",
      "description": "Type specifies the action to perform. Must be create_static_rendition.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "params"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "type",
    "params"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowStaticParams
{
  "additionalProperties": false,
  "description": "Parameters for creating one static rendition.",
  "properties": {
    "resolution": {
      "description": "Resolution specifies the H.264 MP4 output resolution. highest selects the largest supported output without upscaling.\nHobby supports up to 1080p; other plans support up to 2160p. Streaming resolution limits do not apply.",
      "enum": [
        "highest",
        "240p",
        "360p",
        "480p",
        "540p",
        "720p",
        "1080p",
        "1440p",
        "2160p"
      ],
      "type": "string"
    }
  },
  "required": [
    "resolution"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "resolution"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowCaptionAction
{
  "additionalProperties": false,
  "description": "Generates or reuses original captions and their transcript from the Asset's speech.",
  "properties": {
    "id": {
      "description": "Id specifies a stable action key, unique within its rule.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "params": {
      "$ref": "#/components/schemas/WorkflowCaptionParams",
      "description": "Params specifies caption generation settings. Pass an empty object."
    },
    "transcript_id": {
      "$ref": "#/components/schemas/WorkflowOutputBinding",
      "description": "TranscriptId binds caption publication to the transcript in the triggering event. Use it only when connected to create_transcript. When omitted, creates or reuses the Asset’s original transcript."
    },
    "type": {
      "const": "create_caption",
      "description": "Type specifies the action to perform. Must be create_caption.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "params"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "type",
    "params"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowCaptionParams
{
  "additionalProperties": false,
  "description": "Parameters for generating original captions. Pass an empty object; the spoken language is detected automatically.",
  "properties": {},
  "type": "object",
  "x-reject-null-fields": [],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowOutputBinding
{
  "additionalProperties": false,
  "description": "Selects the output referenced by the triggering event.",
  "properties": {
    "from": {
      "description": "From specifies where to read the input output ID. Use event.output.id to consume the output in the triggering asset.output.ready event.",
      "enum": [
        "event.output.id"
      ],
      "type": "string"
    }
  },
  "required": [
    "from"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "from"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowTranslationAction
{
  "additionalProperties": false,
  "description": "Translates or reuses an original caption in one target language. Requires an asset.output.ready rule connected to an original caption creation action.",
  "properties": {
    "caption_id": {
      "$ref": "#/components/schemas/WorkflowOutputBinding",
      "description": "CaptionId specifies the binding to the original caption in the triggering event."
    },
    "id": {
      "description": "Id specifies a stable action key, unique within its rule.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "params": {
      "$ref": "#/components/schemas/WorkflowTranslationParams",
      "description": "Params specifies the target language."
    },
    "type": {
      "const": "translate_caption",
      "description": "Type specifies the action to perform. Must be translate_caption.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "params",
    "caption_id"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "type",
    "params",
    "caption_id"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowOutputBinding
{
  "additionalProperties": false,
  "description": "Selects the output referenced by the triggering event.",
  "properties": {
    "from": {
      "description": "From specifies where to read the input output ID. Use event.output.id to consume the output in the triggering asset.output.ready event.",
      "enum": [
        "event.output.id"
      ],
      "type": "string"
    }
  },
  "required": [
    "from"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "from"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowTranslationParams
{
  "additionalProperties": false,
  "description": "Parameters for translating one original caption into another language.",
  "properties": {
    "language_code": {
      "description": "LanguageCode specifies the target language for the translated subtitle track, such as en or fr. The same code appears in the caption and HLS manifest.",
      "enum": [
        "en",
        "fr",
        "es",
        "de",
        "it",
        "pt",
        "nl",
        "ja",
        "ko",
        "zh",
        "ar",
        "hi",
        "ru",
        "tr",
        "pl",
        "sv"
      ],
      "type": "string"
    }
  },
  "required": [
    "language_code"
  ],
  "type": "object",
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowThumbnailAction
{
  "additionalProperties": false,
  "description": "Creates an independent thumbnail request after asset.ready. Replaying this action uses its accepted request; separate actions create separate requests.",
  "properties": {
    "id": {
      "description": "Id specifies a stable action key, unique within its rule.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "params": {
      "$ref": "#/components/schemas/WorkflowThumbnailParams",
      "description": "Params specifies sampling and image settings. Outputs use the Asset folder and Storage."
    },
    "type": {
      "const": "create_thumbnails",
      "description": "Type specifies the action to perform. Must be create_thumbnails.",
      "type": "string"
    }
  },
  "required": [
    "id",
    "type",
    "params"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "id",
    "type",
    "params"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowThumbnailParams
{
  "additionalProperties": false,
  "description": "Generate additional thumbnails in the Asset folder and Storage. Each layout, format and size combination can be requested once. Specify exactly one of timestamps or count.",
  "oneOf": [
    {
      "required": [
        "timestamps"
      ]
    },
    {
      "required": [
        "count"
      ]
    }
  ],
  "properties": {
    "count": {
      "description": "Count specifies 1 to 100 thumbnails at the middle of equal sections of the selected range.",
      "maximum": 100,
      "minimum": 1,
      "type": "integer"
    },
    "format": {
      "$ref": "#/components/schemas/ThumbnailFormat",
      "default": "jpeg",
      "description": "Format selects JPEG or WebP. Defaults to JPEG."
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "Metadata attaches string values to this request. The serialized object may contain at most 2048 bytes.",
      "type": "object",
      "x-maxJSONBytes": 2048
    },
    "output": {
      "$ref": "#/components/schemas/ThumbnailOutput",
      "default": "images",
      "description": "Output selects images or sprites. Defaults to images."
    },
    "range": {
      "$ref": "#/components/schemas/ThumbnailRangeParams",
      "description": "Range limits sampling to part of the Source. Defaults to the whole Source duration."
    },
    "size": {
      "default": 320,
      "description": "Size specifies the maximum image or tile edge in pixels, from 64 to 1920. Defaults to 320. Odd sizes are supported. Preserves display aspect ratio without cropping or upscaling.",
      "maximum": 1920,
      "minimum": 64,
      "type": "integer"
    },
    "timestamps": {
      "description": "Timestamps specifies 1 to 100 Source-relative target times in seconds. Times outside the selected range are skipped when the action runs. If none remain, the action is skipped without a charge. Repeated targets produce separate outputs.",
      "items": {
        "description": "A target time in seconds.",
        "minimum": 0,
        "type": "number"
      },
      "maxItems": 100,
      "minItems": 1,
      "type": "array"
    }
  },
  "type": "object",
  "x-reject-null-fields": [
    "timestamps",
    "count",
    "range",
    "output",
    "format",
    "size",
    "metadata"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/ThumbnailFormat
{
  "description": "Format specifies the image encoding.",
  "enum": [
    "jpeg",
    "webp"
  ],
  "type": "string"
}
```



```json #/components/schemas/ThumbnailOutput
{
  "description": "Output specifies individual images or automatically arranged sprite sheets.",
  "enum": [
    "images",
    "sprites"
  ],
  "type": "string"
}
```



```json #/components/schemas/ThumbnailRangeParams
{
  "additionalProperties": false,
  "description": "Optional Source-relative sampling boundaries.",
  "properties": {
    "end": {
      "description": "End specifies the exclusive upper bound in seconds. Defaults to the Source duration.",
      "exclusiveMinimum": 0,
      "type": "number"
    },
    "start": {
      "description": "Start specifies the inclusive lower bound in seconds. Defaults to zero.",
      "minimum": 0,
      "type": "number"
    }
  },
  "type": "object",
  "x-reject-null-fields": [
    "start",
    "end"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/WorkflowOrigin
{
  "additionalProperties": false,
  "description": "Connects this rule to the output created or reused by an action in the same Workflow revision.",
  "properties": {
    "action_id": {
      "description": "ActionId specifies the ID of the producing action within that rule.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    },
    "rule_id": {
      "description": "RuleId specifies the ID of the rule containing the producing action.\nUse 1 to 64 characters, starting with a letter and containing only letters, digits, or underscores.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[A-Za-z][A-Za-z0-9_]*$",
      "type": "string"
    }
  },
  "required": [
    "rule_id",
    "action_id"
  ],
  "type": "object",
  "x-reject-null-fields": [
    "rule_id",
    "action_id"
  ],
  "x-reject-unknown-fields": true
}
```



```json #/components/schemas/ResponseErrorValidation
{
  "properties": {
    "error": {
      "properties": {
        "code": {
          "const": 400,
          "description": "Code is the HTTP status code",
          "examples": [
            400
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Invalid request parameters"
          ],
          "type": "string"
        },
        "type": {
          "const": "ValidationError",
          "description": "Type indicates the error category",
          "enum": [
            "ValidationError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ]
}
```



```json #/components/schemas/ResponseErrorAuthentication
{
  "description": "Error response",
  "properties": {
    "error": {
      "description": "Error response details",
      "properties": {
        "code": {
          "const": 401,
          "description": "Code is the HTTP status code",
          "examples": [
            401
          ],
          "type": "integer"
        },
        "message": {
          "description": "Message is a human-readable error description",
          "examples": [
            "Authentication error: invalid token or subscription inactive"
          ],
          "type": "string"
        },
        "type": {
          "const": "AuthenticationError",
          "description": "Type indicates the error category",
          "enum": [
            "AuthenticationError"
          ],
          "type": "string"
        }
      },
      "required": [
        "type",
        "code",
        "message"
      ],
      "type": "object"
    },
    "status": {
      "const": "error",
      "description": "Status indicates the response status \"error\"",
      "type": "string"
    }
  },
  "required": [
    "status",
    "error"
  ],
  "type": "object"
}
```