> ## Documentation Index > Fetch the complete documentation index at: https://kb.vastdata.com/llms.txt > Use this file to discover all available pages before exploring further. # Update Element Trigger by ID ## OpenAPI ````json PUT /triggers/element/{guid} { "openapi": "3.0.3", "info": { "title": "VAST DataEngine API", "description": "Combined OpenAPI specification for Document360: Provisioning, Telemetries Query, Telemetries Collector, and shared common components.", "version": "1.4.0" }, "servers": [ { "url": "http://localhost:3000", "description": "Provisioning Service (Local development server)" }, { "url": "http://localhost:8080/query_telemetries", "description": "Telemetries Query Service (Local development server)" }, { "url": "http://localhost:8080/telemetries", "description": "Telemetries Collector Service (Local development server)" } ], "tags": [ { "name": "Provisioning Service v1.4.0", "description": "Provisioning Service API" }, { "name": "Provisioning Service v1.4.0 > dataEngine", "description": "Data Engine lifecycle" }, { "name": "Provisioning Service v1.4.0 > setup_provisioning", "description": "Deprecated provisioning setup" }, { "name": "Provisioning Service v1.4.0 > pipelines", "description": "Pipelines" }, { "name": "Provisioning Service v1.4.0 > pipelineRevisions", "description": "Pipeline revisions" }, { "name": "Provisioning Service v1.4.0 > functions", "description": "Functions" }, { "name": "Provisioning Service v1.4.0 > functionRevisions", "description": "Function revisions" }, { "name": "Provisioning Service v1.4.0 > functionRevisionsDeprecated", "description": "Deprecated function revision endpoints" }, { "name": "Provisioning Service v1.4.0 > triggers", "description": "Triggers" }, { "name": "Provisioning Service v1.4.0 > topics", "description": "Topics" }, { "name": "Provisioning Service v1.4.0 > containerRegistries", "description": "Container registries" }, { "name": "Provisioning Service v1.4.0 > kubernetesClusters", "description": "Kubernetes clusters" }, { "name": "Provisioning Service v1.4.0 > kubernetesSecrets", "description": "Kubernetes secrets" }, { "name": "Provisioning Service v1.4.0 > mtlsAuthenticationCredentials", "description": "mTLS authentication credentials" }, { "name": "Provisioning Service v1.4.0 > dashboard", "description": "Dashboard" }, { "name": "Provisioning Service v1.4.0 > reports", "description": "Saved reports" }, { "name": "Telemetries Collector Service v1.4.0", "description": "API for collecting OTEL signals (traces, logs and metrics)" }, { "name": "Telemetries Collector Service v1.4.0 > collect_telemetries", "description": "Collect OTEL signals" }, { "name": "Telemetries Query Service v1.4.0", "description": "API for querying traces, logs and metrics" }, { "name": "Telemetries Query Service v1.4.0 > query_telemetries", "description": "Query traces and logs" }, { "name": "Telemetries Query Service v1.4.0 > metrics", "description": "Query metrics" }, { "name": "Telemetries Query Service v1.4.0 > reports", "description": "Saved reports" } ], "paths": { "/triggers/element/{guid}": { "parameters": [ { "$ref": "#/components/parameters/GUID" } ], "put": { "summary": "Update Element Trigger by ID", "operationId": "updateElementTriggerById", "tags": [ "Provisioning Service v1.4.0 > triggers" ], "requestBody": { "required": "true", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ElementTriggerCreate" } } } }, "responses": { "200": { "description": "The updated Element Trigger", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ElementTriggerResponse" } } } }, "400": { "$ref": "#/components/responses/BadRequestError" }, "401": { "$ref": "#/components/responses/UnauthorizedError" }, "403": { "$ref": "#/components/responses/ForbiddenError" }, "404": { "$ref": "#/components/responses/NotFoundError" }, "409": { "$ref": "#/components/responses/ConflictError" }, "422": { "$ref": "#/components/responses/ValidationError" }, "500": { "$ref": "#/components/responses/InternalServerError" } } } } }, "components": { "parameters": { "GUID": { "name": "guid", "in": "path", "required": "true", "schema": { "type": "string" } } }, "schemas": { "ElementTriggerCreate": { "allOf": [ { "$ref": "#/components/schemas/CommonTrigger" }, { "type": "object", "properties": { "config": { "$ref": "#/components/schemas/ElementTriggerConfig" }, "source_types": { "type": "array", "description": "Source types from which we want to trigger events. Relevant for Element Trigger", "items": { "$ref": "#/components/schemas/SourceType" }, "example": [ "S3" ] } }, "required": [ "config" ], "description": "Represents an element trigger entity.\nNote: While events and source_bucket_name are not marked as required in ElementTriggerConfig\n(for backward compatibility with deprecated APIs), the new explicit API endpoints validate\nthese fields at runtime in the controller layer.\n" } ] }, "ElementTriggerResponse": { "allOf": [ { "$ref": "#/components/schemas/Resource" }, { "$ref": "#/components/schemas/ElementTriggerCreate" }, { "type": "object", "required": [ "type" ], "properties": { "type": { "$ref": "#/components/schemas/TriggerType" }, "events": { "type": "array", "minItems": "1", "items": { "$ref": "#/components/schemas/TriggerEvent" } }, "source_bucket_name": { "type": "string", "description": "The bucket name of a VMS View. Relevant for Element Trigger", "example": "my-bucket" }, "topic": { "$ref": "#/components/schemas/VastRN" }, "status": { "$ref": "#/components/schemas/Status" } }, "description": "Response schema for element trigger operations with all fields populated." } ] }, "CommonTrigger": { "allOf": [ { "$ref": "#/components/schemas/ResourceCreate" }, { "type": "object", "properties": { "name": { "type": "string", "pattern": "^[a-z0-9-]+$", "description": "A name for the trigger. Must contain only lowercase letters, numbers, and hyphens.", "example": "my-trigger-name" }, "broker": { "$ref": "#/components/schemas/Broker" }, "topic_name": { "type": "string", "description": "The name of the topic in the broker. Used with broker field for automatic topic creation.", "example": "my-topic" }, "custom_extensions": { "type": "object", "description": "Custom key/value pairs to be passed as event output extensions. custom key must contain only lowercase letters and digits, start with a letter, and be 1-20 characters long" } }, "description": "Common properties for all trigger types." } ] }, "ElementTriggerConfig": { "type": "object", "properties": { "events": { "type": "array", "minItems": "1", "items": { "$ref": "#/components/schemas/TriggerEvent" }, "description": "Events that trigger the element trigger.\nTODO: Make this field required once deprecated POST/PUT /triggers APIs are removed.\n" }, "source_bucket_name": { "type": "string", "description": "The bucket name of a VMS View. Relevant for Element Trigger.\nTODO: Make this field required once deprecated POST/PUT /triggers APIs are removed.\n", "example": "my-bucket" }, "tag_filters": { "$ref": "#/components/schemas/TriggerFilters" }, "name_filters": { "$ref": "#/components/schemas/TriggerFilters" } } }, "SourceType": { "type": "string", "description": "The source protocol from which we want to trigger events. Relevant for Element Trigger", "enum": [ "S3", "NFS4" ] }, "Resource": { "allOf": [ { "$ref": "#/components/schemas/ResourceCreate" }, { "type": "object", "properties": { "id": { "$ref": "#/components/schemas/ReadOnlyID" }, "guid": { "$ref": "#/components/schemas/ReadOnlyGUID" }, "tenant_guid": { "$ref": "#/components/schemas/TenantID" }, "owner": { "$ref": "#/components/schemas/UserID" }, "created_at": { "type": "string", "readOnly": "true", "format": "date-time", "description": "Timestamp when the resource was created.", "example": "2024-12-25 15:30:00+00:00" }, "updated_at": { "type": "string", "readOnly": "true", "format": "date-time", "description": "Timestamp when the resource was last updated.", "example": "2024-12-28 18:00:00+00:00" }, "vrn": { "$ref": "#/components/schemas/VastRN" } } } ], "description": "Extends ResourceCreate with read-only fields." }, "TriggerType": { "type": "string", "enum": [ "Element", "Schedule" ] }, "TriggerEvent": { "type": "string", "description": "action the trigger listens to", "enum": [ "ObjectCreated:*", "ObjectRemoved:*", "ObjectTagging:Put", "ObjectTagging:Delete" ] }, "VastRN": { "type": "string", "description": "A logical path for resource grouping and policy assignment. The structure of the logical path is: vast:dataengine::\nwhere resource type is one of: triggers / functions / pipelines / topics / kubernetes-clusters / container-registries / mtls-authentication-credentials.\n", "example": "vast:dataengine:functions:foo" }, "Status": { "type": "string", "readOnly": "true", "enum": [ "Ready", "InProgress", "Error", "Draft", "Deleting" ], "description": "Operational status of the object.", "example": "Ready" }, "ErrorResponse": { "type": "object", "properties": { "detail": { "type": "string" }, "source": { "$ref": "#/components/schemas/ErrorSource" }, "code": { "type": "string", "description": "Optional machine-readable error code for clients to branch on instead of parsing `detail`." } } }, "ValidationErrorResponse": { "type": "object", "properties": { "detail": { "type": "string", "description": "String representation of a mapping between field names and error messages", "example": "{\"url\": \"URL must include a protocol\", \"port\": \"Port must be an integer\"}" } } }, "ResourceCreate": { "allOf": [ { "$ref": "#/components/schemas/ResourceUpdate" } ], "required": [ "name" ] }, "Broker": { "type": "object", "properties": { "type": { "$ref": "#/components/schemas/BrokerType" }, "url": { "type": "string", "deprecated": "true", "description": "Deprecated. The broker URL is now resolved from VMS by broker name. This field is ignored for VMS-registered brokers and only used as a legacy fallback for brokers not yet registered in VMS. It will be removed in a future release.", "example": "https://kafka.example.com:6969" }, "name": { "type": "string", "description": "Broker name for external or Bucket (View) name for internal.", "example": "my-kafka-broker", "maxLength": "40" }, "is_accessible_to_data_engine": { "type": "boolean", "default": "true", "description": "When true (default), the Data Engine will periodically validate that the broker is accessible. Set to false if the broker is not reachable from the Data Engine (e.g., external brokers behind firewalls)." } }, "required": [ "type", "name" ] }, "TriggerFilters": { "additionalProperties": "false", "type": "object", "properties": { "prefixes": { "type": "array", "items": { "type": "string" } }, "suffixes": { "type": "array", "items": { "type": "string" } } } }, "ReadOnlyID": { "type": "integer", "format": "int64", "readOnly": "true", "description": "A globally unique identifier (ID) for the resource." }, "ReadOnlyGUID": { "type": "string", "readOnly": "true", "format": "uuid", "description": "A globally unique identifier (GUID) for the resource.", "example": "a7f4aa24-a00d-4dc5-a113-2031eb8c2c79" }, "TenantID": { "$ref": "#/components/schemas/ReadOnlyGUID" }, "UserID": { "type": "object", "readOnly": "true", "properties": { "id": { "type": "string", "description": "The unique identifier for the owner." }, "id_type": { "type": "string", "description": "The type of identifier for the owner.", "enum": [ "uid", "vid", "sid", "access_key", "sid_str", "login_name", "username" ] }, "name": { "type": "string", "description": "The presentable name of the owner" } }, "required": [ "id", "id_type" ], "description": "Represents the owner of the resource." }, "ErrorSource": { "type": "object", "description": "Represents the underlying problem that made Data Engine raise the error", "properties": { "source_type": { "type": "string", "description": "The component where the error happened", "example": "kubernetes | vms | vdb | registry" }, "source_name": { "type": "string", "description": "The name of the source compoenent", "example": "my-cluster" }, "inner_error": { "type": "string", "description": "The error message from the source component", "example": "Failed to connect to the cluster" } } }, "ResourceUpdate": { "additionalProperties": "false", "type": "object", "properties": { "name": { "type": "string", "description": "A name for the resource.", "example": "naomis-resource" }, "description": { "type": "string", "description": "A description of the resource.", "example": "A good and detailed description that makes everyone understand." }, "tags": { "type": "array", "maxItems": "32", "description": "Custom tags for organizing and categorizing resources in the GUI.", "items": { "type": "string" }, "example": [ "tagA", "tagB", "tagC" ] } }, "description": "Defines a shared group of attributes to be found in all API resources." }, "BrokerType": { "type": "string", "enum": [ "External", "Internal" ] } }, "responses": { "BadRequestError": { "description": "Bad Request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "UnauthorizedError": { "description": "Unauthorized", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ForbiddenError": { "description": "Forbidden", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "NotFoundError": { "description": "Not Found", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ConflictError": { "description": "Conflict", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } }, "ValidationError": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ValidationErrorResponse" } } } }, "InternalServerError": { "description": "Internal Server Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ErrorResponse" } } } } } } } ````