Skip to content

Unit

Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration.

Operations

Method Endpoint Description
GET /space/{space_id}/unit List Units
GET /unit List of Units across spaces
GET /space/{space_id}/unit/{unit_id} Get Unit
GET /space/{space_id}/unit/{unit_id}/data Download config data
GET /space/{space_id}/unit/{unit_id}/extended Get Unit details with expanded relationships
GET /space/{space_id}/unit/{unit_id}/live-state Download live state
POST /space/{space_id}/unit Create Unit
POST /space/{space_id}/unit/{unit_id}/apply Apply a unit configuration
POST /space/{space_id}/unit/{unit_id}/approve Approve a unit configuration
POST /space/{space_id}/unit/{unit_id}/destroy Destroy a unit configuration
POST /space/{space_id}/unit/{unit_id}/import Import a configuration unit
POST /space/{space_id}/unit/{unit_id}/refresh Refresh a unit configuration
POST /unit Bulk create (clone) multiple units
POST /unit/apply Bulk apply units
POST /unit/approve Bulk approve multiple units
POST /unit/destroy Bulk destroy units
POST /unit/refresh Bulk refresh units
POST /unit/tag Bulk tag multiple units
PATCH /space/{space_id}/unit/{unit_id} Patch Unit
PUT /space/{space_id}/unit/{unit_id} Update Unit
PATCH /unit Bulk patch multiple units
DELETE /space/{space_id}/unit/{unit_id} Delete Unit
DELETE /unit Bulk delete multiple units

List Units

GET /space/{space_id}/unit

List Units

Operation ID: ListUnits

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
select string Select clause for specifying which fields to include in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. If not specified, all fields are returned. Entity and parent IDs (like OrganizationID, SpaceID, UnitID) and Slug are always returned regardless of the select parameter. Fields used in where and contains filters are also automatically included. Example: 'DisplayName,CreatedAt,Labels' will return only those fields plus the required ID and Slug fields. The whole string must be query-encoded.
resource_type string Resource type: Resource type to match for the desired ToolchainType, for example apps/v1/Deployment
where_data string Where data: The specified string is an expression for the purpose of evaluating whether the configuration data matches the filter. It supports conjunctions using AND of relational expressions of the form path operator literal. The path specifications are dot-separated, for both map fields and array indices, as in spec.template.spec.containers.0.image = 'ghcr.io/headlamp-k8s/headlamp:latest' AND spec.replicas > 1. Path expressions support * for wildcard array or map segments and ?key=value syntax for associative matches of array elements containing objects with a key attribute. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, !~, ~*, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. Boolean values support equality and inequality only. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as spec.template.spec.containers.0.image#reference IN (':latest', ':arm64-latest'). The syntax .\| requires the preceding path to exist; otherwise the relation != will always return true regardless what it is compared with. String literals are quoted with single quotes, such as 'string'. Integer and boolean literals are also supported for attributes of those types. The whole string must be query-encoded.

Responses

Status Description Content-Type Schema
200 OK application/json Array of ExtendedUnit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of ExtendedUnit

List of Units across spaces

GET /unit

Retrieves a list of Units across spaces in the Organization

Operation ID: ListAllUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
select string Select clause for specifying which fields to include in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. If not specified, all fields are returned. Entity and parent IDs (like OrganizationID, SpaceID, UnitID) and Slug are always returned regardless of the select parameter. Fields used in where and contains filters are also automatically included. Example: 'DisplayName,CreatedAt,Labels' will return only those fields plus the required ID and Slug fields. The whole string must be query-encoded.
resource_type string Resource type: Resource type to match for the desired ToolchainType, for example apps/v1/Deployment
where_data string Where data: The specified string is an expression for the purpose of evaluating whether the configuration data matches the filter. It supports conjunctions using AND of relational expressions of the form path operator literal. The path specifications are dot-separated, for both map fields and array indices, as in spec.template.spec.containers.0.image = 'ghcr.io/headlamp-k8s/headlamp:latest' AND spec.replicas > 1. Path expressions support * for wildcard array or map segments and ?key=value syntax for associative matches of array elements containing objects with a key attribute. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, !~, ~*, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. Boolean values support equality and inequality only. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as spec.template.spec.containers.0.image#reference IN (':latest', ':arm64-latest'). The syntax .\| requires the preceding path to exist; otherwise the relation != will always return true regardless what it is compared with. String literals are quoted with single quotes, such as 'string'. Integer and boolean literals are also supported for attributes of those types. The whole string must be query-encoded.

