NAV
shell csharp

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