Skip to main content

Managing Definitions

Once a definition is deployed, you can retrieve, list, update, delete, and copy it across spaces using the definition management API.

All endpoints require the five standard headers. All IDs are ULIDs.


Endpoint Summary​

ActionMethodEndpoint
DeployPOST/minimal/rest/definition/v1
Get by IDGET/minimal/rest/definition/v1?definition_id=
List allGET/minimal/rest/definition/v1/list
List by methodGET/minimal/rest/definition/v1/list?method=
UpdatePUT/minimal/rest/definition/v1
DeleteDELETE/minimal/rest/definition/v1?uri=&method=&version=
Copy to spacePUT/minimal/rest/definition/v1/space/copy

Deploy a Definition (POST)​

Creates a new Custom API definition. Returns a definition_id on success.

POST /minimal/rest/definition/v1

Headers​

HeaderRequired
X-Org-Id✅
X-Project-Id✅
X-Space-Id✅
X-User-Id✅
X-User-Roles✅ — must include admin or power
Content-Type✅ — application/x-yaml
curl -X POST '/minimal/rest/definition/v1' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin' \
-H 'Content-Type: application/x-yaml' \
--data-binary @definition.yaml

Response​

Returns the registered definition_id as a ULID:

{
"definition_id": "01KCK434ADF8VGC9DQNJTKZPTD"
}

Save this ID — you'll need it to retrieve or reference this definition later.


Get a Definition​

Retrieve a single definition by its definition_id.

GET /minimal/rest/definition/v1?definition_id={definition_id}
curl '/minimal/rest/definition/v1?definition_id=01KCK434ADF8VGC9DQNJTKZPTD' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin'

List All Definitions​

Retrieve all definitions in the current space.

GET /minimal/rest/definition/v1/list
curl '/minimal/rest/definition/v1/list' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin'

List by Method​

Filter definitions by HTTP method.

GET /minimal/rest/definition/v1/list?method={method}
ValueReturns
getAll GET definitions
postAll POST definitions
putAll PUT definitions
patchAll PATCH definitions
deleteAll DELETE definitions
curl '/minimal/rest/definition/v1/list?method=get' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin'

Update a Definition​

Modify an existing definition by POSTing updated YAML. Identify the definition by its uri, method, and version.

PUT /minimal/rest/definition/v1

Headers​

HeaderRequired
X-Org-Id✅
X-Project-Id✅
X-Space-Id✅
X-User-Id✅
X-User-Roles✅
Content-Type✅ — application/x-yaml
curl -X PUT '/minimal/rest/definition/v1' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin' \
-H 'Content-Type: application/x-yaml' \
--data-binary @updated-definition.yaml
tip

Always increment http.version when updating a definition and set config.rollback_version to the previous version. See Config Reference.


Delete a Definition​

Delete a definition by its uri, method, and version.

DELETE /minimal/rest/definition/v1?uri={uri}&method={method}&version={version}
ParamDescription
uriURL-encoded URI of the definition
methodHTTP method — get, post, put, patch, delete
versionVersion to delete — e.g. 0.1
curl -X DELETE \
'/minimal/rest/definition/v1?uri=lbl%2Fcrm%2Fusers%2Fall&method=get&version=0.1' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin'
caution

Deletion is permanent. If you need to restore a deleted definition, you must redeploy the YAML from scratch.


Copy Definitions Across Spaces​

Copy one or more definitions from the current space to a target space. Use this to promote definitions from dev → staging → production.

PUT /minimal/rest/definition/v1/space/copy

Request Body​

{
"org_id": "01KC11784DW133S3THR7JTQNQ1",
"project_id": "01KC11KZ6VDMMKJZ4YWQYKYZ6Z",
"space_id": "01KBY3K97GMAJFBQ0PP7158NZH",
"target_version": "v0.1",
"target_space_id": "01KBY3K97GMAJFBQ0PP7158NZJ",
"user_id": "01KBY3K9NDC5XW523M2V1Z0373",
"definition_list": [
"01KD748G21N28VA1XWJYJB5EST",
"01KD748YFXPNZ63E0VEE7DZ2K5",
"01KDA54J4DT3NQF9A7BFBR21MG",
"01KD749MRMWV42ZSZ95NT70JJD"
]
}
FieldDescription
org_idSource organization
project_idSource project
space_idSource space — where definitions currently live
target_versionVersion tag to apply in the target space
target_space_idDestination space to copy definitions into
user_idUser performing the copy
definition_listArray of definition_id ULIDs to copy
curl -X PUT '/minimal/rest/definition/v1/space/copy' \
-H 'X-Org-Id: 01KC11784DW133S3THR7JTQNQ1' \
-H 'X-Project-Id: 01KC11KZ6VDMMKJZ4YWQYKYZ6Z' \
-H 'X-Space-Id: 01KBY3K97GMAJFBQ0PP7158NZH' \
-H 'X-User-Id: 01KBY3K9NDC5XW523M2V1Z0373' \
-H 'X-User-Roles: admin' \
-H 'Content-Type: application/json' \
-d '{
"org_id": "01KC11784DW133S3THR7JTQNQ1",
"project_id": "01KC11KZ6VDMMKJZ4YWQYKYZ6Z",
"space_id": "01KBY3K97GMAJFBQ0PP7158NZH",
"target_version": "v0.1",
"target_space_id": "01KBY3K97GMAJFBQ0PP7158NZJ",
"user_id": "01KBY3K9NDC5XW523M2V1Z0373",
"definition_list": [
"01KD748G21N28VA1XWJYJB5EST",
"01KD748YFXPNZ63E0VEE7DZ2K5",
"01KDA54J4DT3NQF9A7BFBR21MG",
"01KD749MRMWV42ZSZ95NT70JJD"
]
}'

Typical Promotion Flow​

dev space
└── build and test definitions
↓
space/copy → staging space
↓
space/copy → production space