Responses

Status Description Content-Type Schema
200 OK application/json Array of ExtendedUnit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of ExtendedUnit

Get Unit

GET /space/{space_id}/unit/{unit_id}

Get Unit

Operation ID: GetUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Query Parameters

Parameter Type Required Description
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
select string Select clause for specifying which fields to include in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. If not specified, all fields are returned. Entity and parent IDs (like OrganizationID, SpaceID, UnitID) and Slug are always returned regardless of the select parameter. Fields used in where and contains filters are also automatically included. Example: 'DisplayName,CreatedAt,Labels' will return only those fields plus the required ID and Slug fields. The whole string must be query-encoded.

Responses

Status Description Content-Type Schema
200 Unit with capability to extend additional related entities. application/json ExtendedUnit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default Unit with capability to extend additional related entities. application/json ExtendedUnit

Download config data

GET /space/{space_id}/unit/{unit_id}/data

Download the config data of a unit

Operation ID: DownloadUnitData

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 OK application/octet-stream string
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/octet-stream string

Get Unit details with expanded relationships

GET /space/{space_id}/unit/{unit_id}/extended

Get Unit details with expanded relationships

Operation ID: GetUnitExtended

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 OK application/json UnitExtended
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json UnitExtended

Download live state

GET /space/{space_id}/unit/{unit_id}/live-state

Download the live state of a unit

Operation ID: DownloadUnitLiveState

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 OK application/octet-stream string
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/octet-stream string

Create Unit

POST /space/{space_id}/unit

Create Unit

Operation ID: CreateUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id

Query Parameters

Parameter Type Required Description
upstream_space_id string Unique identifier for a upstream_space_id
upstream_unit_id string Unique identifier for a upstream_unit_id
allow_exists string Allowed values are true and false. Default is false. When true, reports success when an entity already exists and returns the existing entity

Request Body

Content-Type: application/json

Schema: Unit

Responses

Status Description Content-Type Schema
200 Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to create unit(s) due to configuration data problem application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit

Apply a unit configuration

POST /space/{space_id}/unit/{unit_id}/apply

Triggers an apply operation using the config data to a Bridge Worker

Operation ID: ApplyUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Query Parameters

Parameter Type Required Description
revision string Revision to apply (defaults to HeadRevisionNum). Can be a revision number, 'LiveRevisionNum', 'LastAppliedRevisionNum', 'Tag:uuid', 'ChangeSet:uuid', etc.

Responses

Status Description Content-Type Schema
200 UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Bridge worker unavailable application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation

Approve a unit configuration

POST /space/{space_id}/unit/{unit_id}/approve

Record that the user invoking this operation approves the configuration data

Operation ID: ApproveUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Query Parameters

Parameter Type Required Description
revision string Revision to approve (defaults to HeadRevisionNum). Can be a revision number, 'LiveRevisionNum', 'LastAppliedRevisionNum', 'Tag:uuid', 'ChangeSet:uuid', etc.

Responses

Status Description Content-Type Schema
200 OK application/json string
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json string

Destroy a unit configuration

POST /space/{space_id}/unit/{unit_id}/destroy

Triggers a destroy operation using the config data to a Bridge Worker

Operation ID: DestroyUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Bridge worker unavailable application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation

Import a configuration unit

POST /space/{space_id}/unit/{unit_id}/import

Triggers an import operation using the config data to a Bridge Worker

Operation ID: ImportUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Request Body

Content-Type: application/json

Schema: ImportRequest

Responses

Status Description Content-Type Schema
200 UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Bridge worker unavailable application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation

Refresh a unit configuration

POST /space/{space_id}/unit/{unit_id}/refresh

Triggers a refresh operation using the config data to a Bridge Worker

Operation ID: RefreshUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Bridge worker unavailable application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction. application/json QueuedOperation

Bulk create (clone) multiple units

POST /unit

Clone multiple units selected by query parameters with optional name prefixes and destination spaces

