# 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.