Dimensions
Dimension categories and values for journal entry tagging
List all dimensions
Retrieves all dimension categories and their values for your company.
Response Structure
Each dimension includes:
- id: Unique identifier for the dimension category
- name: Display name (e.g., "Department", "Project")
- isUnique: Whether only one value can be assigned per journal entry
- values: Tree of dimension values with hierarchical structure
Value Hierarchy
Values are returned as a nested tree structure:
- Root values have
parentId: null - Nested values reference their parent via
parentId childrenarray contains nested values
Performance
Results are cached for 5 seconds to improve performance. Changes via POST/PUT/DELETE endpoints automatically invalidate the cache.
Example Response
Code
List all dimensions › Responses
List of dimensions with their values
idUnique identifier of the dimension category
nameDisplay name of the dimension category
isUniqueWhen true, only one value from this dimension can be assigned to a journal entry (mutually exclusive). When false, multiple values can be assigned (additive tags). Example: A "Department" dimension is typically unique (one department per entry), while a "Tags" dimension might allow multiple values.
Available dimension values within this category, organized as a hierarchical tree. Root values have parentId as null, nested values reference their parent.
Create a new dimension category
Creates a new dimension category (e.g., "Department", "Project", "Cost Center").
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | Yes | Display name (2-100 characters, must be unique) |
| isUnique | boolean | Yes | Whether only one value can be assigned per journal entry |
Uniqueness Flag
Choose the isUnique setting based on your use case:
-
isUnique: true- Mutually exclusive categories- Example: "Department" - a transaction belongs to exactly one department
- Journal entry validation will reject multiple values from this category
-
isUnique: false- Additive tags- Example: "Tags" - a transaction can have multiple descriptive tags
- Multiple values can be freely assigned
Note: You can change this setting later, but changing from false to true will fail
if any journal entries already have multiple values assigned from this category.
Example
Code
Create a new dimension category › Request Body
nameDisplay name for the dimension category. Must be unique within your company. Choose a descriptive name that clearly indicates the categorization purpose.
isUniqueWhether only one value from this dimension can be assigned to a journal entry. Set to true for mutually exclusive categories (e.g., Department - an entry belongs to exactly one department). Set to false for additive tags (e.g., Tags - an entry can have multiple tags). This constraint is enforced when assigning dimension values to journal entries.
Create a new dimension category › Responses
Dimension category created successfully
idUnique identifier of the created/updated dimension category
nameDisplay name of the dimension category
isUniqueWhether only one value from this dimension can be assigned per journal entry
Get a single dimension by ID
Retrieves a specific dimension category and all its values.
Useful when you need to refresh data for a single dimension after making changes, without fetching all dimensions.
path Parameters
idThe unique identifier of the dimension category
Get a single dimension by ID › Responses
The dimension with its values
idUnique identifier of the dimension category
nameDisplay name of the dimension category
isUniqueWhen true, only one value from this dimension can be assigned to a journal entry (mutually exclusive). When false, multiple values can be assigned (additive tags). Example: A "Department" dimension is typically unique (one department per entry), while a "Tags" dimension might allow multiple values.
Available dimension values within this category, organized as a hierarchical tree. Root values have parentId as null, nested values reference their parent.
Update a dimension category
Updates an existing dimension category. All fields are optional - only provide fields you want to change.
Updating the Name
Provide a new name to rename the dimension category. The new name must be unique
within your company.
Changing the Uniqueness Constraint
From false to true:
- Will fail if any journal entries currently have multiple values from this category
- Before making this change, ensure all journal entries have at most one value assigned
- Error code if failed: JOURNAL_TAG_CATEGORY_UNIQUENESS_CONFLICT
From true to false:
- Always succeeds
- Existing journal entries are unaffected
- Future journal entries can have multiple values
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | No | New display name (2-100 characters, must be unique) |
| isUnique | boolean | No | New uniqueness constraint |
Example
Code
path Parameters
idThe unique identifier of the dimension category to update
Update a dimension category › Request Body
nameNew display name for the dimension category. Must be unique within your company. Changing the name does not affect existing dimension value assignments.
isUniqueUpdate the uniqueness constraint for this dimension category. Changing from false to true will fail if any journal entries currently have multiple values assigned from this category. Plan this change carefully as it affects data validation.
Update a dimension category › Responses
Dimension category updated successfully
idUnique identifier of the created/updated dimension category
nameDisplay name of the dimension category
isUniqueWhether only one value from this dimension can be assigned per journal entry
Delete a dimension category
Deletes a dimension category. The category must be empty (have no values) before deletion.
Prerequisites
Before deleting a dimension category:
- Delete all dimension values within the category
- For hierarchical values, delete children before parents
Cascade Behavior
- Dimension values are NOT automatically deleted
- You must explicitly delete all values first
- This prevents accidental data loss
Error Handling
- If the category has values, returns error code: JOURNAL_TAG_CATEGORY_HAS_TAGS
- If the category doesn't exist, returns error code: JOURNAL_TAG_CATEGORY_NOT_FOUND
path Parameters
idThe unique identifier of the dimension category to delete
Delete a dimension category › Responses
Dimension category deleted successfully
Create a new dimension value
Creates a new dimension value within an existing dimension category.
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| dimensionId | string (UUID) | Yes | The dimension category ID this value belongs to |
| name | string | Yes | Display name (2-120 characters, must be unique within category) |
| parentId | string (UUID) | No | Parent value ID for hierarchical structures |
Creating Hierarchical Values
Dimension values can be nested to create hierarchies like "Europe > Denmark > Copenhagen":
- Create "Europe" without a parentId (root level)
- Create "Denmark" with parentId = Europe's ID
- Create "Copenhagen" with parentId = Denmark's ID
Rules:
- Parent must exist within the same dimension category
- No circular references allowed
Example - Root Value
Code
Example - Nested Value
Code
Create a new dimension value › Request Body
dimensionIdID of the dimension category this value belongs to. The category must exist and belong to your company.
nameDisplay name for the dimension value. Must be unique within the dimension category. Choose descriptive names that will be clear when selecting values in the UI.
parentIdParent dimension value ID for creating hierarchical structures. Leave null or omit for root-level values. The parent must exist within the same dimension category. Example: Create "Europe" first, then create "Denmark" with parentId set to Europe's ID.
Create a new dimension value › Responses
Dimension value created successfully
idUnique identifier of the created/updated dimension value
nameDisplay name of the dimension value
dimensionIdID of the dimension category this value belongs to
dimensionNameName of the dimension category this value belongs to
dimensionIsUniqueWhether the parent category enforces single selection
parentIdParent dimension value ID, if this is a nested value
Update a dimension value
Updates an existing dimension value. All fields are optional - only provide fields you want to change.
Updating the Name
Provide a new name to rename the value. The new name must be unique within the
dimension category.
Changing the Parent (Moving in Hierarchy)
Set parentId to move the value within the hierarchy:
- Move to root level: Set
parentId: null - Move under another value: Set
parentIdto the new parent's ID
Rules:
- New parent must exist within the same dimension category
- Cannot create circular references (A cannot be parent of B if B is already an ancestor of A)
- Moving a value also moves all its children
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
| name | string | No | New display name (2-120 characters, must be unique within category) |
| parentId | string (UUID) or null | No | New parent value ID, or null for root level |
Example - Rename
Code
Example - Move to Root
Code
path Parameters
idThe unique identifier of the dimension value to update
Update a dimension value › Request Body
nameNew display name for the dimension value. Must be unique within the dimension category. Changing the name does not affect existing journal entry assignments.
parentIdNew parent dimension value ID. Set to null to move to root level. The parent must exist within the same dimension category and cannot create circular references (e.g., A cannot be parent of B if B is already an ancestor of A).
Update a dimension value › Responses
Dimension value updated successfully
idUnique identifier of the created/updated dimension value
nameDisplay name of the dimension value
dimensionIdID of the dimension category this value belongs to
dimensionNameName of the dimension category this value belongs to
dimensionIsUniqueWhether the parent category enforces single selection
parentIdParent dimension value ID, if this is a nested value
Delete a dimension value
Deletes a dimension value. The value must have no children before deletion.
Prerequisites
Before deleting a dimension value:
- Delete all child values first (if hierarchical)
- Consider the impact on reporting - historical journal entries keep their assignments
Cascade Behavior
- Child values are NOT automatically deleted
- You must explicitly delete children first (bottom-up deletion)
- Journal entry assignments are automatically removed when the value is deleted
Deletion Order for Hierarchies
For a hierarchy like "Europe > Denmark > Copenhagen":
- Delete "Copenhagen" first
- Then delete "Denmark"
- Finally delete "Europe"
Error Handling
- If the value has children, returns error code: JOURNAL_TAG_HAS_CHILDREN
- If the value doesn't exist, returns error code: JOURNAL_TAG_NOT_FOUND
path Parameters
idThe unique identifier of the dimension value to delete
Delete a dimension value › Responses
Dimension value deleted successfully