Operation ID: BulkCreateUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
name_prefixes string Comma-separated list of prefixes to apply to cloned Unit names
where_space string The specified string is an expression for the purpose of filtering the list of Spaces returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Space: CreatedAt, DeleteGates, DisplayName, Labels, OrganizationID, Slug, SpaceID, UpdatedAt. Where expression to select destination spaces for cloning units The whole string must be query-encoded.
filter_space string UUID of a Filter entity to apply to the Space list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Space). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
allow_exists string Allowed values are true and false. Default is false. When true, reports success when an entity already exists and returns the existing entity

Request Body

Content-Type: application/merge-patch+json

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitCreateOrUpdateResponse
207 Multi-Status (partial success) application/json Array of UnitCreateOrUpdateResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to create unit(s) due to configuration data problem application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitCreateOrUpdateResponse

Bulk apply units

POST /unit/apply

Executes apply operations for multiple units based on filter criteria across spaces

Operation ID: BulkApplyUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
dry_run boolean Dry run mode - validates which units would be applied without executing
revision string Revision to apply (defaults to HeadRevisionNum). Can be a revision number, 'LiveRevisionNum', 'LastAppliedRevisionNum', 'Tag:uuid', 'ChangeSet:uuid', etc.

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitActionResponse
207 Multi-Status: Mixed success and failure results application/json Array of UnitActionResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to apply unit(s) application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitActionResponse

Bulk approve multiple units

POST /unit/approve

Record that the user invoking this operation approves multiple unit configurations using where and contains filters

Operation ID: BulkApproveUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
revision string Revision to approve (defaults to HeadRevisionNum). Can be a revision number, 'LiveRevisionNum', 'LastAppliedRevisionNum', 'Tag:uuid', 'ChangeSet:uuid', etc.

Responses

Status Description Content-Type Schema
200 OK application/json Array of ApproveResponse
207 Multi-Status: Mixed success and failure results application/json Array of ApproveResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of ApproveResponse

Bulk destroy units

POST /unit/destroy

Executes destroy operations for multiple units based on filter criteria across spaces

Operation ID: BulkDestroyUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
dry_run boolean Dry run mode - validates which units would be destroyed without executing

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitActionResponse
207 Multi-Status: Mixed success and failure results application/json Array of UnitActionResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to destroy unit(s) application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitActionResponse

Bulk refresh units

POST /unit/refresh

Executes refresh operations for multiple units based on filter criteria across spaces

Operation ID: BulkRefreshUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
dry_run boolean Dry run mode - validates which units would be refreshed without executing

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitActionResponse
207 Multi-Status: Mixed success and failure results application/json Array of UnitActionResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to refresh unit(s) application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitActionResponse

Bulk tag multiple units

POST /unit/tag

Attach tags to specified unit revisions

Operation ID: BulkTagUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.

Request Body

Content-Type: application/json

Schema: UnitTagRequest

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitTagResponse
207 Multi-Status: Mixed success and failure results application/json Array of UnitTagResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitTagResponse

Patch Unit

PATCH /space/{space_id}/unit/{unit_id}

Patch Unit

Operation ID: PatchUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Query Parameters

Parameter Type Required Description
revision_id string Unique identifier for a revision_id
dry_run boolean Flag parameter for enabling dry_run
upgrade boolean Flag parameter for enabling upgrade
restore string Restore revision source. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_source string Merge source unit. Currently it must be a unit ID or 'Self'.
merge_base string Merge base revision of the merge source, which provides the base configuration data of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_end string Merge end revision of the merge source, which provides the final configuration of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
where_mutation string The specified string is an expression for the purpose of filtering the list of Mutations returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Mutation: CreatedAt, FunctionName, InvocationID, LinkID, MergeBaseRevisionNum, MergeEndRevisionNum, MergeSourceID, MutationID, MutationNum, OrganizationID, RestoredRevisionNum, RevisionID, RevisionNum, SpaceID, TriggerID, UnitID, UpdatedAt, UpgradedFromUpstreamRevisionNum. Used to filter which mutations are affected during merge operations. The whole string must be query-encoded.
filter_mutation string UUID of a Filter entity to apply to the Mutation list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Mutation). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
tag string Tag ID to add to the head revision
change_set_id string Must match ChangeSetID of affected Units if config Data is changed unless in dry run mode

