# Create access token
Source: https://developer.tra.cy/api-reference/accesstokens/create-access-token
en/rest-api/openapi.json post /v1/access-tokens
Generates a new access token.
# Create automation
Source: https://developer.tra.cy/api-reference/automations/create-automation
en/rest-api/openapi.json post /v1/automations
Creates a new automation.
# Delete automation
Source: https://developer.tra.cy/api-reference/automations/delete-automation
en/rest-api/openapi.json delete /v1/automations/{id}
Deletes an existing automation.
# Get automation by ID
Source: https://developer.tra.cy/api-reference/automations/get-automation-by-id
en/rest-api/openapi.json get /v1/automations/{id}
Gets a specific automation by ID.
# Get automations
Source: https://developer.tra.cy/api-reference/automations/get-automations
en/rest-api/openapi.json get /v1/automations
Gets a filtered, sorted, and paginated list of automations with optional inclusions.
# Update automation
Source: https://developer.tra.cy/api-reference/automations/update-automation
en/rest-api/openapi.json put /v1/automations
Updates an existing automation.
# Create command
Source: https://developer.tra.cy/api-reference/commands/create-command
en/rest-api/openapi.json post /v1/commands
Creates a new command (and executes it via SignalR).
# Create dashboard
Source: https://developer.tra.cy/api-reference/dashboards/create-dashboard
en/rest-api/openapi.json post /v1/dashboards
Creates a new dashboard.
# Delete dashboard
Source: https://developer.tra.cy/api-reference/dashboards/delete-dashboard
en/rest-api/openapi.json delete /v1/dashboards/{id}
Deletes an existing dashboard.
# Get dashboard by ID
Source: https://developer.tra.cy/api-reference/dashboards/get-dashboard-by-id
en/rest-api/openapi.json get /v1/dashboards/{id}
Gets a specific dashboard by ID.
# Get dashboards
Source: https://developer.tra.cy/api-reference/dashboards/get-dashboards
en/rest-api/openapi.json get /v1/dashboards
Gets a filtered, sorted, and paginated list of dashboards with optional inclusions.
# Update dashboard
Source: https://developer.tra.cy/api-reference/dashboards/update-dashboard
en/rest-api/openapi.json put /v1/dashboards
Updates an existing dashboard.
# Create dataset
Source: https://developer.tra.cy/api-reference/datasets/create-dataset
en/rest-api/openapi.json post /v1/datasets
Creates a new dataset (or duplicates an existing one).
# Delete dataset
Source: https://developer.tra.cy/api-reference/datasets/delete-dataset
en/rest-api/openapi.json delete /v1/datasets/{id}
Deletes an existing dataset.
# Get dataset by ID
Source: https://developer.tra.cy/api-reference/datasets/get-dataset-by-id
en/rest-api/openapi.json get /v1/datasets/{id}
Gets a specific dataset by ID.
# Get datasets
Source: https://developer.tra.cy/api-reference/datasets/get-datasets
en/rest-api/openapi.json get /v1/datasets
Gets a filtered, sorted, and paginated list of datasets with optional inclusions.
# Update dataset
Source: https://developer.tra.cy/api-reference/datasets/update-dataset
en/rest-api/openapi.json put /v1/datasets
Updates an existing dataset.
# Create datum
Source: https://developer.tra.cy/api-reference/datums/create-datum
en/rest-api/openapi.json post /v1/datums
Creates a new datum.
# Delete datum
Source: https://developer.tra.cy/api-reference/datums/delete-datum
en/rest-api/openapi.json delete /v1/datums/{id}
Deletes an existing datum.
# Get datum by ID
Source: https://developer.tra.cy/api-reference/datums/get-datum-by-id
en/rest-api/openapi.json get /v1/datums/{id}
Gets a specific datum by ID.
# Get datums
Source: https://developer.tra.cy/api-reference/datums/get-datums
en/rest-api/openapi.json get /v1/datums
Gets a filtered, sorted, and paginated list of datums with optional inclusions.
# Update datum
Source: https://developer.tra.cy/api-reference/datums/update-datum
en/rest-api/openapi.json put /v1/datums
Updates an existing datum.
# Finalize email change
Source: https://developer.tra.cy/api-reference/emailchangetokens/finalize-email-change
en/rest-api/openapi.json get /v1/email-change-tokens/{id}
Finalizes the email change process.
# Create validation token
Source: https://developer.tra.cy/api-reference/emailvalidationtokens/create-validation-token
en/rest-api/openapi.json post /v1/email-validation-tokens
Creates a new email validation token (and sends an email).
# Get validation token by ID
Source: https://developer.tra.cy/api-reference/emailvalidationtokens/get-validation-token-by-id
en/rest-api/openapi.json get /v1/email-validation-tokens/{id}
Gets a specific email validation token by ID.
# Update validation token
Source: https://developer.tra.cy/api-reference/emailvalidationtokens/update-validation-token
en/rest-api/openapi.json put /v1/email-validation-tokens
Updates an existing email validation token (validates the code).
# Get event by ID
Source: https://developer.tra.cy/api-reference/events/get-event-by-id
en/rest-api/openapi.json get /v1/events/{id}
Gets a specific event by ID.
# Get events
Source: https://developer.tra.cy/api-reference/events/get-events
en/rest-api/openapi.json get /v1/events
Gets a filtered, sorted, and paginated list of events with optional inclusions.
# Create FCM token
Source: https://developer.tra.cy/api-reference/fcmtokens/create-fcm-token
en/rest-api/openapi.json post /v1/fcm-tokens
Creates a new FCM token.
# Delete FCM token
Source: https://developer.tra.cy/api-reference/fcmtokens/delete-fcm-token
en/rest-api/openapi.json delete /v1/fcm-tokens/{id}
Deletes an existing FCM token.
# Create download token
Source: https://developer.tra.cy/api-reference/filedownloadtokens/create-download-token
en/rest-api/openapi.json post /v1/file-download-tokens
Creates a new file download token.
# Delete file
Source: https://developer.tra.cy/api-reference/files/delete-file
en/rest-api/openapi.json delete /v1/files
Deletes an existing file.
# Download file
Source: https://developer.tra.cy/api-reference/files/download-file
en/rest-api/openapi.json get /v1/files
Downloads a specific file (via token or path).
# Upload file
Source: https://developer.tra.cy/api-reference/files/upload-file
en/rest-api/openapi.json post /v1/files
Uploads a new file.
# Upload image
Source: https://developer.tra.cy/api-reference/images/upload-image
en/rest-api/openapi.json post /v1/images
Uploads and processes a new image.
# Batch update metadatums
Source: https://developer.tra.cy/api-reference/metadatums/batch-update-metadatums
en/rest-api/openapi.json post /v1/metadatums/batch
Creates, updates, or deletes metadatums in batch.
# Create metadatum
Source: https://developer.tra.cy/api-reference/metadatums/create-metadatum
en/rest-api/openapi.json post /v1/metadatums
Creates a new metadatum.
# Delete metadatum
Source: https://developer.tra.cy/api-reference/metadatums/delete-metadatum
en/rest-api/openapi.json delete /v1/metadatums/{id}
Deletes an existing metadatum.
# Update metadatum
Source: https://developer.tra.cy/api-reference/metadatums/update-metadatum
en/rest-api/openapi.json put /v1/metadatums
Updates an existing metadatum.
# Move record
Source: https://developer.tra.cy/api-reference/moves/move-record
en/rest-api/openapi.json post /v1/moves
Moves a record to another dataset using provided mapping.
# Get notification method by ID
Source: https://developer.tra.cy/api-reference/notificationmethods/get-notification-method-by-id
en/rest-api/openapi.json get /v1/notification-methods/{id}
Gets a specific notification method by ID.
# Get notification methods
Source: https://developer.tra.cy/api-reference/notificationmethods/get-notification-methods
en/rest-api/openapi.json get /v1/notification-methods
Gets a filtered, sorted, and paginated list of notification methods with optional inclusions.
# Get notification type by ID
Source: https://developer.tra.cy/api-reference/notificationtypes/get-notification-type-by-id
en/rest-api/openapi.json get /v1/notification-types/{id}
Gets a specific notification type by ID.
# Get notification types
Source: https://developer.tra.cy/api-reference/notificationtypes/get-notification-types
en/rest-api/openapi.json get /v1/notification-types
Gets a filtered, sorted, and paginated list of notification types with optional inclusions.
# Create option
Source: https://developer.tra.cy/api-reference/options/create-option
en/rest-api/openapi.json post /v1/options
Creates a new option.
# Delete option
Source: https://developer.tra.cy/api-reference/options/delete-option
en/rest-api/openapi.json delete /v1/options/{id}
Deletes an existing option.
# Get option by ID
Source: https://developer.tra.cy/api-reference/options/get-option-by-id
en/rest-api/openapi.json get /v1/options/{id}
Gets a specific option by ID.
# Get options
Source: https://developer.tra.cy/api-reference/options/get-options
en/rest-api/openapi.json get /v1/options
Gets a filtered, sorted, and paginated list of options with optional inclusions.
# Update option
Source: https://developer.tra.cy/api-reference/options/update-option
en/rest-api/openapi.json put /v1/options
Updates an existing option.
# Batch update permissions
Source: https://developer.tra.cy/api-reference/permissions/batch-update-permissions
en/rest-api/openapi.json post /v1/permissions/batch
Creates, updates, or deletes permissions in batch.
# Create permission
Source: https://developer.tra.cy/api-reference/permissions/create-permission
en/rest-api/openapi.json post /v1/permissions
Creates a new permission.
# Delete permission
Source: https://developer.tra.cy/api-reference/permissions/delete-permission
en/rest-api/openapi.json delete /v1/permissions/{id}
Deletes an existing permission.
# Get permission by ID
Source: https://developer.tra.cy/api-reference/permissions/get-permission-by-id
en/rest-api/openapi.json get /v1/permissions/{id}
Gets a specific permission by ID.
# Get permissions
Source: https://developer.tra.cy/api-reference/permissions/get-permissions
en/rest-api/openapi.json get /v1/permissions
Gets a filtered, sorted, and paginated list of permissions with optional inclusions.
# Update permission
Source: https://developer.tra.cy/api-reference/permissions/update-permission
en/rest-api/openapi.json put /v1/permissions
Updates an existing permission.
# Get permission type by ID
Source: https://developer.tra.cy/api-reference/permissiontypes/get-permission-type-by-id
en/rest-api/openapi.json get /v1/permission-types/{id}
Gets a specific permission type by ID.
# Get permission types
Source: https://developer.tra.cy/api-reference/permissiontypes/get-permission-types
en/rest-api/openapi.json get /v1/permission-types
Gets a filtered, sorted, and paginated list of permission types with optional inclusions.
# Get plan by ID
Source: https://developer.tra.cy/api-reference/plans/get-plan-by-id
en/rest-api/openapi.json get /v1/plans/{id}
Gets a specific plan by ID.
# Get plans
Source: https://developer.tra.cy/api-reference/plans/get-plans
en/rest-api/openapi.json get /v1/plans
Gets a filtered, sorted, and paginated list of plans with optional inclusions.
# Create property
Source: https://developer.tra.cy/api-reference/properties/create-property
en/rest-api/openapi.json post /v1/properties
Creates a new property.
# Delete property
Source: https://developer.tra.cy/api-reference/properties/delete-property
en/rest-api/openapi.json delete /v1/properties/{id}
Deletes an existing property.
# Get properties
Source: https://developer.tra.cy/api-reference/properties/get-properties
en/rest-api/openapi.json get /v1/properties
Gets a filtered, sorted, and paginated list of properties with optional inclusions.
# Get property by ID
Source: https://developer.tra.cy/api-reference/properties/get-property-by-id
en/rest-api/openapi.json get /v1/properties/{id}
Gets a specific property by ID.
# Update property
Source: https://developer.tra.cy/api-reference/properties/update-property
en/rest-api/openapi.json put /v1/properties
Updates an existing property.
# Get property type by ID
Source: https://developer.tra.cy/api-reference/propertytypes/get-property-type-by-id
en/rest-api/openapi.json get /v1/property-types/{id}
Gets a specific property type by ID.
# Get property types
Source: https://developer.tra.cy/api-reference/propertytypes/get-property-types
en/rest-api/openapi.json get /v1/property-types
Gets a filtered, sorted, and paginated list of property types with optional inclusions.
# Core Concepts
Source: https://developer.tra.cy/en/getting-started/core-concepts
## Data Model
Conceptually, Tracy resembles a relational DBMS, allowing you to store and process various types of information.
* **Dataset**—analogous to a table in SQL. It defines the structure for a specific type of information (tasks, products, clients, orders, etc.) and consists of properties.
* **Property**—analogous to a column. For example, products may have a title and price, while clients have a name and phone number.
* **Record**—analogous to a table row. It belongs to a specific dataset and consists of data and metadata.
* **Datum**—analogous to a specific cell value. It is the atomic unit of data, belonging to a specific record and corresponding to a specific property.
Unlike a standard SQL cell, a record may contain no datum or multiple datums for a single property (for example, several color tags or files).
* **Metadatum**—system information that does not contain user data. For example, the display order of records within a Kanban board column.
## Workflow and Access Management
In addition to properties, Datasets define **States**, which represent the current lifecycle stage of a Record. For example, products might be “In Stock” or “Sold Out”, while orders could be “New”, “Processing”, or “Completed”. A Record is always in exactly one state.
If a dataset represents a business workflow, states act as its stages.
For each state, you can independently configure **Permissions** for viewing or editing specific properties, as well as access to system actions (creation, state transitions, archiving, and removing). Access is determined by the user’s **Role** and whether the user is **assigned** to a specific Record.
For example, users with the “Manager” role may be restricted from editing information about other managers’ clients or viewing their documents, while still being able to create and manage their own clients without limitations.
These restrictions apply “vertically”:
* **If a user cannot view any property of a record**, the entire record remains hidden from them.
* **If a user cannot view any property of a dataset**, the entire dataset remains hidden from them.
Access restrictions are enforced on the **server side** and are independent of the interface (REST API or WebSockets). If a user does not have permission to view certain data, it effectively “does not exist” for that user’s session.
# Introduction
Source: https://developer.tra.cy/en/getting-started/index
Tracy is a business tool builder designed for process management.
# Overview
Source: https://developer.tra.cy/en/rest-api/authentication
Tracy supports two authentication methods tailored for different use cases: [**JWTs**](/en/rest-api/authentication/jwts) for client-side applications (User-to-Server) and [**API keys**](/en/rest-api/authentication/api-keys) for server-side integrations (Machine-to-Machine).
# API Keys
Source: https://developer.tra.cy/en/rest-api/authentication/api-keys
API keys are long-lived credentials that do not require rotation. They are ideal for server-side integrations, scripts, and more, as they simplify API interaction and eliminate the need for complex refresh logic.
Never use API keys in client-side code (for example, in a browser), as they **can be easily stolen**.
## Usage
To authenticate an HTTP request using an API key, include the `X-Api-Key` header.
```bash Example theme={null}
curl --request GET \
--url '/records' \
--header 'X-Api-Key: '
```
## Restrictions
Each API key is governed by two main parameters that define its scope of access within the workspace.
The administrative authority level of the key.
Possible values:
* `user`—no administrative privileges (**recommended for most scenarios**).
* `administrator`—management capabilities (including **full deletion**) for dashboards, datasets, roles, and users (except for those with full administrative access).
* `owner`—management capabilities (including **full deletion**) for dashboards, datasets, roles, users (without restrictions), and the workspace itself.
The data access level of the key. Defaults to **unrestricted**.
Like any role, it determines which datasets are accessible (per state and property) and under what conditions.
Since an API key is not linked to a specific user, any “assigned only” permissions for the specified role will not apply.
Never grant a higher level of data access than is strictly necessary. For example, if an API key is provided to website developers only for automatic lead creation via a web form, it should not allow retrieval of any existing data.
You can issue multiple API keys for programmatic interaction with your workspace—each with its own set of restrictions.
## Getting a Key
To get an API key, please contact Tracy [support](https://tra.cy/en/#contacts).
API keys are available only for workspaces on the “Small” plan and above.
# JWTs
Source: https://developer.tra.cy/en/rest-api/authentication/jwts
JWTs ([JSON Web Token](https://en.wikipedia.org/wiki/JSON_Web_Token)) are used for user authentication in web or mobile applications. They have a limited lifespan (**20 minutes**) and require a rotation mechanism using refresh tokens, ensuring a higher level of security for client sessions.
## Usage
To authenticate an HTTP request using a JWT, include the `Authorization` header.
```bash Example theme={null}
curl --request GET \
--url '/records' \
--header 'Authorization: Bearer '
```
## Getting a Token
To get a JWT token, you need to complete three steps:
## Token Rotation
As mentioned above, the access token must be refreshed **every 20 minutes**. To get a new pair of tokens, use the refresh token.
Refresh tokens are valid for one month and are single-use.
# Overview
Source: https://developer.tra.cy/en/rest-api/filtering
All GET endpoints that return resource collections support filtering via URL parameters. Each resource has its own specific filter and can also reference parent or child ones. For instance, this allows you to find all records containing datums with a specific value that also belong to a dataset located in a specific folder.
Primitives (numbers, strings, etc.) also have their own [filters](/en/rest-api/filtering/primitive-filters). This enables support for conditions such as “equals”, “not equals”, “less than”, “greater than”, and so on.
```bash Example 1 theme={null}
# Returns all records where the ID equals 123 (there can be at most one such record).
curl --request GET \
--url '/records?id.equals=123'
```
```bash Example 2 theme={null}
# Returns all records belonging to a dataset in a folder whose name contains “folder”, and where the state ID does not equal 234.
curl --request GET \
--url '/records?dataset.path.contains=folder&state.id.notequals=234'
```
Multiple parameters are combined using a logical “AND”.
# ActionFilter
Source: https://developer.tra.cy/en/rest-api/filtering/action-filter
Used to filter **actions**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Automation. See [AutomationFilter](automation-filter).
Type. See [ActionTypeFilter](action-type-filter).
# ActionTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/action-type-filter
Used to filter **action types**.
ID. See [StringFilter](primitive-filters#stringfilter).
# AutomationFilter
Source: https://developer.tra.cy/en/rest-api/filtering/automation-filter
Used to filter **automations**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Dataset. See [DatasetFilter](dataset-filter).
Is disabled. See [BooleanFilter](primitive-filters#booleanfilter).
Child triggers.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [TriggerFilter](trigger-filters).
Child conditions.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [ConditionFilter](condition-filters).
Child actions.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [ActionFilter](action-filters).
# ConditionFilter
Source: https://developer.tra.cy/en/rest-api/filtering/condition-filter
Used to filter **conditions**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Automation. See [AutomationFilter](automation-filter).
State. See [StateFilter](state-filter).
# DashboardFilter
Source: https://developer.tra.cy/en/rest-api/filtering/dashboard-filter
Used to filter **dashboards**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Name. See [StringFilter](primitive-filters#stringfilter).
Is disabled. See [BooleanFilter](primitive-filters#booleanfilter).
Child representations.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [RepresentationFilter](representation-filters).
# DatasetFilter
Source: https://developer.tra.cy/en/rest-api/filtering/dataset-filter
Used to filter **datasets**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Name. See [StringFilter](primitive-filters#stringfilter).
Is disabled. See [BooleanFilter](primitive-filters#booleanfilter).
Child states.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [StateFilter](state-filters).
Child properties.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [PropertyFilter](property-filters).
Child representations.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [RepresentationFilter](representation-filters).
# DatumFilter
Source: https://developer.tra.cy/en/rest-api/filtering/datum-filter
Used to filter **datums**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Record. See [RecordFilter](record-filter).
Property. See [PropertyFilter](property-filter).
`Option` value. See [OptionFilter](option-filter).
`User` value. See [UserFilter](user-filter).
`Record` value. See [RecordFilter](record-filter).
`integer` value. See [IntegerFilter](primitive-filters#integerfilter).
`decimal` value. See [DecimalFilter](primitive-filters#decimalfilter).
`string` value. See [StringFilter](primitive-filters#stringfilter).
`datetime` value. See [DateTimeFilter](primitive-filters#datetimefilter).
# EventFilter
Source: https://developer.tra.cy/en/rest-api/filtering/event-filter
Used to filter **events**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Record. See [RecordFilter](record-filter).
User. See [UserFilter](user-filter).
Type. See [EventTypeFilter](event-type-filter).
Created. See [DateTimeFilter](primitive-filters#datetimefilter).
Old state. See [StateFilter](state-filter).
New state. See [StateFilter](state-filter).
Property. See [PropertyFilter](property-filter).
Old `Option` value. See [OptionFilter](option-filter).
Old `User` value. See [UserFilter](user-filter).
Old `Record` value. See [RecordFilter](record-filter).
Old `integer` value. See [IntegerFilter](primitive-filters#integerfilter).
Old `decimal` value. See [DecimalFilter](primitive-filters#decimalfilter).
Old `string` value. See [StringFilter](primitive-filters#stringfilter).
Old `datetime` value. See [DateTimeFilter](primitive-filters#datetimefilter).
New `Option` value. See [OptionFilter](option-filter).
New `User` value. See [UserFilter](user-filter).
New `Record` value. See [RecordFilter](record-filter).
New `integer` value. See [IntegerFilter](primitive-filters#integerfilter).
New `decimal` value. See [DecimalFilter](primitive-filters#decimalfilter).
New `string` value. See [StringFilter](primitive-filters#stringfilter).
New `datetime` value. See [DateTimeFilter](primitive-filters#datetimefilter).
# EventTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/event-type-filter
Used to filter **event types**.
ID. See [StringFilter](primitive-filters#stringfilter).
# MetadatumFilter
Source: https://developer.tra.cy/en/rest-api/filtering/metadatum-filter
Used to filter **metadatums**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Record. See [RecordFilter](record-filter).
Representation. See [RepresentationFilter](representation-filter).
`Record` value. See [RecordFilter](record-filter).
`decimal` value. See [DecimalFilter](primitive-filters#decimalfilter).
# OptionFilter
Source: https://developer.tra.cy/en/rest-api/filtering/option-filter
Used to filter **options**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Property. See [PropertyFilter](property-filter).
Text. See [StringFilter](primitive-filters#stringfilter).
# PermissionFilter
Source: https://developer.tra.cy/en/rest-api/filtering/permission-filter
Used to filter **permissions**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Role. See [RoleFilter](role-filter).
State. See [StateFilter](state-filter).
Property. See [PropertyFilter](property-filter).
Type. See [PermissionTypeFilter](permission-type-filter).
# PermissionTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/permission-type-filter
Used to filter **permission types**.
ID. See [StringFilter](primitive-filters#stringfilter).
# Primitive Filters
Source: https://developer.tra.cy/en/rest-api/filtering/primitive-filters
Each resource consists of individual fields (e.g., a user has an ID, name, email, etc.). The list of fields available for filtering is defined by a specific resource filter. In turn, this filter uses primitive filters to determine filtering conditions (equality, range, etc.).
## `BooleanFilter`
Value is missing (`null`).
Any value is present (not `null`).
Equals the specified value.
## `IntegerFilter`
Value is missing (`null`).
Any value is present (not `null`).
Equals the specified value.
Does not equal the specified value (any value except the one provided).
Greater than or equal to the specified value (lower bound).
Less than or equal to the specified value (upper bound).
Matches one of the specified values.
## `DecimalFilter`
Value is missing (`null`).
Any value is present (not `null`).
Equals the specified value.
Does not equal the specified value (any value except the one provided).
Greater than or equal to the specified value (lower bound).
Less than or equal to the specified value (upper bound).
Matches one of the specified values.
## `StringFilter`
Value is missing (`null`).
Any value is present (not `null`).
Exactly matches the specified value (case-sensitive).
Does not match the specified value.
Contains the specified value as a substring.
Matches one of the specified values.
## `DateTimeFilter`
Value is missing (`null`).
Any value is present (not `null`).
Equals the specified value.
Does not equal the specified value.
Greater than or equal to the specified value (lower bound).
Less than or equal to the specified value (upper bound).
## `EnumerableFilter`
Used to filter **parent resource collections** based on their associated **child collections**.
### Use Cases
* All categories that have at least one product priced over \$1000 without photos.
* All customers who have at least one order for a product from a specific category.
* All projects that have at least one incomplete task with high priority.
This filter operates on “EXISTS” logic. The result will only include parent resources that have at least one child resource matching the specified criteria.
At least **one** child resource matches each requirement (but not necessarily all of them at once).
At least **one** child resource matches each requirement (must match all requirements with the same index simultaneously).
**No** child resource matches each requirement (but not necessarily all of them at once).
**No** child resource matches each requirement (must match all requirements with the same index simultaneously).
# PropertyFilter
Source: https://developer.tra.cy/en/rest-api/filtering/property-filter
Used to filter **properties**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Dataset. See [DatasetFilter](dataset-filter).
Type. See [PropertyTypeFilter](property-type-filter).
Name. See [StringFilter](primitive-filters#stringfilter).
Is used as title (e.g., for notifications). See [BooleanFilter](primitive-filters#booleanfilter).
Is required. See [BooleanFilter](primitive-filters#booleanfilter).
Child permissions.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [PermissionFilter](permission-filters).
# PropertyTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/property-type-filter
Used to filter **property types**.
ID. See [StringFilter](primitive-filters#stringfilter).
Is automatic. See [BooleanFilter](primitive-filters#booleanfilter).
Is plural. See [BooleanFilter](primitive-filters#booleanfilter).
Is sortable. See [BooleanFilter](primitive-filters#booleanfilter).
# RecordFilter
Source: https://developer.tra.cy/en/rest-api/filtering/record-filter
Used to filter **records**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Dataset. See [DatasetFilter](dataset-filter).
State. See [StateFilter](state-filter).
Archived. See [DateTimeFilter](primitive-filters#datetimefilter).
Moved to trash. See [DateTimeFilter](primitive-filters#datetimefilter).
Query. See [StringFilter](primitive-filters#stringfilter).
Child datums.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [DatumFilter](datum-filters).
# RepresentationFilter
Source: https://developer.tra.cy/en/rest-api/filtering/representation-filter
Used to filter **representations**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Dashboard. See [DashboardFilter](dashboard-filter).
Dataset. See [DatasetFilter](dataset-filter).
Type. See [RepresentationTypeFilter](representation-type-filter).
Name. See [StringFilter](primitive-filters#stringfilter).
# RepresentationTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/representation-type-filter
Used to filter **representation types**.
ID. See [StringFilter](primitive-filters#stringfilter).
Is aggregated. See [BooleanFilter](primitive-filters#booleanfilter).
# RoleFilter
Source: https://developer.tra.cy/en/rest-api/filtering/role-filter
Used to filter **roles**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Name. See [StringFilter](primitive-filters#stringfilter).
# StateFilter
Source: https://developer.tra.cy/en/rest-api/filtering/state-filter
Used to filter **states**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Dataset. See [DatasetFilter](dataset-filter).
Name. See [StringFilter](primitive-filters#stringfilter).
Child permissions.
See [EnumerableFilter](primitive-filters#enumerablefilter).
See [PermissionFilter](permission-filters).
# TriggerFilter
Source: https://developer.tra.cy/en/rest-api/filtering/trigger-filter
Used to filter **triggers**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Automation. See [AutomationFilter](automation-filter).
State. See [StateFilter](state-filter).
Property. See [PropertyFilter](property-filter).
Delay. See [IntegerFilter](primitive-filters#integerfilter).
# UserFilter
Source: https://developer.tra.cy/en/rest-api/filtering/user-filter
Used to filter **users**.
ID. See [IntegerFilter](primitive-filters#integerfilter).
Name. See [StringFilter](primitive-filters#stringfilter).
Email. See [StringFilter](primitive-filters#stringfilter).
Role. See [RoleFilter](role-filter).
Type (system settings access level). See [UserTypeFilter](user-type-filter).
Is disabled. See [BooleanFilter](primitive-filters#booleanfilter).
# UserTypeFilter
Source: https://developer.tra.cy/en/rest-api/filtering/user-type-filter
Used to filter **user types**.
ID. See [StringFilter](primitive-filters#stringfilter).
# Inclusion
Source: https://developer.tra.cy/en/rest-api/inclusion
All GET endpoints that return resource collections support inclusion via URL parameter. This allows you to fetch related parent and child resources in a single request.
A comma-separated list of property paths.
Inclusion nesting depth is restricted for better performance.
```bash Example 1 theme={null}
# Returns all datasets along with their states, properties (including options), and representations.
curl --request GET \
--url '/datasets?fields=states,properties.options,representations'
```
```bash Example 2 theme={null}
# Returns all records along with their states, datums with properties, and nested records (including their own states and datums with properties).
curl --request GET \
--url '/records?fields=state,datums.property,datums.recordvalue.state,datums.recordvalue.datums.property'
```
# Overview
Source: https://developer.tra.cy/en/rest-api/index
Tracy REST API:
* uses **resource-oriented URLs** (plural nouns separated by hyphens);
* accepts **URL parameters** for HTTP GET methods and a **JSON body** for POST, PUT, and PATCH;
* returns responses in **JSON format**;
* uses standard **HTTP response codes**;
* supports authentication via **JWT token** or **API key**;
* uses **UTF-8** encoding;
* uses **ISO 8601** date and time format (`YYYY-MM-DDTHH:mm:ss.sssZ`, the client is responsible for conversion *to* and *from* UTC);
* supports [**filtering**](/en/rest-api/filtering), [**sorting**](/en/rest-api/sorting), [**pagination**](/en/rest-api/pagination), and [**inclusion**](/en/rest-api/inclusion).
# Pagination
Source: https://developer.tra.cy/en/rest-api/pagination
All GET endpoints that return resource collections support pagination via URL parameters.
Number of resources to skip.
Number of resources to return.
```bash Example theme={null}
# Skips the first 10 and returns the next 25 records.
curl --request GET \
--url '/records?offset=10&limit=25'
```
# Sorting
Source: https://developer.tra.cy/en/rest-api/sorting
All GET endpoints that return resource collections support sorting via URL parameter.
A comma-separated list of property paths, where each path is prefixed with `+` for ascending order or `-` for descending order.
```bash Example theme={null}
# Returns all records sorted by the position of their states.
curl --request GET \
--url '/records?sorting=+state.position'
```
# Create record
Source: https://developer.tra.cy/api-reference/records/create-record
en/rest-api/openapi.json post /v1/records
Creates a new record (or duplicates an existing one).
# Delete record
Source: https://developer.tra.cy/api-reference/records/delete-record
en/rest-api/openapi.json delete /v1/records/{id}
Deletes an existing specific record.
# Get record by ID
Source: https://developer.tra.cy/api-reference/records/get-record-by-id
en/rest-api/openapi.json get /v1/records/{id}
Gets a specific record by ID.
# Get records
Source: https://developer.tra.cy/api-reference/records/get-records
en/rest-api/openapi.json get /v1/records
Gets a filtered, sorted, and paginated list of records with optional inclusions.
# Update record
Source: https://developer.tra.cy/api-reference/records/update-record
en/rest-api/openapi.json put /v1/records
Updates an existing record.
# Create representation
Source: https://developer.tra.cy/api-reference/representations/create-representation
en/rest-api/openapi.json post /v1/representations
Creates a new representation.
# Delete representation
Source: https://developer.tra.cy/api-reference/representations/delete-representation
en/rest-api/openapi.json delete /v1/representations/{id}
Deletes an existing representation.
# Get representation by ID
Source: https://developer.tra.cy/api-reference/representations/get-representation-by-id
en/rest-api/openapi.json get /v1/representations/{id}
Gets a specific representation by ID.
# Get representations
Source: https://developer.tra.cy/api-reference/representations/get-representations
en/rest-api/openapi.json get /v1/representations
Gets a filtered, sorted, and paginated list of representations with optional inclusions.
# Update representation
Source: https://developer.tra.cy/api-reference/representations/update-representation
en/rest-api/openapi.json put /v1/representations
Updates an existing representation.
# Get representation type by ID
Source: https://developer.tra.cy/api-reference/representationtypes/get-representation-type-by-id
en/rest-api/openapi.json get /v1/representation-types/{id}
Gets a specific representation type by ID.
# Get representation types
Source: https://developer.tra.cy/api-reference/representationtypes/get-representation-types
en/rest-api/openapi.json get /v1/representation-types
Gets a filtered, sorted, and paginated list of representation types with optional inclusions.
# Create role
Source: https://developer.tra.cy/api-reference/roles/create-role
en/rest-api/openapi.json post /v1/roles
Creates a new role.
# Delete role
Source: https://developer.tra.cy/api-reference/roles/delete-role
en/rest-api/openapi.json delete /v1/roles/{id}
Deletes an existing role.
# Get role by ID
Source: https://developer.tra.cy/api-reference/roles/get-role-by-id
en/rest-api/openapi.json get /v1/roles/{id}
Gets a specific role by ID.
# Get roles
Source: https://developer.tra.cy/api-reference/roles/get-roles
en/rest-api/openapi.json get /v1/roles
Gets a filtered, sorted, and paginated list of roles with optional inclusions.
# Update role
Source: https://developer.tra.cy/api-reference/roles/update-role
en/rest-api/openapi.json put /v1/roles
Updates an existing role.
# Create state
Source: https://developer.tra.cy/api-reference/states/create-state
en/rest-api/openapi.json post /v1/states
Creates a new state.
# Delete state
Source: https://developer.tra.cy/api-reference/states/delete-state
en/rest-api/openapi.json delete /v1/states/{id}
Deletes an existing state.
# Get state by ID
Source: https://developer.tra.cy/api-reference/states/get-state-by-id
en/rest-api/openapi.json get /v1/states/{id}
Gets a specific state by ID.
# Get states
Source: https://developer.tra.cy/api-reference/states/get-states
en/rest-api/openapi.json get /v1/states
Gets a filtered, sorted, and paginated list of states with optional inclusions.
# Update state
Source: https://developer.tra.cy/api-reference/states/update-state
en/rest-api/openapi.json put /v1/states
Updates an existing state.
# Create subscription
Source: https://developer.tra.cy/api-reference/subscriptions/create-subscription
en/rest-api/openapi.json post /v1/subscriptions
Creates a new subscription.
# Get subscription by ID
Source: https://developer.tra.cy/api-reference/subscriptions/get-subscription-by-id
en/rest-api/openapi.json get /v1/subscriptions/{id}
Gets a specific subscription by ID.
# Get subscriptions
Source: https://developer.tra.cy/api-reference/subscriptions/get-subscriptions
en/rest-api/openapi.json get /v1/subscriptions
Gets a filtered, sorted, and paginated list of subscriptions with optional inclusions.
# Create ticket
Source: https://developer.tra.cy/api-reference/tickets/create-ticket
en/rest-api/openapi.json post /v1/tickets
Creates a new ticket.
# Delete ticket
Source: https://developer.tra.cy/api-reference/tickets/delete-ticket
en/rest-api/openapi.json delete /v1/tickets/{id}
Deletes an existing ticket.
# Get ticket by ID
Source: https://developer.tra.cy/api-reference/tickets/get-ticket-by-id
en/rest-api/openapi.json get /v1/tickets/{id}
Gets a specific ticket by ID.
# Get tickets
Source: https://developer.tra.cy/api-reference/tickets/get-tickets
en/rest-api/openapi.json get /v1/tickets
Gets a filtered, sorted, and paginated list of tickets with optional inclusions.
# Update ticket
Source: https://developer.tra.cy/api-reference/tickets/update-ticket
en/rest-api/openapi.json put /v1/tickets
Updates an existing ticket.
# Get transaction by ID
Source: https://developer.tra.cy/api-reference/transactions/get-transaction-by-id
en/rest-api/openapi.json get /v1/transactions/{id}
Gets a specific transaction by ID.
# Get transactions
Source: https://developer.tra.cy/api-reference/transactions/get-transactions
en/rest-api/openapi.json get /v1/transactions
Gets a filtered, sorted, and paginated list of transactions with optional inclusions.
# Get usage
Source: https://developer.tra.cy/api-reference/usages/get-usage
en/rest-api/openapi.json get /v1/usages
Gets workspace usage statistics.
# Create user
Source: https://developer.tra.cy/api-reference/users/create-user
en/rest-api/openapi.json post /v1/users
Creates a new user (or sends an invitation to the specified email).
# Delete user
Source: https://developer.tra.cy/api-reference/users/delete-user
en/rest-api/openapi.json delete /v1/users/{id}
Deletes an existing user.
# Get user by ID
Source: https://developer.tra.cy/api-reference/users/get-user-by-id
en/rest-api/openapi.json get /v1/users/{id}
Gets a specific user by ID.
# Get users
Source: https://developer.tra.cy/api-reference/users/get-users
en/rest-api/openapi.json get /v1/users
Gets a filtered, sorted, and paginated list of users with optional inclusions.
# Update user
Source: https://developer.tra.cy/api-reference/users/update-user
en/rest-api/openapi.json put /v1/users
Updates an existing user.
# Create workspace
Source: https://developer.tra.cy/api-reference/workspaces/create-workspace
en/rest-api/openapi.json post /v1/workspaces
Creates a new workspace.
# Delete workspace
Source: https://developer.tra.cy/api-reference/workspaces/delete-workspace
en/rest-api/openapi.json delete /v1/workspaces/{id}
Deletes an existing workspace.
# Get workspace by ID
Source: https://developer.tra.cy/api-reference/workspaces/get-workspace-by-id
en/rest-api/openapi.json get /v1/workspaces/{id}
Gets a specific workspace by ID.
# Update workspace
Source: https://developer.tra.cy/api-reference/workspaces/update-workspace
en/rest-api/openapi.json put /v1/workspaces
Updates an existing workspace.