Introduction
Welcome to our Ditio API platform for external customers. Our APIs offer tools to connect and access data easily with cutting-edge technology. Streamline workflows, automate tasks, and create custom integrations with secure and reliable data transfer.
Authentication
Ditio uses API keys to allow access to the API. You can register a new API key at our developer portal.
We expects for the API key to be included in all API requests to the server in a header that looks like the following:
Machines
The Machine Object
THE MACHINE OBJECT:
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
| Parameter | Type | Description |
|---|---|---|
| companyId | string | The unique identifier of the company that owns the machine. |
| id | string | The unique identifier of the machine. |
| machineNumber | string | The unique identifier of the machine. |
| department | string | The department or location where the machine is located. |
| name | string | The name of the machine. |
| typeId | string | The unique identifier of the machine type. |
| costPriceMachine | number | The cost price of the machine itself (excluding any attachments). |
| costPrice | number | The total cost price of the machine including any attachments. |
| price | number | The selling price of the machine. |
| weight | number | The weight of the machine (in kilograms). |
| capacity | number | The capacity of the machine (in liters, cubic meters, etc.). |
| note | string | Additional notes or comments about the machine. |
| active | boolean | Indicates whether the machine is currently active. |
| buildYear | number | The year in which the machine was built. |
| emissionClass | string | The emission class of the machine (if applicable). |
| hourMeter | number | The total number of hours the machine has been in operation. |
| serviceDate | string | The date of the last service or maintenance check on the machine. |
| serialNumber | string | The serial number of the machine (if applicable). |
| engineNumber | string | The engine number of the machine (if applicable). |
| registrationNumber | string | The registration number of the machine (if applicable). |
| responsibleId | string | The unique identifier of the employee responsible for the machine. |
| responsibleEmployeeNumber | string | The employee number of the employee responsible for the machine. |
| isEquipment | boolean | Indicates whether the machine is classified as equipment. |
Create Machine
curl
-X POST "http://example.com/api/v4/integration/machines" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}'
This endpoint creates a machine.
HTTP Request
POST api/v4/integration/machines
Create Machine(s)
curl
-X POST "http://example.com/api/v4/integration/machines/create/array" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '[
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
]'
This endpoint creates a machine.
HTTP Request
POST api/v4/integration/machines/create/array
Retrieve Machine
curl
-X GET "/api/v4/integration/machines/9911231" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
This endpoint retrieves a machine.
HTTP Request
GET /api/v4/integration/machines/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of machine inside Ditio. |
Update Machine
curl -X PUT "/api/v4/integration/machines/991123" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Data Science",
"name": "High-Performance Drone Drill",
"typeId": "MILL001",
"costPriceMachine": 10,
"costPrice": 100,
"price": 999,
"weight": 65,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}'
The above command returns the updated JSON.
This endpoint creates a machine.
HTTP Request
PUT /api/v4/integration/machines/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of machine inside Ditio. |
Update Machine(s)
curl
-X PUT "/api/v4/integration/machines/update/array" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '
[
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Data Science",
"name": "High-Performance Drone Drill",
"typeId": "MILL001",
"costPriceMachine": 10,
"costPrice": 100,
"price": 999,
"weight": 65,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
]'
This endpoint updates the machine(s).
HTTP Request
POST /api/v4/integration/machines/update/array
Delete Machine
curl
-X DELETE "http://example.com/api/v4/integration/machines/342342"
-H "accept: */*"
This endpoint deletes the machine.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of machine inside Ditio. |
HTTP Request
DELETE api/v4/integration/machines/{id}
Get All Machines
curl -X GET "http://example.com/api/v4/integration/machines" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
]
This endpoint retrieves all the machines.
HTTP Request
GET /api/v4/integration/machines
Get Machine By Number
curl -X GET "http://example.com/api/v4/integration/machines/by-machine-number/{machineNumber}" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"companyId": "991123",
"id": "9911231",
"machineNumber": "9911231",
"department": "Manufacturing",
"name": "High-Performance Milling Machine",
"typeId": "MILL001",
"costPriceMachine": 50000,
"costPrice": 75000,
"price": 100000,
"weight": 2500,
"capacity": 1500,
"note": "This machine requires special training to operate.",
"active": true,
"buildYear": 2019,
"emissionClass": null,
"hourMeter": 500,
"serviceDate": "2023-04-15T10:30:00.000Z",
"serialNumber": "SERIAL001",
"engineNumber": null,
"registrationNumber": null,
"responsibleId": "EMP001",
"responsibleEmployeeNumber": "E001",
"isEquipment": true
}
]
This endpoint get a machine by the machine number.
HTTP Request
GET /api/v4/integration/machines/by-machine-number/{machineNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| machineNumber | string | External Machine Number. |
Check Can Delete Machine
curl
-X GET "http://example.com/api/v4/integration/machines/is-machine-deletable/243234" \
-H "accept: text/plain"
The above command returns bool like this: true
This endpoint checks whether the machine is deletable.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of machine inside Ditio. |
HTTP Request
GET api/v4/integration/machines/is-machine-deletable/{id}
Projects
The Project Object
THE PROJECT OBJECT:
{
"companyId": "991123",
"id": "9911231",
"projectNumber": "9911231",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
| Parameter | Type | Description |
|---|---|---|
| CompanyId | string | The unique identifier of the company that owns the machine. |
| Id | string | The unique identifier of the project. |
| ProjectNumber | string | The unique project number. |
| ExternalProjectNumber | string | The external project number. |
| Name | string | The name of the project. |
| Description | string | The description of the project. |
| Active | bool | Indicates if the project is currently active. |
| BlockedForRegistration | bool | Indicates if the project is blocked for registration. |
| StartDate | DateTime | The start date of the project. |
| FinishedDatePlanned | DateTime | The planned finish date of the project. |
| FinishedDate | DateTime | The actual finish date of the project. |
| EstimatedHourQty | decimal | The estimated hour quantity for the project. |
| MainForemanId | string | The unique identifier of the main foreman for the project. |
| ProjectLeaderId | string | The unique identifier of the project leader for the project. |
| MainContactEmail | string | The email address of the main contact for the project. |
| WorkBreakLunchStartTime | TimeSpan | The start time of the lunch break for the project. |
| WorkBreakLunchLength | TimeSpan | The length of the lunch break for the project. |
| WorkBreakDinnerStartTime | TimeSpan | The start time of the dinner break for the project. |
| WorkBreakDinnerLength | TimeSpan | The length of the dinner break for the project. |
| ProjectLocationLatitude | decimal | The latitude coordinate of the project location. |
| ProjectLocationLongitude | decimal | The longitude coordinate of the project location. |
Create Project
curl
-X POST "http://example.com/api/v4/integration/projects" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"companyId": "991123",
"id": "9911231",
"projectNumber": "9911231",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
This endpoint creates a Project.
HTTP Request
POST /api/v4/integration/projects
Retrieve Project
curl
-X GET "/api/v4/integration/projects/9911231" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"companyId": "991123",
"id": "9911231",
"projectNumber": "9911231",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
This endpoint retrieves a project.
HTTP Request
GET /api/v4/integration/projects/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of project inside Ditio. |
Update Project
curl
-X PUT "/api/v4/integration/projects/9911231" \
-H "accept: text/plain"
-d '{
"companyId": "991123",
"id": "9911231",
"projectNumber": "9911231",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
The above command returns the updated JSON.
This endpoint updates a project.
HTTP Request
PUT /api/v4/integration/projects/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of project inside Ditio. |
Delete Project
curl
-X DELETE "http://example.com/api/v4/integration/projects/342342"
-H "accept: */*"
This endpoint deletes the project.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of project inside Ditio. |
HTTP Request
DELETE /api/v4/integration/projects/{id}
Get All Projects
curl
-X GET "http://example.com/api/v4/integration/projects" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"companyId": "991123",
"id": "9911231",
"projectNumber": "9911231",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
]
This endpoint retrieves all the projects.
HTTP Request
GET /api/v4/integration/projects
Get Project By Number
curl
-X GET "http://example.com//api/v4/integration/projects/by-project-number/23}" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"companyId": "991123",
"id": "9911231",
"projectNumber": "23",
"externalProjectNumber": "EXT-9911231",
"name": "Highway Construction Project",
"description": "Construction of a 10-km highway",
"active": true,
"blockedForRegistration": false,
"startDate": "2022-01-01",
"finishedDatePlanned": "2022-12-31",
"finishedDate": null,
"estimatedHourQty": 5000,
"mainForemanId": "FOREMAN001",
"projectLeaderId": "LEADER001",
"mainContactEmail": "contact@constructioncompany.com",
"workBreakLunchStartTime": "12:00",
"workBreakLunchLength": 60,
"workBreakDinnerStartTime": "18:00",
"workBreakDinnerLength": 30,
"projectLocationLatitude": 51.5074,
"projectLocationLongitude": -0.1278
}
This endpoint gets a project by the project number.
HTTP Request
GET /api/v4/integration/projects/by-project-number/{projectNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| projectNumber | string | External Project Number. |
Tasks
The Task Object
THE TASK OBJECT:
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
| Parameter | Type | Description |
|---|---|---|
| CompanyId | string | The unique identifier of the company that owns the project. |
| Id | string | The unique identifier of the project task. |
| ProjectId | string | The unique identifier of the project to which the task belongs. |
| ExternalProjectNumber | string | The external project number associated with the task. |
| ExternalId | string | The external identifier associated with the task. |
| ExternalDim01 | string | The first external dimension associated with the task. |
| Name | string | The description or name of the task. |
| Active | bool | Indicates whether the task is active or not. |
| StartDate | DateTime | The start date of the task. |
| FinishedDate | DateTime? | The finish date of the task (null if not yet finished). |
| EstimatedHourQty | double | The estimated number of human hours required to complete the task. |
| ChapterId | int | The identifier of the chapter (if applicable). |
| ParentActivityId | string | The identifier of the parent activity (if applicable). |
| IsParent | bool | Indicates whether the task is a parent task or not. |
| CostPrice | double | The cost price of the task. |
| UnitId | int | The identifier of the unit associated with the task. |
| MeasureUnitQty | double | The quantity of the measure unit associated with the task. |
| Price | double | The price of the task. |
| FixedResourcePrice | double | The fixed resource price of the task. |
| WorkDescription | string | The detailed work description of the task. |
| WorkDescriptionShort | string | The short work description of the task. |
| TaskLocationLatitude | double? | The latitude of the task location (null if not applicable). |
| TaskLocationLongitude | double? | The longitude of the task location (null if not applicable). |
| SafeJobAnalysisApprovalRequired | bool | Indicates whether Safe Job Analysis approval is required for the task. |
| SafeJobAnalysisUserPromptText | string | The user prompt text for Safe Job Analysis (if applicable). |
Create Task
curl
-X POST "http://example.com/api/v4/integration/tasks" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}'
This endpoint creates a Task.
HTTP Request
POST /api/v4/integration/tasks
Retrieve Task
curl
-X GET "/api/v4/integration/tasks/TASK001" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
This endpoint retrieves a Task.
HTTP Request
GET /api/v4/integration/tasks/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of a Task inside Ditio. |
Update Task
curl
-X PUT "/api/v4/integration/tasks/TASK001" \
-H "accept: text/plain"
-d '{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 3,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Test the installed Software.",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper training?"
}
The above command returns the updated JSON.
This endpoint updates a Task.
HTTP Request
PUT /api/v4/integration/tasks/{id}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of a Task inside Ditio. |
Delete Task
curl
-X DELETE "http://example.com/api/v4/integration/tasks/TASK001"
-H "accept: */*"
This endpoint deletes a Task.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of a Task inside Ditio. |
HTTP Request
DELETE /api/v4/integration/tasks/{id}
Get All Tasks by Project ID
curl
-X GET "http://example.com/api/v4/integration/tasks/project/PROJ001" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
]
This endpoint retrieves a list of all tasks in a project by ditio project id
HTTP Request
GET /api/v4/integration/projects/{projectId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of project inside Ditio. |
Get All Tasks by Project Number
curl
-X GET "/api/v4/integration/tasks/by-project-number/EXT001" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
]
This endpoint retrieves a list of all tasks in a project by project number.
HTTP Request
GET /api/v4/integration/tasks/by-project-number/{projectNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| projectNumber | string | The Project Number. |
Get Task in Project
curl
-X GET "http://example.com/api/v4/integration/tasks/by-project-number/PROJ001/by-task-number TASK001" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
]
This endpoint retrieves a list of all tasks in a project by project number.
HTTP Request
GET api/v4/integration/tasks/by-project-number/{projectNumber}/by-task-number/{taskNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| taskNumber | string | The Task Number. |
| projectNumber | string | The Project Number. |
Get Task By External IDs
curl
-X GET "http://example.com/api/v4/integration/tasks/by-project-number/PROJ001/by-task-number TASK001" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"CompanyId": "000123",
"Id": "TASK001",
"ProjectId": "PROJ001",
"ExternalProjectNumber": "EXT001",
"ExternalId": "EXTTASK001",
"ExternalDim01": "DIM001",
"Name": "Install new server",
"Active": true,
"StartDate": "2023-05-10T08:00:00Z",
"FinishedDate": null,
"EstimatedHourQty": 16.5,
"ChapterId": 2,
"ParentActivityId": "PARENT001",
"IsParent": false,
"CostPrice": 1200.0,
"UnitId": 1,
"MeasureUnitQty": 2.0,
"Price": 1500.0,
"FixedResourcePrice": 500.0,
"WorkDescription": "Install new server in the data center, install software",
"WorkDescriptionShort": "Install new server in data center",
"TaskLocationLatitude": 37.7749,
"TaskLocationLongitude": -122.4194,
"SafeJobAnalysisApprovalRequired": true,
"SafeJobAnalysisUserPromptText": "Have you received proper protective equipment for this task?"
}
]
This endpoint retrieves a list of all tasks in a project by project number.
HTTP Request
GET api/v4/integration/tasks/by-project-number/{projectNumber}/by-task-number/{taskNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| taskNumber | string | The Task Number. |
| projectNumber | string | The Project Number. |
User Certificates
The UserCertificate Object
THE USERCERTIFICATE OBJECT:
{
"EmployeeNumber": "123456",
"CertificateType": "Byggekort",
"CertificateNumber": "78901234",
"IssuedDateTime": "2023-05-09T10:30:00Z",
"ValidUntilDateTime": "2024-05-09T10:30:00Z",
"Notes": "This certificate is valid for site access."
}
| Parameter | Type | Description |
|---|---|---|
| EmployeeNumber | string | This has to match the employee number in Ditio. |
| CertificateType | string | Send in a certificate type as a string. Example: Byggekort. |
| CertificateNumber | string | The unique identifier of the certificate. |
| IssuedDateTime | DateTime | The date and time when the certificate was issued. |
| ValidUntilDateTime | DateTime | The date and time until the certificate is valid. |
| Notes | string | Additional notes for the certificate. |
Create UserCertificate
curl
-X POST "http://example.com/api/v4/integration/certificates" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"EmployeeNumber": "123456",
"CertificateType": "Byggekort",
"CertificateNumber": "78901234",
"IssuedDateTime": "2023-05-09T10:30:00Z",
"ValidUntilDateTime": "2024-05-09T10:30:00Z",
"Notes": "This certificate is valid for site access."
}'
This endpoint creates a certificate for a user.
HTTP Request
POST api/v4/integration/certificates
Users
The User Object
THE USER OBJECT:
{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}
| Parameter | Type | Description |
|---|---|---|
| IdentityId | string | The identity ID of the user. |
| CompanyProfileId | string | The company profile ID of the user. |
| CompanyId | string | The ID of the company the user belongs to. |
| EmployeeNumber | string | The employee number of the user. |
| FirstName | string | The first name of the user. |
| LastName | string | The last name of the user. |
| MobileWork | string | The work mobile number of the user. |
| MobilePrivate | string | The private mobile number of the user. |
| string | The email of the user. | |
| WorkTitle | string | The work title of the user. |
| BirthDate | string | The birth date of the user. |
| CarRegNumber | string | The car registration number of the user. |
| EmploymentStartDate | string | The start date of the user's employment. |
| EmploymentEndDate | string | The end date of the user's employment. |
| Department | string | The department of the user. |
| CardId | string | The ID of the card. |
| CardExpirationDate | string | The expiration date of the card. |
| Payroll | bool | Indicates if the user is on payroll or not. |
| IsDisabled | bool | Indicates if the user is disabled or not. |
| DefaultResourceNumber | string | The default resource number of the user. |
| WorktimeArrangementName | string | The name of the worktime arrangement. |
| OrganizationNumber | string | The organization number of the user. |
Create User
curl
-X POST "http://example.com/api/v4/integration/users" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}'
This endpoint creates a Task.
HTTP Request
POST /api/v4/integration/users
Retrieve User
curl
-X GET "/api/v4/integration/users/by-profile-id/123456" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}
This endpoint retrieves a user.
HTTP Request
GET /api/v4/integration/users/by-profile-id/{profileId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| profileId | string | Unique identifier of a user profile inside Ditio. |
Update User
curl
-X PUT "/api/v4/integration/users/123456" \
-H "accept: text/plain"
-d '{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "Johnathan",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer 2",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}'
The above command returns the updated JSON.
This endpoint updates the user information stored in Ditio. Can be an issue, if multiple Employment-related fields are updated at the same time. Note, that when the user starts working for a new company, you should provide a valid start date
HTTP Request
PUT /api/v4/integration/users/{identityId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| identityId | string | Unique identifier of a user profile inside Ditio. |
Delete User
curl
-X DELETE "http://example.com//api/v4/integration/users/123456"
-H "accept: */*"
This endpoint deletes a user.
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| id | string | Unique identifier of a Task inside Ditio. |
HTTP Request
DELETE /api/v4/integration/users/{identityId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| identityId | string | Unique identifier of a user profile inside Ditio. |
Get All Users
curl
-X GET "/api/v4/integration/users" \
-H "accept: text/plain"
The above command returns JSON structured like this:
[
{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}
]
This endpoint gets the list of Users inside Current company (includes subsidiary companies) or only inside specified company.
HTTP Request
GET /api/v4/integration/users
Check Can Delete User
curl
-X GET "/api/v4/integration/users/is-identity-deletable/123456" \
-H "accept: text/plain"
The above command returns bool like this: true
This endpoint checks if the user can be deleted
HTTP Request
GET /api/v4/integration/users/is-identity-deletable/{identityId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| identityId | string | Unique identifier of a user profile inside Ditio. |
Get User By Employee Number
curl
-X GET "/api/v4/integration/users/by-employee-number/E1234" \
-H "accept: text/plain"
The above command returns JSON structured like this:
{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}
This endpoint retrieves a user with employee number.
HTTP Request
GET /api/v4/integration/users/by-employee-number/{employeeNumber}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| employeeNumber | string | Employee number of a user inside a company in Ditio. |
Enable User
curl
-X PATCH "http://example.com/api/v4/integration/users/enable/23423423" \
-H "accept: */*"
The above command returns no data.
This endpoint sets user to Enabled state.
HTTP Request
PATCH /api/v4/integration/users/enable/{profileId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| profileId | string | Unique identifier of a user profile inside Ditio. |
Disable User
curl
-X PATCH "http://example.com/api/v4/integration/users/disable/23423423" \
-H "accept: */*"
The above command returns no data.:
This endpoint sets user to Disabled state with disable reason = disabledByIntegration.
HTTP Request
PATCH /api/v4/integration/users/disable/{profileId}
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| profileId | string | Unique identifier of a user profile inside Ditio. |
Create User SCIM endpoint
curl
-X POST "http://example.com/api/v4/integration/users/scim" \
-H "accept: text/plain" \
-H "Content-Type: application/json" \
-d '{
"IdentityId": "123456",
"CompanyProfileId": "7890",
"CompanyId": "ABC123",
"EmployeeNumber": "E1234",
"FirstName": "John",
"LastName": "Doe",
"MobileWork": "555-1234",
"MobilePrivate": "555-5678",
"Email": "johndoe@example.com",
"WorkTitle": "Software Developer",
"BirthDate": "1990-05-09",
"CarRegNumber": "AB12345",
"EmploymentStartDate": "2015-01-01",
"EmploymentEndDate": null,
"Department": "IT",
"CardId": "C123",
"CardExpirationDate": "2025-12-31",
"Payroll": true,
"IsDisabled": false,
"DefaultResourceNumber": "R123",
"WorktimeArrangementName": "Standard",
"OrganizationNumber": "123456789"
}'
This endpoint creates or updates a user from a SCIM endpoint.
HTTP Request
POST /api/v4/integration/users/scim
Payroll Exports
Get Payroll Data - Method 1
curl
-X GET "https://example.com/api/payroll-export?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&modifiedSinceDate=2022-01-23&dataFilter=0&userIds=123,456" \
-H "accept: text/plain"
The above command returns the JSON.
This endpoint is used to export payroll data as a json all filters are ANDed IMPORTANT: For getting data out using the "fromWorkDate" and "toWorkDate" parameters, the maximum date range supported is 30 days. For longer reports, please chunk the requests with a max. 30 day range. For getting data out using the "modifiedSinceDate" parameter, the oldest data that can be queried in this way is 1 year back since current date. If "fromWorkDate" and "toWorkDate" parameters are specified along with the "modifiedSinceDate" parameter, then data modified since that date is queried inside the specified range
HTTP Request
GET api/payroll-export/readonly
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime? | Export from date. Example: 2022-01-01 | No |
| toWorkDate | DateTime? | Export to date. Example: 2022-01-23 | No |
| modifiedSinceDate | DateTime? | Returns all payroll data that has been modified since the given date. Example: 2022-01-23 | No |
| dataFilter | enum | Approved(0), Locked(5) or All(10). Default value is 0 (Approved) | No |
| userIds | List of string | Filter by a list of Ditio User ids | No |
Get Payroll Data - Method 2
curl
-X GET "http://example.com/api/payroll-export?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&lockData=false&dataFilter=0&userIds=123,456,789" \
-H "accept: text/plain"
The above command returns the JSON.
This endpoint is used to export payroll data as a json. Includes possibility to lock payroll data. All filters are ANDed and IMPORTANT: Maximum date range supported is 30 days. For longer reports, please chunk the requests with a max of 30 day range.
HTTP Request
GET /api/payroll-export
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime | Export from date. Example: 2022-01-01 | Yes |
| toWorkDate | DateTime | Export to date. Example: 2022-01-23 | Yes |
| lockData | Boolean | Lock payroll data in Ditio | No |
| dataFilter | enum | Approved(0), Locked(5) or All(10). Default value is 0 (Approved) | No |
| userIds | List of string | Filter by a list of Ditio User ids | No |
Get Payroll Data as File
curl
-X GET "http://example.com/api/payroll-export/file?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&voucherNumber=123&dataExportType=6&dataFilter=0" \
-H "accept: text/plain"
The above command returns a file.
This endpoint gets Payroll data out as a file in the specific format set up in the Company Payroll Setup IMPORTANT: Maximum date range supported is 30 days. For longer reports, please chunk the requests with a max. 30 day range
HTTP Request
GET /api/payroll-export/file
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime | Export from date. Example: 2022-01-01 | Yes |
| toWorkDate | DateTime | Export to date. Example: 2022-01-23 | Yes |
| voucherNumber | string | Voucher number for cost file export | No |
| dataExportType | enum | Payroll Preview file export(5), Payroll Journal export(6), Payroll file export(10), Absence file Export(20), Cost file export(30), Transaction split export(40). Default Value is 6 (Payroll Journal export) | No |
| dataFilter | enum | Approved(0), Locked(5) or All(10). Default value is 0 (Approved) | No |
Project Transactions
Retrieve As File
curl
-X GET "http://example.com/api/v4/project-transaction-export/file?fromWorkDate=2022-01-01&toWorkDate=2022-01-01&transactionStatus=0&userIds=123&projectIds=456&taskIds=789&machineIds=357&tagIds=457&fileName=568&lockData=true&exportDataToFileShare=true" \
-H "accept: */*"
The above command returns file.
This endpoint is used to export project transaction splits as a file. Primarily used by Ditio Web All filters are ANDed.
HTTP Request
GET /api/v4/project-transaction-export/file
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime | Export from date. Example: 2022-01-01 | Yes |
| toWorkDate | DateTime | Export to date. Example: 2022-01-23 | Yes |
| transactionStatus | Enum | Approved(0), Locked(5) or All(10). Default value is 0 (Approved) | No |
| userIds | List of string | Filter by a list of Ditio User ids | No |
| projectIds | List of string | Filter by a list of Ditio Project ids | No |
| taskIds | List of string | Filter by a list of Ditio Task ids | No |
| machineIds | List of string | Filter by a list of Ditio Machine ids | No |
| tagIds | List of string | Filter by a list of Ditio User Tag ids | No |
| fileName | string | Define a fileName In order to override the default | No |
| lockData | Boolean | Lock transaction data | No |
| exportDataToFileShare | Boolean | If data needs to be exported to the file share. Data is automatically locked if this is set to true | No |
Retrieve As JSON
curl
-X GET "http://example.com/api/v4/project-transaction-export?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&transactionStatus=0&userIds=123,456&projectIds=789,1011&taskIds=1213,1415&machineIds=1617,1819&tagIds=2021,2223" \
-H "accept: */*"
The above command returns the JSON.
This endpoint is used this to export time registration splits as a json and all filters are ANDed.
HTTP Request
GET /api/v4/project-transaction-export
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime | Export from date. Example: 2022-01-01 | Yes |
| toWorkDate | DateTime | Export to date. Example: 2022-01-23 | Yes |
| transactionStatus | enum | Approved(0), Locked(5) or All(10). Default value is 0 (Approved) | No |
| userIds | List of string | Filter by a list of Ditio User ids | No |
| projectIds | List of string | Filter by a list of Ditio Project ids | No |
| taskIds | List of string | Filter by a list of Ditio Task ids | No |
| machineIds | List of string | Filter by a list of Ditio Machine ids | No |
| tagIds | List of string | Filter by a list of Ditio User Tag ids | No |
Lock Transactions
curl -X POST "http://example.com/api/v4/project-transaction-export/lock" \
-H "accept: */*" \
-H "Content-Type: application/json" \
-d '{
"transactionIds": [
"TransactionID-1",
"TransactionID-2"
]
}'
The above command returns the JSON.
This endpoint is used lock time registrations in Ditio.
HTTP Request
POST /api/v4/project-transaction-export/lock
Query Parameters
| Parameter | Type | Description |
|---|---|---|
| transactionIds | List of string | List of Ditio transaction Ids |
Split Transactions
curl -X GET "http://example.com/api/v4/project-transaction-export/split-transactions?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&userIds=user1,user2&projectIds=project1,project2&taskIds=task1,task2&machineIds=machine1,machine2&tagIds=tag1,tag2&lockData=false" \
-H "accept: */*"
The above command returns the JSON.
This endpoint is used split transactions in Ditio.
HTTP Request
GET /api/v4/project-transaction-export/split-transactions
Query Parameters
| Parameter | Type | Description | Required |
|---|---|---|---|
| fromWorkDate | DateTime | Export from date. Example: 2022-01-01 | Yes |
| toWorkDate | DateTime | Export to date. Example: 2022-01-23 | Yes |
| userIds | string | Filter by a list of Ditio User ids | No |
| projectIds | string | Filter by a list of Ditio Project ids (default=null) | No |
| taskIds | string | Filter by a list of Ditio Task ids (default=null) | No |
| machineIds | string | Filter by a list of Ditio Machine ids (default=null) | No |
| tagIds | string | Filter by a list of Ditio User Tag ids (default=null) | No |
| lockData | bool | Lock payroll data in Ditio (default=false) | No |
Shift Report
curl -X GET "http://example.com/api/v4/project-transaction-export/shift-report?fromWorkDate=2022-01-01&toWorkDate=2022-01-23&userIds=user1,user2" \
-H "accept: */*"
The above command returns the JSON.
This endpoint is used lock time registrations in Ditio.
HTTP Request
GET /api/v4/project-transaction-export/shift-report
Query Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
| fromWorkDate | string | Yes | Start date for the export. |
| toWorkDate | string | Yes | End date for the export. |
| userIds | string | Yes | Comma separated list of user IDs to filter by. |