Request Body

Content-Type: application/merge-patch+json

Responses

Status Description Content-Type Schema
200 Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to patch unit(s) due to configuration data problem application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit

Update Unit

PUT /space/{space_id}/unit/{unit_id}

Update Unit

Operation ID: UpdateUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Query Parameters

Parameter Type Required Description
revision_id string Unique identifier for a revision_id
dry_run boolean Flag parameter for enabling dry_run
upgrade boolean Flag parameter for enabling upgrade
restore string Restore revision source. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_source string Merge source unit. Currently it must be a unit ID or 'Self'.
merge_base string Merge base revision of the merge source, which provides the base configuration data of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_end string Merge end revision of the merge source, which provides the final configuration of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
where_mutation string The specified string is an expression for the purpose of filtering the list of Mutations returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Mutation: CreatedAt, FunctionName, InvocationID, LinkID, MergeBaseRevisionNum, MergeEndRevisionNum, MergeSourceID, MutationID, MutationNum, OrganizationID, RestoredRevisionNum, RevisionID, RevisionNum, SpaceID, TriggerID, UnitID, UpdatedAt, UpgradedFromUpstreamRevisionNum. Used to filter which mutations are affected during merge operations. The whole string must be query-encoded.
filter_mutation string UUID of a Filter entity to apply to the Mutation list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Mutation). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
tag string Tag ID to add to the head revision
change_set_id string Must match ChangeSetID of affected Units if config Data is changed unless in dry run mode

Request Body

Content-Type: application/json

Schema: Unit

Responses

Status Description Content-Type Schema
200 Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
409 Unit data conflict. Data has changed since last read. application/json StandardErrorResponse
422 Unable to update unit(s) due to configuration data problem application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration. application/json Unit

Bulk patch multiple units

PATCH /unit

Apply JSON merge patch to multiple units selected by query parameters

Operation ID: BulkPatchUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.
dry_run boolean Flag parameter for enabling dry_run
upgrade boolean Flag parameter for enabling upgrade
restore string Restore revision source. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_source string Merge source unit. Currently it must be a unit ID or 'Self'.
merge_base string Merge base revision of the merge source, which provides the base configuration data of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
merge_end string Merge end revision of the merge source, which provides the final configuration of the changes to merge. Supports: Named revisions ('LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', 'HeadRevisionNum'), direct revision number (e.g., '42'), or entity references ('Tag:uuid', 'ChangeSet:uuid', 'Revision:uuid'). Can be prefixed with 'Before:' to select the revision immediately before the specified one (e.g., 'Before:LiveRevisionNum', 'Before:42'). When using Tag or ChangeSet references, the latest revision associated with that entity is selected.
where_mutation string The specified string is an expression for the purpose of filtering the list of Mutations returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Mutation: CreatedAt, FunctionName, InvocationID, LinkID, MergeBaseRevisionNum, MergeEndRevisionNum, MergeSourceID, MutationID, MutationNum, OrganizationID, RestoredRevisionNum, RevisionID, RevisionNum, SpaceID, TriggerID, UnitID, UpdatedAt, UpgradedFromUpstreamRevisionNum. Used to filter which mutations are affected during merge operations. The whole string must be query-encoded.
filter_mutation string UUID of a Filter entity to apply to the Mutation list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Mutation). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
tag string Tag ID to add to the head revision
change_set_id string Must match ChangeSetID of affected Units if config Data is changed unless in dry run mode

Request Body

Content-Type: application/merge-patch+json

Responses

Status Description Content-Type Schema
200 OK application/json Array of UnitCreateOrUpdateResponse
207 Multi-Status: Mixed success and failure results application/json Array of UnitCreateOrUpdateResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to patch unit(s) due to configuration data problem application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of UnitCreateOrUpdateResponse

Delete Unit

DELETE /space/{space_id}/unit/{unit_id}

Delete Unit

Operation ID: DeleteUnit

Parameters

Path Parameters

Parameter Type Required Description
space_id string Unique identifier for a space_id
unit_id string Unique identifier for a unit_id

Responses

Status Description Content-Type Schema
200 Response for successful delete operation application/json DeleteResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unit could not be deleted. application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default Response for successful delete operation application/json DeleteResponse

Bulk delete multiple units

DELETE /unit

Delete multiple units selected by query parameters

Operation ID: BulkDeleteUnits

Parameters

Query Parameters

Parameter Type Required Description
where string The specified string is an expression for the purpose of filtering the list of Units returned. The expression syntax was inspired by SQL. It supports conjunctions using AND of relational expressions of the form attribute operator attribute_or_literal. The attribute names are case-sensitive and PascalCase, as in the JSON encoding. Strings support the following operators: <, >, <=, >=, =, !=, LIKE, ILIKE, ~~, !~~, ~, ~*, !~, !~*, IN, NOT IN. String pattern operators: LIKE and ~~ for pattern matching with % and _ wildcards, ILIKE for case-insensitive pattern matching, !~~ for NOT LIKE. String regex operators: ~ for regex matching, ~* for case-insensitive regex, !~ and !~* for regex not matching (case-sensitive and insensitive). Integers support the following operators: <, >, <=, >=, =, !=, IN, NOT IN. UUIDs and boolean attributes support equality and inequality only. UUID and time literals must be quoted as string literals. String literals are quoted with single quotes, such as 'string'. Time literals use the same form as when serialized as JSON, such as: CreatedAt > '2025-02-18T23:16:34'. Integer and boolean literals are also supported for attributes of those types. Arrays support the ? operator to to match any element of the array, as in ApprovedBy ? '7c61626f-ddbe-41af-93f6-b69f4ab6d308'. Arrays can perform LEN() to check for length, as in LEN(ApprovedBy) > 0. Map support the dot notation to specify a particular map key, as in Labels.tier = 'Backend'. The IN and NOT IN operators accept a comma-separated list of values in parentheses, such as Slug IN ('slugone', 'slugtwo') or Labels.environment IN ('prod', 'staging'). Conjunctions are supported using the AND operator. An example conjunction is: CreatedAt >= '2025-01-07' AND Slug = 'test' AND Labels.mykey = 'myvalue'. Supported attributes for filtering on Unit: ApplyGates, ApprovedBy, BridgeWorkerID, ChangeSetID, CreatedAt, DeleteGates, DestroyGates, DisplayName, FromLinkID, HeadRevisionNum, Labels, LastActionAt, LastAppliedRevisionNum, LastChangeDescription, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, Slug, SpaceID, TargetID, ToolchainType, UnitID, UpdatedAt, UpstreamOrganizationID, UpstreamRevisionNum, UpstreamSpaceID, UpstreamUnitID, Values. Finding all units created by cloning can be done using the expression UpstreamRevisionNum > 0. Clones of a specific unit can be found by additionally filtering based on UpstreamUnitID. Unapplied units can be found using LiveRevisionNum = 0. Units with unapplied changes can be found with HeadRevisionNum > LiveRevisionNum. The whole string must be query-encoded.
filter string UUID of a Filter entity to apply to the Unit list. The Filter must be in the same Organization as the user credentials. The Filter's From field must match the entity type being filtered (Unit). For Space-resident entities, if the Filter has a FromSpaceID, it must match the operation's SpaceID. The Filter's Where clause will be combined with any explicit 'where' parameter using AND logic. If both 'filter' and 'where' parameters are specified, they are combined with AND logic.
contains string Free text search that approximately matches the specified string against string fields and map keys/values. The search is case-insensitive and uses pattern matching to find entities containing the text. Searchable string fields include attributes like Slug, DisplayName, and string-typed custom fields. For map fields (like Labels and Annotations), the search matches both map keys and values. The search uses OR logic across all searchable fields, so matching any field will return the entity. If both 'where' and 'contains' parameters are specified, they are combined with AND logic. Searchable fields for Unit include string and map-type attributes from the queryable attributes list. The whole string must be query-encoded.
include string Include clause for expanding related entities in the response for Unit. The attribute names are case-sensitive, PascalCase, and expected in a comma-separated list format as in the JSON encoding. Supported attributes for Unit are ApprovedBy, BridgeWorkerID, ChangeSetID, FromLinkID, HeadMutationNum, HeadRevisionNum, LastAppliedRevisionNum, LiveRevisionNum, OrganizationID, PreviousLiveRevisionNum, SpaceID, TargetID, UnitEventID, UpstreamSpaceID, UpstreamUnitID. The whole string must be query-encoded.

Responses

Status Description Content-Type Schema
200 OK application/json Array of DeleteResponse
207 Multi-Status: Mixed success and failure results application/json Array of DeleteResponse
400 Unit request is invalid (Bad Request). application/json StandardErrorResponse
401 Unauthorized access. application/json StandardErrorResponse
403 Forbidden access. application/json StandardErrorResponse
404 Unit not found. application/json StandardErrorResponse
422 Unable to delete entities application/json StandardErrorResponse
500 Something went wrong while processing Unit. application/json StandardErrorResponse
default application/json Array of DeleteResponse

Schemas

ApproveResponse

Properties

Property Type Required Description
Error ResponseError
Message string

DeleteResponse

Response for successful delete operation

Properties

Property Type Required Description
Error ResponseError
Message string Response message.

ExtendedUnit

Unit with capability to extend additional related entities.

Properties

Property Type Required Description
ApprovedBy Array of User the users that have approved the latest revision of the config data.
BridgeWorker BridgeWorker
ChangeSet ChangeSet
Error ResponseError
FromLink Array of Link
HeadMutation Mutation
HeadRevision Revision
LastAppliedRevision Revision
LatestUnitEvent UnitEvent
LiveRevision Revision
Organization Organization
PreviousLiveRevision Revision
Space Space
Target Target
Unit Unit
UnitStatus UnitStatus
UpstreamSpace Space
UpstreamUnit Unit

ImportRequest

Properties

Property Type Required Description
Filters Array of ImportFilter
Options ImportOptions
ResourceInfoList ResourceInfoList
Where string

QueuedOperation

UnitAction is a record of an action to be performed by a Bridge Worker. They are queued and sent to the worker in creation order. If the worker is temporarily disconnected the queued actions will be sent when the worker reconnects or responds. If there are links between units applied or destroyed in a single API call, they will be sent to the appropriate worker(s) in the appropriate order (reverse or forword topological order). One or more UnitEvents will correspond to each UnitAction.

Properties

Property Type Required Description
Action ActionType
BridgeWorkerID string (uuid) BridgeWorkerID is the unique identifier of the bridge worker that will process this operation.
CreatedAt string (date-time) The timestamp when the entity was created in "2023-01-01T12:00:00Z" format.
Dependencies Array of UUID Dependencies contains the list of operation IDs that this operation depends on. Operations will not be delivered until all dependencies are completed.
ExtraParams string ExtraParams contains additional parameters for the operation in string format.
OrganizationID string (uuid) OrganizationID is the unique identifier of the organization this operation belongs to.
QueuedOperationID string (uuid) QueuedOperationID is the unique identifier for the queued unit action.
RevisionNum integer (int64) RevisionNum is the revision number this operation was performed on.
SpaceID string (uuid) SpaceID is the unique identifier of the space of the unit this operation is performed on.
Status string Status indicates the current status of the unit action. v2 statuses: Initializing (being set up), Pending (waiting), Delivered (sent to worker), Progressing (being processed), Completed (success), Failed (error). v1 compatibility: 'pending' = Pending, 'delivered' = Completed (legacy 'delivered' meant work done).
TargetID string (uuid) TargetID is the unique identifier of the target this operation is directed to.
UnitID string (uuid) UnitID is the unique identifier of the unit this operation is performed on.
UserAgent string User-Agent string of the API call.
UserID string (uuid) UserID of the user the action was performed by.
Version integer (int64) An entity-specific sequence number used for optimistic concurrency control. The value read must be sent in calls to Update.

StandardErrorResponse

Error response details.

Properties

Property Type Required Description
Code string HTTP status code of the response.
Message string Message returned with the response.

Unit

Unit is the core unit of operation in ConfigHub. It contains a blob of configuration Data of a single supported Toolchain Type (configuration format). This blob is typically a text document that contains a collection of Kubernetes or infrastructure resources, or an application configuration file. Applying / deploying or destroying the configuration happens as a single transaction from ConfigHub's perspective. In reality, it is most often a multi-step workflow performed by the underlying configuration / deployment tool. The resources must belong to a single infrastructure provider and the actuation mechanism must be able to resolve references and ordering dependencies among the resources within the document. For example, if one resource needs to be fully provisioned to provide input to another resource, then the actuation code is responsible for handling this. Revisions store historical copies of the configuration data. Configuration data can be restored from prior Revisions. Units can also be cloned to create new variants of a configuration.

Properties

Property Type Required Description
Annotations object An optional map of Annotation key/value pairs for tools to attach information to entities.
ApplyGates object A map of "/" to true of Triggers invoking validating functions that did not pass on the latest configuration data.
ApprovedBy Array of UUID The users that have approved the latest revision of the config data for the Unit.
BridgeWorkerID UUID
ChangeSetID UUID
ContentHash integer The CRC32 hash of the configuration data.
CreatedAt string (date-time) The timestamp when the entity was created in "2023-01-01T12:00:00Z" format.
CursorID integer (int64) An auto-incrementing sequence number used for pagination.
Data string (base64) The full configuration data for this unit. The maximum size is 67108864 bytes.
DeleteGates object An optional set of gates that, if any is present, will block deletion.
DestroyGates object An optional set of gates that, if any is present, will block destroy operations.
DisplayName string Friendly name for the entity.
EntityType string The type of entity.
FromLinkID Array of UUID IDs of Links originating from this Unit.
HeadMutationNum integer (int64) Sequence number the head Mutation.
HeadRevisionNum integer (int64) Sequence number the head Revision.
Labels object An optional map of Label key/value pairs to specify identifying attributes of entities for the purpose of grouping and filtering them.
LastAppliedRevisionNum integer (int64) Sequence number the last Revision applied. 0 if no live revision.
LastChangeDescription string LastChangeDescription is a human-readable description of the last change. This description is copied to the new Revision when the Data is changed.
LiveRevisionNum integer (int64) Sequence number the last Revision applied once apply has completed. 0 if no live revision.
LiveState string (base64) The current live state of the Unit as reported by the bridge worker associated with the Target attached to the Unit.
MutationSources ResourceMutationList
OrganizationID string (uuid) Unique identifier for an organization.
Outputs string (base64) The outputs of the last successful apply of the Unit.
PreviousLiveRevisionNum integer (int64) Sequence number the previous Revision applied. 0 if no live revision.
Slug string Unique URL-safe identifier for the entity.
SpaceID string (uuid) Unique identifier for a space.
TargetID UUID
ToolchainType string ToolchainType specifies the type of toolchain for this unit. Possible values include "Kubernetes/YAML", "OpenTofu/HCL", "AppConfig/Properties", "ConfigHub/YAML".
UnitID string (uuid) Unique identifier for a Unit.
UpdatedAt string (date-time) The timestamp when the entity was last updated in "2023-01-01T12:00:00Z" format.
UpstreamOrganizationID UUID
UpstreamRevisionNum integer (int64) Sequence number for the Revision of the Unit this unit was cloned from, or 0. This is updated to the upstream Unit's head revision number when the Unit is upgraded.
UpstreamSpaceID UUID
UpstreamUnitID UUID
Values object Map from "/" to the first output Value with that attribute name of the function invocation specified by the Trigger.
Version integer (int64) An entity-specific sequence number used for optimistic concurrency control. The value read must be sent in calls to Update.

UnitActionResponse

Properties

Property Type Required Description
Action QueuedOperation
Error ResponseError

UnitCreateOrUpdateResponse

Properties

Property Type Required Description
Error ResponseError
Links Array of LinkCreateOrUpdateResponse
Unit Unit

UnitExtended

Properties

Property Type Required Description
Action ActionType
ActionResult ActionResultType
ActionStartedAt string (date-time)
ActionTerminatedAt string (date-time)
ApprovedByUsers Array of string
Drift string
FromLinks Array of Link
Status string
ToLinks Array of Link
Unit Unit

UnitTagRequest

Properties

Property Type Required Description
Revision string Which Unit revision to tag: 'HeadRevisionNum', 'LiveRevisionNum', 'LastAppliedRevisionNum', 'PreviousLiveRevisionNum', or 'Remove' to remove the tag from the unit
TagID string (uuid)

UnitTagResponse

Properties

Property Type Required Description
Error ResponseError
Message string