Visma Tid API documentation

Overview

Getting started

The API is organized around REST. Our API has predictable resource-oriented URLs, accepts JSON request bodies, returns JSON-encoded responses, and uses standard HTTP response codes, authentication and verbs.

To get started you need a Visma Tid account and an API-application. Follow the steps in the section below to create an API-application.

Base URL
https://publicapi.tid.vismaspcs.se

Creating an API-application

If you have an existing Visma Tid account and you're already signed in, you can just click on this link to navigate to the administration page where you manage your API-applications. Otherwise you can follow the steps below to get started.

  1. Login to your existing account or sign up for a 14-day free trial.
  2. Go to the administration panel by clicking on the cog-icon in the top right corner next to your profile. Note that this requires administrator permissions. If you don't see the cog-icon, you don't have administrator permissions.
  3. In the sidebar to the left, click on the "Integrationer" (Integrations) menu and then click on "API-applikationer" (API-applications).
  4. In the upper corner there is a button labeled "Lägg till" (Add), click it.
  5. Give your application a name and choose whose responsible for the API-application, then click the button labeled "Spara" (Save).

Authentication

Bearer token authentication is used for access to the API endpoints. Basic authentication is used to aquire access tokens.

Aquire access token

To aquire an access token, a request should be made to POST /v1/Auth/Token with the Authorization-header scheme set to Basic and the value should be the Base64-output of your application id and secret joined by a colon (:).

Token request
POST /v1/Auth/Token
Authorization: Basic bXlhcHBpZDpteWFwcHNlY3JldA==
Response
{ "objectName": "auth.token", "accessToken": "pk_00000000-0000-0000-0000-000000000000.pa_00000000-0000-0000-0000-000000000000", "expires": "2024-12-07 11:47:38 +00:00" }

Authenticate a request

To authenticate a request, the Authorization-header scheme is set to Bearer and the access token as the value.

Authenticated request
GET /v1/Core/Contacts?page=1
Authorization: Bearer pk_00000000-0000-0000-0000-000000000000.pa_00000000-0000-0000-0000-000000000000

Important!

Your API-applications can carry many privileges, so be sure to keep the application id, secret and issued access tokens secure! Do not share these in publicly accessible areas such as GitHub, client-side code, and so forth.

All API requests must be made over HTTPS. Calls made over plain HTTP will fail.

All API endpoints requires authentication unless specified otherwise. Failure to provide a valid acces token in a request will result in a 401 Unauthorized response.

Rate limiting

All access-tokens are subjected to rate limiting. This is determined on a per-request basis and is enforced when an access-token has made more than four (4) requests during a given second.

When in effect, the response code to your requests will be 429 Too Many Requests, with a response body telling you for how long you have to wait until the rate limiting is no longer in effect. A Retry-After header will also be sent along with the response if you prefer to read the timeout from there.

The timeout is in seconds.

Response
{ "waitInSeconds": 1 }

Status codes

A range of standard HTTP status codes are used by the API to inform the client of the result of their action.

200 OK

The status code 200 OK is the most common status code and is returned when the request was successful. The response body may contain data such as an entity.

Examples to the right shows that a GET-request to /v1/Core/contacts/page=1 returns an object in its response whereas the DELETE-request does not.

GET /v1/Core/Contacts?page=1
{ "objectName": "generic.list", "page": 3, ... }
DELETE /v1/Core/Contacts/32
[Empty]

400 BAD REQUEST

The status code 400 BAD REQUEST is returned for any request where the server cannot or will not process the request due to an apparent client error.

The "client error" may be missing required parameters, missing required properties in a request body, invalid parameter/property values and so forth.

GET /v1/Core/Contacts
{ "message": "The request is invalid.", "modelState": { "page": [ "The field Page must be greater than or equal to 1." ] } }

401 UNAUTHORIZED

A 401 UNAUTHORIZED response will be produced when the client has failed to send the authentication header or if the authentication token is invalid.

POST /v1/Core/Contacts
{ "message": "Invalid token" }

403 FORBIDDEN

A 403 FORBIDDEN response will be produced when either the API-application does not have the required permissions to perform the action, or if the API-application has a list of allowed IP-addresses and the machine making the request is not on that list.

Insufficient permissions response
{ "message": "You dont have the nessecery permissions to perform this action", "ipAddressAllowed": true, "permissionsRequired": [ "Contact_read" ] }
IP-address restriction response
{ "message": "Your IP-address \"127.0.0.1\" is not allowed", "ipAddressAllowed": false, "permissionsRequired": [] }

404 NOT FOUND

A 404 NOT FOUND response will be produced when the resource URL does not exist.

GET /v1/EndpointThatDoesNotExist
[Empty]

429 TOO MANY REQUESTS

A 429 TOO MANY REQUESTS response will be produced when your access token has been requesting too many resources too fast.

Response
{ "waitInSeconds": 1 }

500 INTERNAL SERVER ERROR

A 500 INTERNAL SERVER ERROR response will be produced when something has gone wrong when processing the request.

Response
{ "message": "An unexpected error has occurred.", "requestId": "r-0fbf44e8-afb8-42be-ae69-55c8bc03311b" }

502 BAD GATEWAY | 503 SERVICE UNAVAILABLE

A 502 BAD GATEWAY and/or 503 SERVICE UNAVAILABLE responses will be produced when the API is restarting because of a hardware/software update or stopped because of a planned maintenance.

Lists, sorting and filtering

Lists

Most resources in this API has an endpoint for fetching a list of that resource. These lists are divided into pages. You control which page to fetch and optionally how many items the page should include.

Parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Basic list request
GET /v1/Core/Contacts?page=1&pageSize=25

Sorting

You can also specify what property to sort lists by. The available properties to sort by are specific to each endpoint. You can also choose in what order to perform the sort, either in ascending order (a-z, 0-9) or in descending order (z-a, 9-0).

Parameters
sortBy
string
Specifies which property of the entity to sort by.
sortOrder
string
Specifies the sorting order.
Basic sorted request
GET /v1/Core/Contacts?page=1&sortBy=name&sortOrder=ascending

Filtering

Lists can also be filtered and is done so with the
filter.{filter-name}={value} syntax. Available filters are specific to each endpoint.

Supported filter value datatypes
Datatype Example value
string mystr
integer 120
decimal 42.5
boolean false
integer array 5,21,46,231
datetime 2021-01-01 14:00:00
Basic filtered request
GET /v1/Core/Contacts?page=1&filter.query=anders&filter.tagids=42,150,6

List response

All list endpoints will return a standard list response comprised of properties which tells you where you are in the list and how much is left.

Response object
objectName
string
The name of the object.
page
required
integer
The page number that was fetched.
pageSize
required
integer
The size of the page that was fetched.
itemCount
required
integer
The number of items in the items property.
totalItemCount
required
integer
The total number of items on the server with the same filters.
totalPages
required
integer
The total number of pages given the current page size.
items
object array
The objects represented on this page.
Example list response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 0, "totalItemCount": 1, "totalPages": 1, "items": [] }

Core resources

Contacts

List contacts

Gets a list of contacts.

Required permissions
Contact_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name customerNumber created updated
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.query
string
Matches contacts where their name or customer number contains the query.
filter.phoneNumber
string
Matches contacts where their phone or cell phone number contains the query
filter.tagIds
integer array
Matches contacts whose list of tags contains the specified array of id's.
filter.createdOrUpdatedSince
datetime utc
Matches contacts who were created or updated since the specified date and time.
filter.contactType
string
Matches contacts who are of a specific type. Valid values are: person company
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this contact.
guid
string
The GUID for this contact.
name
string
The name of the contact.
phoneNumber
string
The phone number of the contact.
cellPhoneNumber
string
The cell phone number of the contact.
email
string
The email of the contact.
customerNumber
string
The customer number of the contact.
contactType
string
The type of contact. Valid values are: person company
organizationalOrSocialSecurityNumber
string
If the type of contact is person then this property represents a social security number, otherwise it represents a company's organizational number.
visitingAddress
object
The contact's visiting address
company
object
If the type of contact is person then this property represents the company that the person belongs to, otherwise it is null
parentCompany
object
If the type of contact is company then this property represents the parent company of the contact, otherwise it is null.
created
datetime utc
The date and time of which the contact was created.
lastUpdated
datetime utc
The date and time of which the contact was last updated if any.
externalId
string
An external id specified by the user that may be used to retrieve the contact.
isKycCustomer
required
boolean
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Contacts
Example request
GET /v1/Core/Contacts?page=1&pageSize=10&filter.query=anders&sortBy=name&sortOrder=ascending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "contact.list", "id": 1, "guid": null, "name": "John Doe", "phoneNumber": null, "cellPhoneNumber": null, "email": "John.doe@gmail.com", "customerNumber": "1", "contactType": "person", "organizationalOrSocialSecurityNumber": null, "visitingAddress": { "objectName": "generic.address", "streetAddress": "Trädvägen 123", "additionalAddress": null, "postalCode": "94100", "city": "Piteå", "state": "Norrbotten", "countryId": 1, "countryName": "Sverige" }, "company": { "objectName": "generic.name_id", "id": 2, "name": "My company" }, "parentCompany": null, "created": "2024-12-07 10:47:38 +00:00", "lastUpdated": null, "externalId": null, "isKycCustomer": false } ] }

Get contact

Gets a single contact.

Required permissions
Contact_Read
Parameters
id
required
integer
The id of the contact.
Response object
objectName
string
The name of the object.
id
int
The unique identifier for this contact.
name
string
The name of the contact.
customerNumber
string
The customer number of the contact.
contactType
string
The type of contact. May be either person or company.
organizationalOrSocialSecurityNumber
string
If the type of contact is person then this property represents a social security number, otherwise it represents a company's organizational number.
company
object
If the type of contact is person then this property represents the company that the person belongs to, otherwise it is null. For detailed description of properties, see id-name object.
parentCompany
object
If the type of contact is company then this property represents the parent company of the contact, otherwise it is null. For detailed description of properties, see id-name object.
isActive
boolean
Whether or not the contact is active.
email
string
The email of the contact.
invoiceEmail
string
The invoice email of the contact.
phoneNumber
string
The phone number of the contact.
cellPhoneNumber
string
The cellphone number of the contact.
importantInformation
string
Important information about the contact to be highlighted.
isSupplier
boolean
Whether or not the contact is a supplier.
isWholeSale
boolean
Whether or not the contact is a wholesaler.
isRetailer
boolean
Whether or not the contact is a retailer.
isSubContractor
boolean
Whether or not the contact is a subcontractor.
isPartner
boolean
Whether or not the contact is a partner.
isCustomer
boolean
Whether or not the contact is a customer.
useReverseBuildTax
boolean
Whether or not the contact should be billed using reversed build tax.
responsible
object
The user responsible for this contact. For detailed description of properties, see id-name object.
tags
object array
A list of tags assigned to this contact. For detailed description of properties, see id-name object.
visitingAddress
object
The contact's visiting address. For detailed description of properties, see address object.
deliveryAddress
object
The contact's delivery address. For detailed description of properties, see address object.
invoiceAddress
object
The contact's invoice address. For detailed description of properties, see address object.
created
datetime
The date and time of which the contact was created.
createdBy
object
The user who created this contact. For detailed description of properties, see id-name object.
lastUpdated
datetime
The date and time of which the contact was last updated if any.
lastUpdatedBy
object
The user who last updated this contact. For detailed description of properties, see id-name object.
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code will be produced if the contact could not be found.
GET /v1/Core/Contacts/:id
Example request
GET /v1/Core/Contacts/32
Response
{ "objectName": "contact.detail", "id": 32, "name": "Lotta Larsson", "customerNumber": "111", "contactType": "Person", "organizationalOrSocialSecurityNumber": "860311-7063", "company": null, "parentCompany": null, "isActive": true, "email": "lotta@familjenlarsson.se", "invoiceEmail": "", "phoneNumber": "075-9902281", "cellPhoneNumber": "0707788994", "importantInformation": "", "isSupplier": false, "isWholeSale": false, "isRetailer": false, "isSubContractor": false, "isPartner": false, "isCustomer": false, "useReverseBuildTax": false, "responsible": { "objectName": "generic.name_id", "id": 5, "name": "Jonas lindberg" }, "tags": [], "visitingAddress": { "objectName": "generic.address", "streetAddress": "Solberga", "additionalAddress": null, "postalCode": "92372", "city": null, "state": null, "countryId": 1, "countryName": "Sverige" }, "deliveryAddress": { "objectName": "generic.address", "streetAddress": "", "additionalAddress": null, "postalCode": "", "city": null, "state": null, "countryId": 1, "countryName": "Sverige" }, "invoiceAddress": { "objectName": "generic.address", "streetAddress": "", "additionalAddress": "", "postalCode": "", "city": null, "state": null, "countryId": 1, "countryName": "Sverige" }, "created": "2021-06-17 05:43:54 +00:00", "createdBy": { "objectName": "generic.name_id", "id": 5, "name": "Jonas lindberg" }, "lastUpdated": null, "lastUpdatedBy": null }

Create contact

Creates a new contact.

Required permissions
Contact_Write
Contact creation properties
name
required
string
The name of the contact.
customerNumber
string
The customer number of the contact, if provided.
contactType
required
string
The type of contact. May be either person or company.
organizationalOrSocialSecurityNumber
string
If the type of contact is person then this property represents a social security number, otherwise it represents a company's organizational number.
companyId
integer
If the type of contact is person then this property represents the Id of the company that the person belongs to, otherwise it should be null.
parentCompanyId
integer
If the type of contact is company then this property represents the Id of the parent company of the contact, otherwise it should be null.
isActive
boolean
Whether or not the contact is active.
email
string
The email of the contact.
invoiceEmail
string
The invoice email of the contact.
phoneNumber
string
The phone number of the contact.
cellPhoneNumber
string
The cellphone number of the contact.
importantInformation
string
Important information about the contact to be highlighted.
isSupplier
boolean
Whether or not the contact is a supplier.
isWholeSale
boolean
Whether or not the contact is a wholesaler.
isRetailer
boolean
Whether or not the contact is a retailer.
isSubContractor
boolean
Whether or not the contact is a subcontractor.
isPartner
boolean
Whether or not the contact is a partner.
isCustomer
boolean
Whether or not the contact is a customer.
useReverseBuildTax
boolean
Whether or not the contact should be billed using reversed build tax.
responsibleId
required
integer
The Id of the user responsible for this contact.
tags
integer array
A list of Ids to tags that this contact should have.
visitingAddress
object
The contact's visiting address. For detailed description of properties, see address object.
deliveryAddress
object
The contact's delivery address. For detailed description of properties, see address object.
invoiceAddress
object
The contact's invoice address. For detailed description of properties, see address object.
Status codes
201 Created
Indicates a successful request.
The response body will be equal to the response from Get contact.
400 Bad Request
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Contacts
Request body
{ "name": "Lotta Larsson", "customerNumber": "111", "contactType": "Person", "organizationalOrSocialSecurityNumber": "860311-7063", "companyId": null, "parentCompanyId": null, "isActive": true, "email": "lotta@familjenlarsson.se", "invoiceEmail": "", "phoneNumber": "075-9902281", "cellPhoneNumber": "0707788994", "importantInformation": null, "isSupplier": false, "isWholeSale": false, "isRetailer": false, "isSubContractor": false, "isPartner": false, "isCustomer": false, "useReverseBuildTax": false, "responsibleId": 15, "tagIds": [ 10, 16 ], "visitingAddress": { "streetAddress": "Solberga", "additionalAddress": null, "postalCode": "92372", "city": null, "state": null, "countryId": 1, }, "deliveryAddress": { "streetAddress": "", "additionalAddress": null, "postalCode": "", "city": null, "state": null, "countryId": 1, }, "invoiceAddress": { "streetAddress": "", "additionalAddress": "", "postalCode": "", "city": null, "state": null, "countryId": 1, } }

Update contact

Updates an existing contact.

Required permissions
Contact_Write
Parameters
id
required
integer
The id of the contact.
Contact update properties
name
required
string
The name of the contact.
customerNumber
string
The customer number of the contact. If not provided, the API will assign a customer number for this contact.
contactType
required
string
The type of contact. May be either person or company.
organizationalOrSocialSecurityNumber
string
If the type of contact is person then this property represents a social security number, otherwise it represents a company's organizational number.
companyId
integer
If the type of contact is person then this property represents the Id of the company that the person belongs to, otherwise it should be null.
parentCompanyId
integer
If the type of contact is company then this property represents the Id of the parent company of the contact, otherwise it should be null.
isActive
boolean
Whether or not the contact is active.
email
string
The email of the contact.
invoiceEmail
string
The invoice email of the contact.
phoneNumber
string
The phone number of the contact.
cellPhoneNumber
string
The cellphone number of the contact.
importantInformation
string
Important information about the contact to be highlighted.
isSupplier
boolean
Whether or not the contact is a supplier.
isWholeSale
boolean
Whether or not the contact is a wholesaler.
isRetailer
boolean
Whether or not the contact is a retailer.
isSubContractor
boolean
Whether or not the contact is a subcontractor.
isPartner
boolean
Whether or not the contact is a partner.
isCustomer
boolean
Whether or not the contact is a customer.
useReverseBuildTax
boolean
Whether or not the contact should be billed using reversed build tax.
responsibleId
required
integer
The Id of the user responsible for this contact.
tags
integer array
A list of Ids to tags that this contact should have.
visitingAddress
object
The contact's visiting address. For detailed description of properties, see address object.
deliveryAddress
object
The contact's delivery address. For detailed description of properties, see address object.
invoiceAddress
object
The contact's invoice address. For detailed description of properties, see address object.
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Contacts/:id
Example request
PUT /v1/Core/Contacts/32
Request body
{ "name": "Lotta Larsson", "customerNumber": "111", "contactType": "Person", "organizationalOrSocialSecurityNumber": "860311-7063", "companyId": null, "parentCompanyId": null, "isActive": true, "email": "lotta@familjenlarsson.se", "invoiceEmail": "", "phoneNumber": "075-9902281", "cellPhoneNumber": "0707788994", "importantInformation": null, "isSupplier": false, "isWholeSale": false, "isRetailer": false, "isSubContractor": false, "isPartner": false, "isCustomer": false, "useReverseBuildTax": false, "responsibleId": 15, "tagIds": [ 10, 16 ], "visitingAddress": { "streetAddress": "Solberga", "additionalAddress": null, "postalCode": "92372", "city": null, "state": null, "countryId": 1, }, "deliveryAddress": { "streetAddress": "", "additionalAddress": null, "postalCode": "", "city": null, "state": null, "countryId": 1, }, "invoiceAddress": { "streetAddress": "", "additionalAddress": "", "postalCode": "", "city": null, "state": null, "countryId": 1, } }

Delete contact

Deletes an existing contact.

Required permissions
Contact_Write
Parameters
id
required
integer
The id of the contact.
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code will be produced when the resource could not be found or if the resource could not be deleted for some reason.
DELETE /v1/Core/Contacts/:id
Example request
DELETE /v1/Core/Contacts/32

Invoices

Available operations to the registry of invoices are listed to the right.

List invoices

Gets a list of invoices.

Required permissions
Invoice_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate invoiceDate customer sum sentToEconomySystem
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.customerId
integer
The customer id to filter by.
filter.createdSince
datetime
The created since date to filter by.
filter.sinceId
integer
List invoices greater than a given id.
Response object
objectName
string
The name of the object.
createdDate
required
datetime utc
id
required
integer
invoiceDate
required
datetime
customer
object
fromDate
datetime
sum
required
decimal
sentToEconomySystem
datetime utc
toDate
datetime
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/core/invoices
Example request
GET /v1/core/invoices?page=1&filter.sinceId=41
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "invoice.list", "createdDate": "2024-12-07T10:47:38.3826267+00:00", "id": 42, "invoiceDate": "2024-12-07 10:47:38", "customer": { "objectName": "generic.name_id", "id": 123, "name": "Toyota" }, "fromDate": "2024-12-07", "sum": 1200.50, "sentToEconomySystem": "2024-12-07T10:47:38.3826278+00:00", "toDate": "2024-12-07" } ] }

Get invoice

Gets a single invoice.

Required permissions
Invoice_Read
Request parameter
id
required
integer
Response object
objectName
string
The name of the object.
id
required
integer
archived
required
boolean
cadastral
string
createdDate
required
datetime utc
customer
object
economySystemInvoiceNumber
string
fromDate
required
datetime
invoiceDate
required
datetime
invoiceText
string
invoiceReference
string
maxTaxReduction
decimal
ourReference
string
rotRutText
string
sentToEconomySystem
datetime utc
sum
decimal
taxReductionAmountInPercent
decimal
taxReductionMethod
string
tenantOrganisationalNumber
string
toDate
required
datetime
rows
object
taxReductions
object
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/core/invoices/:id
Example request
GET /v1/core/invoices/42
Example request
{ "objectName": "invoice.detail", "id": 42, "archived": false, "cadastral": "BRF-123", "createdDate": "2024-12-07T10:47:38.3828826+00:00", "customer": { "objectName": "generic.name_id", "id": 92, "name": "Söderåsens BRF" }, "economySystemInvoiceNumber": "88-88", "fromDate": "2024-12-07 10:47:38", "invoiceDate": "2024-12-07 10:47:38", "invoiceText": "Rent", "invoiceReference": "Mr. Bean", "maxTaxReduction": 10.00, "ourReference": "Sr. Rodriguez", "rotRutText": "Rot", "sentToEconomySystem": "2024-12-07T10:47:38.382883+00:00", "sum": 7800.00, "taxReductionAmountInPercent": 10.00, "taxReductionMethod": "Rut", "tenantOrganisationalNumber": "123456-7890", "toDate": "2024-12-07 10:47:38", "rows": [ { "objectName": "invoice.row", "id": 1, "article": "Article #4", "articleNumber": "4", "bookingProjectNumber": "1234", "costCenter": { "objectName": "costcenter.name_id", "id": 1, "name": "Cost center 1", "code": "CC1" }, "comment": "It's a comment", "dateStr": "2024-12-07", "discount": 10.00, "header1": "Header 1", "header2": "Header 2", "header3": "Header 3", "header4": "Header 4", "header5": "Header 5", "header6": "Header 6", "header7": "Header 7", "header8": "Header 8", "header9": "Header 9", "houseWorkType": { "objectName": "generic.name_id", "id": 1, "name": "Garden work" }, "indentLevel": 0, "isHeader": false, "isSumRow": false, "sortOrder": 1, "rate": 100.00, "sum": 7500.00, "type": "None", "vatCode": { "objectName": "generic.name_id", "id": 1, "name": "VAT code 1" }, "value": 75.00, "workOrderId": 755, "unit": "m2" } ], "taxReductions": [ { "objectName": "invoice.taxreduction", "id": 1, "name": "Rut", "socialSecurityNumber": "123456-7890", "taxReducation": 10.00 } ] }

Set SentToEconomySystem

Sets the requested date value to the field SentToEconomySystem.

Required permissions
Invoice_Write
Request parameter
id
required
integer
The id of the invoice the field belongs to.
date
required
date
The date to be set, formatted yyyy-MM-dd.
Status codes
204 NO CONTENT
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PATCH /v1/core/invoices/:id/senttoeconomysystem/:date
Example request
PATCH /v1/core/invoices/42/senttoeconomysystem?date=2025-01-01

Logs

Available operations to the registry of logs are listed to the right.

List logs

Gets a list of logs.

Required permissions
Log_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.logType
string
Matches logs of a specific type. Valid values are: project_All project_Created project_Updated project_Added_Note project_Deleted project_Mentioned project_Changed_Status project_Updated_StartDate project_Updated_EndDate project_Removed_StartDate project_Removed_EndDate
filter.createdDateFrom
datetime utc
Filter logs where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filter logs where the created date is less than or equal to this date.
filter.projectId
integer
Filter logs for a specific project.
Response object
objectName
required
string
The name of the object.
id
required
integer
The unique identifier of this log.
text
string
The text of the log.
note
string
A user-written note that belongs to this log, if any.
logType
required
string
The type of log. (See definitions above)
entity
required
object
The entity that this log belongs to.
createdBy
object
The user that created this log.
createdDate
required
datetime utc
The date and time of which this log was created.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Logs
Example request
GET /v1/Core/Logs?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 2, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "log.list", "id": 1, "text": "Changed status to Finished", "note": null, "logType": "Project_Changed_Status", "entity": { "entityType": "Project", "objectName": "generic.name_id", "id": 24, "name": "My project" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-11-25 08:23:38 +00:00" }, { "objectName": "log.list", "id": 2, "text": null, "note": "@johndoe you're up!", "logType": "Project_Changed_Status", "entity": { "entityType": "Project", "objectName": "generic.name_id", "id": 24, "name": "My project" }, "createdBy": { "objectName": "generic.name_id", "id": 2, "name": "Jane Doe" }, "createdDate": "2024-11-22 05:59:38 +00:00" } ] }

Offers

Available operations to the offers are listed to the right.

List offers

Gets a list of offers.

Required permissions
Offer_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: title offerNumber createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.offerNumber
integer
Filters offers which have the specified offer number. (Offers can have many versions with the same offer number)
filter.createdDateFrom
datetime utc
Filters offers where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters offers where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters offers where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters offers where the updated date is less than or equal to this date.
filter.offerState
string
Matches offers which have a specific state. Valid values are: draft locked sentToCustomer openedByCustomer accepted acceptedSigned denied
filter.opportunityId
integer
Only list offers that belong to a certain opportunity.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this offer.
offerNumber
integer
The number of the offer. (All versions of an offer has the same offer number)
version
integer
The version of the offer.
title
string
The title of the offer.
offerValue
required
decimal
The total value of the offer.
hasPdf
required
boolean
Whether or not the offer has a pdf.
user
required
object
The user that is responsible for this offer.
customer
object
The customer that the offer is for.
opportunity
object
The opportunity that this offer is for.
offerState
string
The state that the offer is in. Valid values are: draft locked sentToCustomer openedByCustomer accepted acceptedSigned denied
updatedDate
datetime utc
The date and time of which the offer was updated.
updatedByUser
object
The user that updated this offer.
createdDate
required
datetime utc
The date and time of which the offer was created.
createdByUser
object
The user that created this offer.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Offers
Example request
GET /v1/Core/Offers?page=1&sortBy=CreatedDate&sortOrder=descending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "offer.list", "id": 1, "offerNumber": 1, "version": 1, "title": "Lorem Ipsum", "offerValue": 10000.0, "hasPdf": true, "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "opportunity": null, "offerState": "SentToCustomer", "updatedDate": "2024-12-07 10:47:38 +00:00", "updatedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-07 10:47:38 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" } } ] }

Download offer

Downloads the pdf version of the offer.

Required permissions
Offer_Read
Request parameters
offerId
required
integer
The id of the offer to download.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the offer could not be found or if the pdf has not been created yet.
GET /v1/Core/Offers/:offerId/Download
Example request
GET /v1/Core/Offers/1/Download

Opportunities

List opportunities

Gets a list of opportunities.

Required permissions
Opportunity_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: title createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
datetime utc
Filters opportunities where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters opportunities where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters opportunities where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters opportunities where the updated date is less than or equal to this date.
filter.closedDateFrom
datetime
Filters opportunities where the closed date is greater than or equal to this date.
filter.closedDateTo
datetime
Filters opportunities where the closed date is less than or equal to this date.
filter.estimatedClosingDateFrom
datetime
Filters opportunities where the estimated closing date is greater than or equal to this date.
filter.estimatedClosingDateTo
datetime
Filters opportunities where the estimated closing date is less than or equal to this date.
filter.hasOffers
boolean
Only list opportunities that has any offers.
filter.opportunityStatusIds
integer array
Only list opportunities that has any of the specified statuses.
filter.opportunityTagIds
integer array
Only list opportunities that has any of the specified tags.
filter.opportunityState
string
Matches opportunities which have a specific state. Valid values are: open won lost
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this opportunity.
title
string
The title of the opportunity.
turnover
decimal
The expected turnover.
hasOffers
required
boolean
Whether or not the opportunity has offers.
user
required
object
The user that is responsible for this opportunity.
customer
object
The customer that the opportunity is for.
contact
object
The contact on the customer for the opportunity.
opportunityState
string
The state that the opportunity is in. Valid values are: open won lost
closedDate
datetime
The date of which the opportunity was closed as lost or won.
estimatedClosingDate
datetime
The date of which the opportunity is estimated to be closed.
closedByUser
object
The user that closed this opportunity as lost or won.
status
object
The status that this opportunity has.
updatedDate
datetime utc
The date and time of which the opportunity was updated.
updatedByUser
object
The user that updated this opportunity.
createdDate
required
datetime utc
The date and time of which the opportunity was created.
createdByUser
object
The user that created this opportunity.
tags
object array
A list of tags.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Opportunities
Example request
GET /v1/Core/Opportunities?page=1&sortBy=CreatedDate&sortOrder=descending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "opportunity.list", "id": 1, "title": "Lorem Ipsum", "turnover": 100000.0, "hasOffers": true, "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "contact": null, "opportunityState": "Won", "closedDate": "2024-12-07", "estimatedClosingDate": null, "closedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "status": { "objectName": "generic.name_id", "id": 1, "name": "Lorem" }, "updatedDate": "2024-12-07 10:47:38 +00:00", "updatedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-07 10:47:38 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "tags": [ { "objectName": "generic.tag", "id": 1, "title": "Ipsum", "color": "#41b18b" } ] } ] }

Get opportunity

Gets a single opportunity.

Required permissions
Opportunity_Read
Request parameter
opportunityId
required
integer
The id of the opportunity.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this opportunity.
title
string
The title of the opportunity.
description
string
The description for the opportunity.
turnover
decimal
The expected turnover.
probability
decimal
The probability that this opportunity will be closed in percent.
hasOffers
required
boolean
Whether or not the opportunity has offers.
user
required
object
The user that is responsible for this opportunity.
customer
object
The customer that the opportunity is for.
contact
object
The contact on the customer for the opportunity.
estimatedClosingDate
datetime
The date of which the opportunity is estimated to be closed.
opportunityState
string
The state that the opportunity is in. Valid values are: open won lost
closedDate
datetime
The date of which the opportunity was closed as lost or won.
closedByUser
object
The user that closed this opportunity as lost or won.
project
object
The project created from this opportunity.
status
object
The status that this opportunity has.
updatedDate
datetime utc
The date and time of which the opportunity was updated.
updatedByUser
object
The user that updated this opportunity.
createdDate
required
datetime utc
The date and time of which the opportunity was created.
createdByUser
object
The user that created this opportunity.
tags
object array
A list of tags.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Opportunities/:opportunityId
Example request
GET /v1/Core/Opportunities/1
Response
{ "objectName": "opportunity.detail", "id": 1, "title": "Lorem Ipsum", "description": null, "turnover": 100000.0, "probability": null, "hasOffers": true, "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "contact": null, "estimatedClosingDate": null, "opportunityState": null, "closedDate": "2024-12-07", "closedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "project": null, "status": { "objectName": "generic.name_id", "id": 1, "name": "Lorem" }, "updatedDate": "2024-12-07 10:47:38 +00:00", "updatedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-07 10:47:38 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "tags": [ { "objectName": "generic.tag", "id": 1, "title": "Ipsum", "color": "#41b18b" } ] }

Create opportunity

Create new opportunity.

Required permissions
Opportunity_Write
Request object
customerId
required
integer
The customer that the opportunity is for
title
required
string
The title of the opportunity.
statusId
required
integer
The status id of the opportunity.
turnover
decimal
The expected turnover.
estimatedClosingDate
datetime
The estimated date that the opportunity will be closed.
description
string
The description for the opportunity.
userId
required
integer
The user that is responsible for this opportunity.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this opportunity.
customerId
required
integer
The customer id that the opportunity is for.
title
required
string
The title of the opportunity.
statusId
required
integer
The status id of the opportunity.
turnover
decimal
The expected turnover.
estimatedClosingDate
datetime
The estimated date that the opportunity will be closed.
description
string
The description for the opportunity.
userId
required
integer
The user id that is responsible for the customer.
createdDate
required
datetime utc
The date and time of which the opportunity was created.
createdById
required
integer
The creator's id.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Opportunities
Example request
{ "customerId": 153, "title": "Opportunity 1", "statusId": 60, "turnover": 10.0, "estimatedClosingDate": "2025-02-07 10:47:38", "description": "Description 001", "userId": 70 }
Example response
{ "objectName": "opportunity.projection", "id": 42, "customerId": 153, "title": "Opportunity 1", "statusId": 60, "turnover": 10.0, "estimatedClosingDate": "2025-02-07", "description": "Description 001", "userId": 70, "createdDate": "2024-12-07 10:47:38 +00:00", "createdById": 32 }

Update opportunity

Updates an existing opportunity.

Required permissions
Opportunity_Write
Request object
title
required
string
The name of the opportunity.
description
string
The description for the opportunity
userId
required
integer
The user that is responsible for this opportunity
customerId
integer
The customer that the opportunity is for
contactId
integer
The contact on the customer for the opportunity.
turnover
decimal
The expected turnover.
estimatedClosingDate
datetime
The estimated date that the opportunity will be closed.
probability
required
integer
The probability that the opportunity will be closed.
tagIds
integer array
A list of tags that the opportunity should have.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Opportunities/:opportunityId
Example request
{ "title": "My opportunity", "description": "A very descriptive text about this opportunity", "userId": 15, "customerId": 3, "contactId": null, "turnover": 1000.5, "estimatedClosingDate": null, "probability": 80, "tagIds": [ 1, 5, 12 ] }

Project collections

Available operations to the registry of project collections are listed to the right.

List project collections

Gets a list of project collections.

Required permissions
ProjectCollection_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name projectNumber
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the project collection.
name
string
The name of the project collection (ProjectNumber + Title).
title
string
The title of the project collection.
projectNumber
string
The project number of the project collection.
description
string
The description of the project collection.
status
object
The status of the project collection.
type
string
The type of the project collection. Valid values are: normal absence internal
category
object
The category of the project collection.
manager
object
The manager of the project collection.
customer
object
The customer of the project collection.
finishedDate
datetime
The finished date if the project collection is finished.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/ProjectCollections
Example request
GET /v1/Core/ProjectCollections?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "projectcollection.list", "id": 1, "name": "26 Lorem ipsum", "title": "Lorem ipsum", "projectNumber": "26", "description": "Lorem ipsum dolor sit amit.", "status": { "objectName": "projectcollection.list.status", "id": 1, "name": "Ongoing", "isCompletedStatus": false }, "type": "Normal", "category": { "objectName": "projectcollection.list.category", "name": "Category 1", "color": "Green" }, "manager": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "finishedDate": "2021-02-01" } ] }

Get next project number in collection

Gets the next project number in the selected project collection.

Required permissions
ProjectCollection_Read
Parameters
id
required
integer
The id of the project collection.
Response object
nextProjectNumberInCollection
string
The next project number in the specified project collection.
GET /v1/Core/ProjectCollections/:id/nextProjectNumber
Example request
GET /v1/Core/ProjectCollections/123/nextProjectNumber
Response
{ "nextProjectNumberInCollection": "P001-001" }
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code will be produced if the contact could not be found.

Get project collection

Gets a single project collection.

Required permissions
ProjectCollection_Read
Request parameter
id
required
integer
The id of the project collection.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the project collection.
name
string
The name of the project collection (ProjectNumber + Title).
title
string
The title of the project collection.
projectNumber
string
The project number of the project collection.
description
string
The description of the project collection.
status
object
The status of the project collection.
type
string
The type of the project collection. Valid values are: normal absence internal
category
object
The category of the project collection.
manager
object
The manager of the project collection.
customer
object
The customer of the project collection.
finishedDate
datetime
The finished date if the project collection is finished.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/core/projectcollections/:id
Example request
GET /v1/core/projectcollections/42
Example request
{ "objectName": "projectcollection.list", "id": 42, "name": "42 Lorem ipsum", "title": "Lorem ipsum", "projectNumber": "42", "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit", "status": { "objectName": "projectcollection.list.status", "id": 1, "name": "Active", "isCompletedStatus": false }, "type": "Normal", "category": { "objectName": "projectcollection.list.category", "name": "Category 1", "color": "Red" }, "manager": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "ACME Inc." }, "finishedDate": "2024-12-07" }

Projects

List projects

Gets a list of projects.

Required permissions
Project_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: orderNumber title createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
datetime utc
Filters projects where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters projects where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters projects where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters projects where the updated date is less than or equal to this date.
filter.query
string
Filters articles by project number, name, customer name, project number and project name.
filter.projectTagIds
integer array
Only list projects that has any of the specified project tags.
filter.projectCategoryIds
integer array
Only list projects that has any of the specified project category.
filter.projectStatusIds
integer array
Only list projects that has any of the specified project statuses.
filter.projectType
string
Matches projects which are of a specific type. Valid values are: ongoing fixedPrice none
Response object
objectName
string
The name of the object.
id
required
integer
The id of the project.
orderNumber
string
The order number of the project.
title
string
The title of the project.
status
object
The status of the project.
category
object
The category of the project.
salesResponsible
object
The sales person responsible for the project.
startDate
datetime
The date of which the projects starts.
endDate
datetime
The date of which the projects ends.
invoiceType
string
The type of invoicing used for this project. Valid values are: ongoing fixedPrice none
location
object
The location of the project.
projectManager
object
The user that is responsible for this project.
customer
object
The customer that this project is connected to.
projectCollection
object
The project collection that this project is connected to.
tags
object array
A list of tags.
costCenter
object
The cost center that this project is connected to, if any
createdBy
object
The user that created this project.
updatedBy
object
The user that last updated this project, if any.
created
datetime utc
The date and time of which this project was created.
updated
datetime utc
The date and time of which this project was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Projects
Example request
GET /v1/Core/Projects?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "project.list", "id": 1, "orderNumber": "26", "title": "Lorem ipsum", "status": { "objectName": "project.list.status", "id": 1, "name": "Ongoing", "isCompletedStatus": false }, "category": { "objectName": "project.list.category", "id": 1, "name": "Lorem ipsum", "color": "#e3168a" }, "salesResponsible": null, "startDate": "2021-02-01", "endDate": "2022-02-15", "invoiceType": "Ongoing", "location": { "objectName": "project.list.location", "longitude": 21.48181104660036, "latitude": 65.3175658912035, "streetAddress": "Some street 123", "postalCode": "94100", "city": "Washington", "countryName": "USA" }, "projectManager": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "projectCollection": { "objectName": "projectcollection.name_id", "id": 14, "name": "Dolar sit amet", "number": "P012" }, "tags": [ { "objectName": "generic.tag", "id": 1, "title": "Ipsum", "color": "#41b18b" } ], "costCenter": { "objectName": "costcenter.name_id", "id": 123, "name": "Cost Center 123", "code": "CC123" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2024-11-22 10:47:38 +00:00", "updated": null } ] }

Get project

Gets a single project.

Required permissions
Project_Read
Request parameter
id
required
integer
The id of the project.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the project.
orderNumber
string
The order number of the project.
title
string
The title of the project.
status
object
The status of the project.
category
object
The category of the project.
salesResponsible
object
The sales person responsible for the project.
startDate
datetime
The date of which the projects starts.
endDate
datetime
The date of which the projects ends.
invoiceType
string
The type of invoicing used for this project. Valid values are: ongoing fixedPrice none
location
object
The location of the project.
projectManager
object
The user that is responsible for this project.
customer
object
The customer that this project is connected to.
projectCollection
object
The project collection that this project is connected to.
tags
object array
A list of tags.
costCenter
object
The cost center that this project is connected to, if any
createdBy
object
The user that created this project.
updatedBy
object
The user that last updated this project, if any.
created
datetime utc
The date and time of which this project was created.
updated
datetime utc
The date and time of which this project was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/Core/Projects/:id
Example request
GET /v1/Core/Project/:42
Response
{ "objectName": "project.list", "id": 42, "orderNumber": "26", "title": "Lorem ipsum", "status": { "objectName": "project.list.status", "id": 1, "name": "Ongoing", "isCompletedStatus": false }, "category": { "objectName": "project.list.category", "id": 1, "name": "Lorem ipsum", "color": "#e3168a" }, "salesResponsible": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "startDate": "2021-02-01", "endDate": "2022-02-15", "invoiceType": "Ongoing", "location": { "objectName": "project.list.location", "longitude": 21.48181104660036, "latitude": 65.3175658912035, "streetAddress": "Some street 123", "postalCode": "94100", "city": "Washington", "countryName": "USA" }, "projectManager": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "customer": { "objectName": "generic.name_id", "id": 1, "name": "Ipsum" }, "projectCollection": { "objectName": "projectcollection.name_id", "id": 14, "name": "Dolar sit amet", "number": "P012" }, "tags": [ { "objectName": "generic.tag", "id": 1, "title": "Ipsum", "color": "#41b18b", "internalColorId": 1 } ], "costCenter": { "objectName": "costcenter.name_id", "id": 123, "name": "Cost Center 123", "code": "CC123" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2024-11-22 10:47:38 +00:00", "updated": null }

Create project

Creates a new project.

The created project will not have a booking project, meaning this will have to be added manually after the project is created.

All projects are created with the invoice method set to "Ongoing". This can also be altered after creation.

Required permissions
Project_Write
Request object
projectNumber
string
The project number.
title
required
string
The title of the project.
description
string
A description of the project.
contactId
required
integer
The id of the contact for whom the project is carried out.
responsibleId
required
integer
The id of the person responsible for the project.
statusId
integer
The status id specifying the status of the project. If set to null this will default to the standard status id of the account.
projectCollectionId
integer
A project collection id that the project should be a part of.
startDate
datetime utc
The project start date.
endDate
datetime utc
The project end date. Has to be after the start date.
workSiteAddress
object
An address for the project.
categoryId
integer
A category id for the project.
costCenterId
integer
The cost center where the project should be recorded.
invoiceText
string
Text that should be added as a complement to the invoice.
yourReference
string
Your reference, for example the name of the client.
ourReference
string
Our reference, for example the name of the project manager.
customerReferenceMarking
string
Customer reference marking, used for accounting purposes.
allIsMember
boolean
Whether or not all members of your organization should be part of the project, or just the responsible person specified. Default is false.
Status codes
201 CREATED
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Projects
Example request
{ "projectNumber": "P-123", "title": "Lorem projectum", "description": "A nice description", "contactId": 1, "responsibleId": 1, "statusId": null, "projectCollectionId": null, "startDate": "2023-01-01T00:00:00+00:00", "endDate": "2023-12-31T00:00:00+00:00", "workSiteAddress": { "streetAddress": "Street 1", "postalCode": "12345", "city": "Town" }, "categoryId": null, "costCenterId": null, "invoiceText": "Text here", "yourReference": "Ref", "ourReference": "Ref", "customerReferenceMarking": "Ref", "allIsMember": false }
Response
{ "id": 1, "nextProjectNumber": "P-124" }

Update project

Updates an existing project.

Required permissions
Project_Write
Request parameter
projectId
required
integer
The id of the project.
Request object
id
required
integer
The id of the project.
title
required
string
The title of the project.
projectCollectionId
integer
The project collection id that this project should belong to.
startDate
datetime utc
This projects start date.
endDate
datetime utc
This projects end date. Has to be after StartDate.
tagIds
integer array
A list of tags that the project should have.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Projects/:projectId
Example request
PUT /v1/Core/Projects/32
Response
{ "id": 32, "messages": [ "Message one", "Error message" ] }

Get next project number

Gets the next suggested project number.

Required permissions
Project_Read
Response object
nextProjectNumber
string
The next suggested project number.
GET /v1/Core/Projects/nextProjectNumber
Example request
GET /v1/Core/Projects/nextProjectNumber
Response
{ "nextProjectNumber": "001" }
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code will be produced if the option to suggest next project number is not enabled in the admin settings.

List project comments

Gets a list of comments for a specific project.

Required permissions
Project_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdFrom
datetime
Only list project comments where created date is greater than or equal to this parameter.
filter.createdTo
datetime
Only list project comments where created date is less than or equal to this parameter.
filter.createdByUserIds
integer array
Only list project comments that has been created by any of the specified users.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the project comment.
text
string
The text of the project comment.
createdByUser
object
The user that created this project comment.
updatedByUser
object
The user that last updated this project comment, if any.
createdDate
string
The date and time of which this project comment was created.
updatedDate
string
The date and time of which this project comment was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/Projects/:projectId/Comments
Example request
GET /v1/Core/Projects/1/Comments?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "project.comment.list", "id": 1, "text": "Lorem ipsum dolar sit amet", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null } ] }

Create project comment

Creates a new project comment.

Required permissions
Project_Write
Request parameters
projectId
required
integer
The id of the project of which to add the comment.
Request object
text
required
string
The text of the comment.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Projects/:projectId/Comments
Example request
{ "text": "Lorem ipsum dolar sit amet." }

Update project comment

Updates an existing project comment.

Required permissions
Project_Write
Request parameters
projectId
required
integer
The id of the project of which the comment belongs to.
commentId
required
integer
The id of the project comment to update.
Request object
text
required
string
The text of the comment.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Projects/:projectId/Comments/:commentId
Example request
{ "text": "Lorem ipsum dolar sit amet." }

Delete project comment

Deletes the specified project comment.

Required permissions
Project_Write
Request parameters
projectId
required
integer
The id of the project of which the comment belongs to.
commentId
required
integer
The id of the project comment to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced when the resource could not be found or if the resource could not be deleted for some reason.
DELETE /v1/Core/Projects/:projectId/Comments/:commentId
Example request
DELETE /v1/Core/Projects/1/Comments/1

Get project time calculation

Gets a time calculation for a specific project.

Required permissions
Project_Read
Request parameters
projectId
required
integer
The id of the project of which the time calculation belongs to.
Response object
objectName
string
The name of the object.
total
decimal
Total amount of hours in calculation.
isTotal
required
boolean
Whether or not calculation type is total.
isByActivity
required
boolean
Whether or not the calculation is divided between activities.
isByActivityAndUser
required
boolean
Whether or not the calculation is divided between activities per user.
activityCalculations
object
Time calculations divided by activities, if any.
userActivityCalculations
object
Time calculations divided by activities per user, if any.
Status codes
200 OK
Indicates a succesful request.
400 BAD REQUEST
Indicates a client error.
GET /v1/Core/Projects/:projectId/TimeCalculation
Example request
GET /v1/Core/Projects/1/TimeCalculation
Response
{ "objectName": "project.calculation.detail", "total": 50.0, "isTotal": false, "isByActivity": true, "isByActivityAndUser": false, "activityCalculations": [ { "objectName": "project.calculation.byactivity", "activity": { "objectName": "generic.name_id", "id": 1, "name": "Activity 1" }, "calculation": 8.0 }, { "objectName": "project.calculation.byactivity", "activity": { "objectName": "generic.name_id", "id": 2, "name": "Activity 2" }, "calculation": 26.0 }, { "objectName": "project.calculation.byactivity", "activity": { "objectName": "generic.name_id", "id": 3, "name": "Activity 3" }, "calculation": 16.0 } ], "userActivityCalculations": null }

Task boards

Available operations to the registry of task boards are listed to the right.

List task boards

Gets a list of task boards.

Required permissions
Task_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate updatedDate name
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.query
string
Filter boards by text query.
filter.projectIds
integer array
Only list boards that are connected to the specified projects.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the board
name
string
The name of the board
project
object
The project that the board is connected to, if any.
tags
object array
All the tags that can be assigned to tasks in this task board.
columns
object array
All the columns of the board.
members
object array
All the members of the board.
createdByUser
object
The user that created this board.
updatedByUser
object
The user that last updated this board, if any.
createdDate
string
The date and time of which this board was created.
updatedDate
string
The date and time of which this board was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/TaskBoards
Example request
GET /v1/Core/TaskBoards?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "taskboard.list", "id": 1, "name": "Sprint 2.8", "project": { "objectName": "project.name_id", "id": 15, "name": "Utvecklingsprojektet", "number": "26" }, "tags": [ { "objectName": "generic.tag", "id": 1, "title": null, "color": "#41b18b" }, { "objectName": "generic.tag", "id": 2, "title": "Bug", "color": "#f2d600" } ], "columns": [ { "objectName": "taskboard.list.column", "id": 1, "name": "Ska göras", "taskCount": 21, "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-11-28 10:47:38 +00:00", "updatedDate": null }, { "objectName": "taskboard.list.column", "id": 2, "name": "Pågår", "taskCount": 7, "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-11-30 10:47:38 +00:00", "updatedDate": null }, { "objectName": "taskboard.list.column", "id": 1, "name": "Klart", "taskCount": 234, "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-11-29 10:47:38 +00:00", "updatedDate": null } ], "members": [ { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, { "objectName": "generic.name_id", "id": 2, "name": "Jane Doe" } ], "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-11-27 10:47:38 +00:00", "updatedDate": null } ] }

Tasks

List tasks

Gets a list of tasks.

Required permissions
Task_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate title startDate endDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.from
datetime
Only list tasks that has a start date and where that start date is greater or equal to this parameter.
filter.to
datetime
Only list tasks that has a end date and where that end date is less than or equal to this parameter.
filter.memberIds
integer array
Only list tasks that has any of the specified members.
filter.createdByUserIds
integer array
Only list tasks that has been created by any of the specified users.
filter.taskIds
integer array
Only list the specified tasks.
filter.taskBoardId
integer
Only list tasks that belong to a certain task board. A special value of '-1' will list tasks that doesn't belong to a task board.
filter.taskBoardColumnId
integer
Only list tasks that belong to a certain task board column.
filter.projectId
integer
Only list tasks that belong to a certain project.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the task.
title
string
The name of the task.
description
string
The description of the task.
completedDate
datetime utc
The date and time of which this task was completed, if any.
timeReportingEnabled
required
boolean
Whether or not time reporting is enabled on this task.
estimate
decimal
The estimated amount of hours to get this task done.
startDate
string
The date and time of which this task starts, if any.
startTime
string
endDate
string
The date and time of which this task ends, if any.
endTime
string
numberOfComments
required
integer
The total number of comments made on this task.
numberOfAttachments
required
integer
The total number of attachments uploaded to this task
numberOfChecklistPoints
required
integer
The total number of checklist items that this task has.
tags
object array
A list of tags.
members
object array
A list of members.
boardColumn
object
The board column that this task belongs to, if any.
board
object
The board that this task belongs to, if any.
project
object
The project that this task is connected to, if any.
projectCollection
object
The project collection that this task is connected to, if any.
opportunity
object
The opportunity that this task is connected to, if any.
createdByUser
object
The user that created this task.
createdDate
string
The date and time of which this task was created.
updatedDate
string
The date and time of which this task was last updated, if any.
archivedDate
datetime utc
The date and time of which this task was archived, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/Tasks
Example request
GET /v1/Core/Tasks?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "task.list", "id": 1, "title": "Uppgift 1", "description": "En beskrivning om vad som denna uppgift handlar om.", "completedDate": null, "timeReportingEnabled": true, "estimate": 10.5, "startDate": null, "startTime": null, "endDate": null, "endTime": null, "numberOfComments": 5, "numberOfAttachments": 3, "numberOfChecklistPoints": 14, "tags": [ { "objectName": "generic.tag", "id": 1, "title": "2.8", "color": "#41b18b" }, { "objectName": "generic.tag", "id": 2, "title": "GUI", "color": "#41b18b" } ], "members": [ { "objectName": "task.member", "userId": 1, "userName": "John Doe" }, { "objectName": "task.member", "userId": 2, "userName": "Jane Doe" } ], "boardColumn": { "objectName": "generic.name_id", "id": 1, "name": "Att göra" }, "board": { "objectName": "generic.name_id", "id": 1, "name": "Sprint 2.8" }, "project": { "objectName": "project.name_id", "id": 15, "name": "Utvecklingsprojektet", "number": "26" }, "projectCollection": null, "opportunity": null, "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-04 10:47:38 +00:00", "updatedDate": null, "archivedDate": null } ] }

Create task

Creates a new task.

Required permissions
Task_Write
Request object
title
required
string
The name of the task.
description
string
A description of the task.
isCompleted
boolean
Whether or not the task is completed.
timeReportingEnabled
boolean
Whether or not the time can be reported on this task.
estimate
decimal
The estimated amount of hours to get this task done.
startDate
datetime utc
The date and time of which this task starts, if any.
endDate
datetime utc
The date and time of which this task ends, if any.
tagIds
integer array
A list of tags that the task should have.
memberIds
integer array
A list of members that the task should have.
taskBoardColumnId
integer
The id of the task board column that the task should belong to.
projectId
integer
The id of the project that the task should be connected to.
isArchived
boolean
Whether or not the task should be archived.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Tasks
Example request
{ "title": "My task", "description": "A very descriptive text about this task", "isCompleted": false, "timeReportingEnabled": true, "estimate": 26.5, "startDate": "2024-12-17T10:47:38.3902896+00:00", "endDate": null, "tagIds": [ 1, 5, 12 ], "memberIds": [ 1, 2 ], "taskBoardColumnId": 1, "projectId": 15, "isArchived": false }

Update task

Updates an existing task.

Required permissions
Task_Write
Request object
title
required
string
The name of the task.
description
string
A description of the task.
isCompleted
boolean
Whether or not the task is completed.
timeReportingEnabled
boolean
Whether or not the time can be reported on this task.
estimate
decimal
The estimated amount of hours to get this task done.
startDate
datetime utc
The date and time of which this task starts, if any.
endDate
datetime utc
The date and time of which this task ends, if any.
tagIds
integer array
A list of tags that the task should have.
memberIds
integer array
A list of members that the task should have.
taskBoardColumnId
integer
The id of the task board column that the task should belong to.
projectId
integer
The id of the project that the task should be connected to.
isArchived
boolean
Whether or not the task should be archived.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Tasks/:taskId
Example request
{ "title": "My task", "description": "A very descriptive text about this task", "isCompleted": false, "timeReportingEnabled": true, "estimate": 26.5, "startDate": "2024-12-17T10:47:38.3904669+00:00", "endDate": null, "tagIds": [ 1, 5, 12 ], "memberIds": [ 1, 2 ], "taskBoardColumnId": 1, "projectId": 15, "isArchived": false }

Delete task

Deletes the specified task.

Required permissions
Task_Write
Request parameters
id
required
integer
The id of the task to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the task could not be found or if the task has time reported.
DELETE /v1/Core/Tasks/:id
Example request
DELETE /v1/Core/Tasks/1

List task comments

Gets a list of comments for a specific task.

Required permissions
Task_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: createdDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the comment.
text
string
The text of the comment.
createdByUser
object
The user that created this comment.
updatedByUser
object
The user that last updated this comment, if any.
createdDate
string
The date and time of which this comment was created.
updatedDate
string
The date and time of which this comment was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/Tasks/:taskId/Comments
Example request
GET /v1/Core/Tasks/1/Comments?page=1&sortorder=descending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "task.comment.list", "id": 1, "text": "Lorem ipsum dolar sit amet", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedByUser": null, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null } ] }

Create task comment

Creates a new task comment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which to add the comment.
Request object
text
required
string
The text of the comment.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Tasks/:taskId/Comments
Example request
{ "text": "Lorem ipsum dolar sit amet." }

Update task comment

Updates an existing task comment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the comment belongs to.
commentId
required
integer
The id of the task comment to update.
Request object
text
required
string
The text of the comment.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Tasks/:taskId/Comments/:commentId
Example request
{ "text": "Lorem ipsum dolar sit amet." }

Delete task comment

Deletes the specified task comment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the comment belongs to.
commentId
required
integer
The id of the task comment to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the task could not be found or if the task comment could not be found.
DELETE /v1/Core/Tasks/:taskId/Comments/:commentId
Example request
DELETE /v1/Core/Tasks/1/Comments/1

List task checklists

Gets a list of checklists for a specific task.

Required permissions
Task_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the checklist.
name
string
The name of the checklist.
items
object array
A list of checklist items.
createdByUser
object
The user that created the checklist.
createdDate
string
The date and time of which the checklist was created.
updatedDate
string
The date and time of which the checklist was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/Tasks/:taskId/Checklists
Example request
GET /v1/Core/Tasks/1/Checklists?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "task.checklist.list", "id": 1, "name": "Att göra", "items": [ { "objectName": "task.checklistitem.detail", "id": 1, "title": "Lorem ipsum 1", "sortOrder": 0, "completedDate": "2024-12-07 10:47:38 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null }, { "objectName": "task.checklistitem.detail", "id": 2, "title": "Lorem ipsum 1", "sortOrder": 1, "completedDate": "2024-12-07 10:47:38 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null } ], "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null } ] }

Create task checklist

Creates a new task checklist.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which to add the checklist.
Request object
name
required
string
The name of the checklist.
items
object array
A list of checklist items.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Tasks/:taskId/Checklists
Example request
{ "name": "Lorem ipsum", "items": [ { "name": "Lorem ipsum dolar", "isCompleted": true }, { "name": "Lorem ipsum dolar sit", "isCompleted": false }, { "name": "Lorem ipsum dolar sit amet", "isCompleted": false } ] }

Update task checklist

Updates an existing task checklist and its items.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the checklist belongs to.
checklistId
required
integer
The id of the task checklist to update.
Request object
name
required
string
The new name of the checklist.
items
object array
An updated list of items. Sortorder for existing items will not change. Existing items that are excluded from this list will be deleted.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Tasks/:taskId/Checklists/:checklistId
Example request
{ "name": "Lorem ipsum dolar", "items": [ { "id": 1, "name": "Existing item", "isCompleted": false }, { "id": null, "name": "New item", "isCompleted": false } ] }

Delete task checklist

Deletes the specified task checklist.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the checklist belongs to.
checklistId
required
integer
The id of the task checklist to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the task could not be found or if the task checklist could not be found.
DELETE /v1/Core/Tasks/:taskId/Checklists/:checklistId
Example request
DELETE /v1/Core/Tasks/1/Checklists/1

List task attachments

Gets a list of attachments for a specific task.

Required permissions
Task_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the attachment.
name
string
The name of the attachment.
type
string
The type of attachment. Can be either 'file' or 'link'.
contentType
string
Denotes the type of content if the attachment is a file.
sizeInBytes
integer
Denotes the size in bytes if the attachment is a file.
externalLinkUrl
string
A link to an external attachment. Will be null if type is file.
createdByUser
object
The user that created this attachment.
createdDate
datetime utc
The date and time of which this attachment was created.
updatedDate
datetime utc
The date and time of which this attachment was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/Tasks/:taskId/Attachments
Example request
GET /v1/Core/Tasks/1/Attachments?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 2, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "task.attachment.list", "id": 1, "name": "MyImage.png", "type": "file", "contentType": "image/png", "sizeInBytes": 12542, "externalLinkUrl": null, "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-05 10:47:38 +00:00", "updatedDate": null }, { "objectName": "task.attachment.list", "id": 2, "name": "Our external library", "type": "link", "contentType": null, "sizeInBytes": null, "externalLinkUrl": "https://example.com", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-06 10:47:38 +00:00", "updatedDate": null } ] }

Download task attachment

Downloads the specified attachment.

Required permissions
Task_Read
Request parameters
taskId
required
integer
The id of the task of which the attachment belongs to.
attachmentId
required
integer
The id of the task attachment to download.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the task could not be found or if the task attachment could not be found.
GET /v1/Core/Tasks/:taskId/Attachments/:attachmentId/Download
Example request
GET /v1/Core/Tasks/1/Attachments/1/Download

Create task attachment

Creates a new task attachment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which to add the attachment.
Request object
name
string
The name of the attachment.
externalUrl
string
The link to the external attachment (if the attachment type is link).
externalUrlType
string
The type of external attachment (if the attachment type is link). Valid values are: googleDrive dropbox oneDrive
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/Tasks/:taskId/Attachments
Request example
Content-Type: multipart/form-data; boundary=---------------------------41184676334 Content-Length: 29278 -----------------------------41184676334 Content-Disposition: form-data; name="name" My image -----------------------------41184676334 Content-Disposition: form-data; name="file"; filename="myimage.png" Content-Type: image/jpeg (Binary data not shown) -----------------------------41184676334--

Update task attachment

Updates an existing task attachment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the attachment belongs to.
attachmentId
required
integer
The id of the task attachment to update.
Request object
name
required
string
The new name of the attachment.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/Tasks/:taskId/Attachments/:attachmentId
Example request
{ "name": "My updated attachment" }

Delete task attachment

Deletes the specified task attachment.

Required permissions
Task_Write
Request parameters
taskId
required
integer
The id of the task of which the attachment belongs to.
attachmentId
required
integer
The id of the task attachment to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the task could not be found or if the task attachment could not be found.
DELETE /v1/Core/Tasks/:taskId/Attachments/:attachmentId
Example request
DELETE /v1/Core/Tasks/1/Attachments/1

Vacation requests

Available operations to the vacation requests are listed to the right.

List vacation requests

Gets a list of vacation requests.

Required permissions
VacationRequest_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: fromDate toDate createdDate updatedDate attestedDate deniedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
datetime utc
Filters vacation requests where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters vacation requests where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters vacation requests where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters vacation requests where the updated date is less than or equal to this date.
filter.fromDate
datetime utc
Filters vacation requests where the from date is greater than or equal to this date.
filter.toDate
datetime utc
Filters vacation requests where the to date is less than or equal to this date.
filter.userIds
integer array
Only list vacation requests that has any of the specified users.
filter.departmentIds
integer array
Only list vacation requests that has users in the specified departments.
filter.managerIds
integer array
Only list vacation requests that has any of the specified managers.
filter.absenceIds
integer array
Only list vacation requests that has any of the specified absence projects.
filter.vacationStatus
string
Matches vacation request which have a specific status. Valid values are: attested awaitingAttest denied
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier for this vacation request.
user
required
object
The user that this vacation request belongs to.
fromDate
required
datetime utc
The date vacation will start.
toDate
datetime utc
The date vacation will end.
hours
required
decimal
The number of hours.
description
string
The description from the user that sent the vacation request.
absenceProject
required
object
The absence project that this vacation request is connected to.
attestedDate
datetime utc
The date and time of which the vacation request was attested.
attestedByUser
object
The user that attested this vacation request.
deniedDate
datetime utc
The date and time of which the vacation request was denied.
deniedByUser
object
The user that denied this vacation request.
updatedDate
datetime utc
The date and time of which the vacation request was updated.
updatedByUser
object
The user that updated this vacation request.
createdDate
required
datetime utc
The date and time of which the vacation request was created.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/VacationRequests
Example request
GET /v1/Core/VacationRequests?page=1&pageSize=10&sortBy=fromDate&sortOrder=ascending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "vacationrequest.list", "id": 1, "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "fromDate": "2024-12-07", "toDate": "2024-12-08", "hours": 8.0, "description": null, "absenceProject": { "objectName": "generic.name_id", "id": 1, "name": "Semester" }, "attestedDate": "2024-12-07 10:47:38 +00:00", "attestedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "deniedDate": null, "deniedByUser": null, "updatedDate": "2024-12-07 10:47:38 +00:00", "updatedByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2024-12-07 10:47:38 +00:00" } ] }

Material reports

List material reports

Gets a list of material reports.

Required permissions
MaterialReport_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: sortOrder articleNumber title createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
datetime utc
Filters material reports where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters material reports where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters material reports where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters material reports where the updated date is less than or equal to this date.
filter.query
string
Filter material reports which article number or title contains the query.
filter.onlyText
boolean
Filter material reports that represents text only or not.
filter.onlyInvoiced
boolean
Filter material reports that invoiced only or not.
filter.projectId
integer
Filter material reports that belongs to a specific project.
filter.timeReportId
integer
Filter material reports that belongs to a specific time report.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier of this material report.
sortOrder
required
integer
The default position of the material report when creating an invoice specification.
articleNumber
string
The article number.
title
string
The title.
consumedUnits
decimal
The number of units consumed.
invoiceableUnits
decimal
The number of units to invoice.
unitText
string
The unit text.
costPerUnit
decimal
The cost per unit.
pricePerUnit
decimal
The price per unit excluding VAT.
discountPercentage
decimal
The discount in percent for the total amount.
vatPercentage
decimal
The VAT in percent.
totalAmount
decimal
The total amount excluding VAT.
toBeInvoiced
required
boolean
Whether or not the material report should be invoiced.
invoiceId
integer
The id of the invoice that contains this material report.
invoicedDate
datetime utc
The date that this material report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this material report.
timeReportId
integer
The id of the time report that this material report belongs to, if any.
isTextOnly
required
boolean
Whether or not the material report represents text only.
article
object
The article that this material report is connected to.
costCenter
object
The cost center that this material report is connected to.
bookingProject
object
The booking project that this material report is connected to.
project
required
object
The project that this material report belongs to.
createdDate
required
datetime utc
The date and time of which the material report was created.
createdBy
required
object
The user that created the material report.
updatedDate
datetime utc
The date and time of which the material report was last updated.
updatedBy
object
The user that last updated the material report.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/MaterialReports
Example request
GET /v1/Core/MaterialReports?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "materialreport.list", "id": 1, "sortOrder": 0, "articleNumber": "PP01", "title": "My article", "consumedUnits": 1.0, "invoiceableUnits": 2.0, "unitText": "pcs", "costPerUnit": 200.0, "pricePerUnit": 250.0, "discountPercentage": 10.0, "vatPercentage": 25.0, "totalAmount": 450.0, "toBeInvoiced": true, "invoiceId": 560, "invoicedDate": null, "invoiceDraftId": null, "timeReportId": null, "isTextOnly": false, "article": { "objectName": "generic.name_id", "id": 12, "name": "My article" }, "costCenter": { "objectName": "generic.name_id", "id": 1, "name": "IT Department" }, "bookingProject": { "objectName": "generic.name_id", "id": 1, "name": "BP 1" }, "project": { "objectName": "project.name_id", "id": 1, "name": "My project", "number": "123" }, "createdDate": "2024-11-22 08:23:38 +00:00", "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedDate": "2024-12-04 05:16:26 +00:00", "updatedBy": null } ] }

Get material report

Gets a single material report.

Required permissions
Project_Read
Request parameters
id
required
integer
The id of the material report to get.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier of this material report.
sortOrder
required
integer
The default position of the material report when creating an invoice specification.
articleNumber
string
The article number.
title
string
The title.
consumedUnits
decimal
The number of units consumed.
invoiceableUnits
decimal
The number of units to invoice.
unitText
string
The unit text.
costPerUnit
decimal
The cost per unit.
pricePerUnit
decimal
The price per unit excluding VAT.
discountPercentage
decimal
The discount in percent for the total amount.
vatPercentage
decimal
The VAT in percent.
totalAmount
decimal
The total amount excluding VAT.
toBeInvoiced
required
boolean
Whether or not the material report should be invoiced.
invoiceId
integer
The id of the invoice that contains this material report.
invoicedDate
datetime utc
The date that this material report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this material report.
timeReportId
integer
The id of the time report that this material report belongs to, if any.
isTextOnly
required
boolean
Whether or not the material report represents text only.
article
object
The article that this material report is connected to.
costCenter
object
The cost center that this material report is connected to.
bookingProject
object
The booking project that this material report is connected to.
project
required
object
The project that this material report belongs to.
createdDate
required
datetime utc
The date and time of which the material report was created.
createdBy
required
object
The user that created the material report.
updatedDate
datetime utc
The date and time of which the material report was last updated.
updatedBy
object
The user that last updated the material report.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the material report could not be found.
GET /v1/Core/MaterialReports/:id
Example request
GET /v1/Core/MaterialReports/1
Response
{ "objectName": "materialreport.detail", "id": 1, "sortOrder": 0, "articleNumber": "PP01", "title": "My article", "consumedUnits": 1.0, "invoiceableUnits": 2.0, "unitText": "pcs", "costPerUnit": 200.0, "pricePerUnit": 250.0, "discountPercentage": 10.0, "vatPercentage": 25.0, "totalAmount": 450.0, "toBeInvoiced": true, "invoiceId": 560, "invoicedDate": null, "invoiceDraftId": null, "timeReportId": null, "isTextOnly": false, "article": { "objectName": "generic.name_id", "id": 12, "name": "My article" }, "costCenter": { "objectName": "generic.name_id", "id": 1, "name": "IT Department" }, "bookingProject": { "objectName": "generic.name_id", "id": 1, "name": "BP 1" }, "project": { "objectName": "project.name_id", "id": 1, "name": "My project", "number": "123" }, "createdDate": "2024-11-22 08:23:38 +00:00", "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedDate": "2024-12-04 05:16:26 +00:00", "updatedBy": null }

Create material report

Creates a new material report.

Required permissions
Project_Write
Request object
articleId
required
integer
The id of the article. Must be active.
workOrderId
required
integer
The id of the project. Must be ongoing.
units
required
decimal
The amount of consumed units. Two decimals allowed, can be a negative value. Will be set to 0.00 if null.
invoicableUnits
required
decimal
The amount of invoicable units. Two decimals allowed, can be a negative value.
title
string
The title of the material report. Will be assigned the title of the article if null.
unitText
string
The type of unit. Timmar, st etc. Will be assigned the type of the article unit type if null.
cost
decimal
The material report cost. Two decimals allowed, can be a negative value. Will be assigned the cost of the article if null.
unitPrice
decimal
The price per unit. Will be assigned the unit price of the article if null.
discount
decimal
The discount in %. Two decimals allowed, can't be more than 100.
created
datetime utc
The created date. Will default to today's date if null.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/MaterialReports
Example request
POST /v1/Core/MaterialReports
Request body
{ "articleId": 12, "workOrderId": 1, "units": 1.0, "invoicableUnits": 2.0, "title": "My article", "unitText": "pcs", "cost": 200.0, "unitPrice": 250.0, "discount": 10.0, "created": "2024-11-22T08:23:38.3944757+00:00" }

Update material report

Updates the specified material report.

Required permissions
Project_Write
Request parameters
id
required
integer
The id of the material report to update.
Request object
articleNumber
string
The article number.
units
decimal
The amount of consumed units. Two decimals allowed, can be a negative value.
invoicableUnits
decimal
The amount of invoicable units. Two decimals allowed, can be a negative value.
title
string
The title of the material report.
unitText
string
The type of unit. Timmar, st etc.
cost
decimal
The material report cost. Two decimals allowed, can be a negative value.
unitPrice
decimal
The price per unit.
discount
decimal
The discount in %. Two decimals allowed, can't be more than 100.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/MaterialReports/:id
Example request
PUT /v1/Core/MaterialReports/1
Request body
{ "articleNumber": "PP02", "units": 2.0, "invoicableUnits": 3.0, "title": "Updated material report title", "unitText": "Updated unit text", "cost": 100.0, "unitPrice": 300.0, "discount": 20.0 }

Delete material report

Deletes the specified material report.

Required permissions
Project_Write
Request parameters
id
required
integer
The id of the material report to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. If the time report could not be found or if the project is invoiced.
DELETE /v1/Core/MaterialReports/:id
Example request
DELETE /v1/Core/MaterialReports/1

Payment plans

Available operations to the registry of payment plans are listed to the right.

List payment plans

Gets a list of payment plans.

Required permissions
Paymentplan_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: description createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.batchId
string
Filters payment plans to a specific batch.
filter.createdDateFrom
datetime utc
Filters payment plans where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters payment plans where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters payment plans where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters payment plans where the updated date is less than or equal to this date.
filter.projectId
integer
Filters payment plans to a specific project.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier of this payment plan.
articleNumber
string
The article number, if any.
description
string
A brief description about the payment plan, if any.
price
required
decimal
The price of this payment plan.
units
required
decimal
The number of payment plans.
batchId
string
The key for a group of payment plans, if any.
date
datetime
The date of which the payment plan should be invoiced, if any.
invoiceId
integer
The id of the invoice that contains this payment plan.
invoicedDate
datetime utc
The date that this payment plan was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this payment plan.
article
object
The article that this payment plan is connected to, if any.
project
required
object
The project that this payment plan belongs to.
createdDate
required
datetime utc
The date and time of which the payment plan was created.
createdBy
required
object
The user that created the payment plan.
updatedDate
datetime utc
The date and time of which the payment plan was last updated, if any.
updatedBy
object
The user that last updated the payment plan, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging or sorting parameter has an invalid value.
GET /v1/Core/Paymentplans
Example request
GET /v1/Core/Paymentplans?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 2, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "paymentplan.list", "id": 1, "articleNumber": "PP01", "description": "Installation + material", "price": 12000.0, "units": 1.0, "batchId": "c5816c0a-6145-4de2-9e7d-ea8187eb3a43", "date": "2024-12-05", "invoiceId": 560, "invoicedDate": null, "invoiceDraftId": null, "article": { "objectName": "generic.name_id", "id": 12, "name": "My article" }, "project": { "objectName": "project.name_id", "id": 1, "name": "My project", "number": "123" }, "createdDate": "2024-11-22 08:23:38 +00:00", "createdBy": null, "updatedDate": "2024-12-04 05:16:26 +00:00", "updatedBy": null }, { "objectName": "paymentplan.list", "id": 2, "articleNumber": "PP01", "description": "Additional installations", "price": 9000.0, "units": 1.0, "batchId": "2d526da5-a909-3549-204e-ad38335ffb85", "date": "2025-01-21", "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "article": null, "project": { "objectName": "project.name_id", "id": 1, "name": "My project", "number": "123" }, "createdDate": "2024-11-18 10:47:38 +00:00", "createdBy": null, "updatedDate": null, "updatedBy": null } ] }

Supplier invoices

Available operations to the registry of supplier invoices are listed to the right.

List supplier invoices

Gets a list of supplier invoices.

Required permissions
SupplierInvoice_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: invoiceNumber invoiceDate totalAmount invoiceCostAddition cost createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.query
string
Filters supplier invoices by invoice number and title.
filter.invoiceDateFrom
datetime
Filters supplier invoices where the invoice date is greater than or equal to this date.
filter.invoiceDateTo
datetime
Filters supplier invoices where the invoice date is less than or equal to this date.
filter.createdDateFrom
datetime utc
Filters supplier invoices where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters supplier invoices where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters supplier invoices where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters supplier invoices where the updated date is less than or equal to this date.
filter.projectId
integer
Filters supplier invoices for a specific project.
filter.supplierId
integer
Filters supplier invoices for a specific supplier (Contact marked as 'Supplier').
Response object
objectName
required
string
The name of the object.
id
required
integer
The id of the supplier invoice.
invoiceNumber
string
The invoice number of the supplier invoice.
invoiceDate
string
The invoice date of the supplier invoice.
title
required
string
The title of the supplier invoice.
description
string
The description of the supplier invoice.
externalHours
decimal
The number of external hours that this supplier invoice represents.
totalAmount
decimal
The total amount the supplier invoice.
invoiceCostAddition
decimal
An optional addition to the cost when invoicing the supplier invoice.
cost
decimal
The cost of the supplier invoice.
ocrNumber
string
The OCR number of the supplier invoice.
toBeInvoiced
required
boolean
Whether to invoice the supplier invoice or not.
invoiceId
integer
The id of the invoice that contains this supplier invoice.
invoicedDate
datetime utc
The date that this supplier invoice was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this supplier invoice.
supplier
object
The supplier that this supplier invoice came from.
project
required
object
The project that the supplier invoice belongs to.
createdBy
object
The user that created this supplier invoice.
updatedBy
object
The user that last updated this supplier invoice, if any.
createdDate
required
datetime utc
The date and time of which this supplier invoice was created.
updatedDate
datetime utc
The date and time of which this supplier invoice was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/SupplierInvoices
Example request
GET /v1/Core/SupplierInvoices?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "supplierInvoice.list", "id": 1, "invoiceNumber": "11232", "invoiceDate": "2024-11-24", "title": "Construction time spent", "description": "A brief description.", "externalHours": 2.0, "totalAmount": 1100.0, "invoiceCostAddition": 100.0, "cost": 1000.0, "ocrNumber": "1234567890", "toBeInvoiced": true, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "supplier": { "objectName": "generic.name_id", "id": 44, "name": "Builders Inc." }, "project": { "objectName": "project.name_id", "id": 123, "name": "My project", "number": "213" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 2, "name": "Jane Doe" }, "createdDate": "2024-11-25 08:23:38 +00:00", "updatedDate": "2024-12-06 05:16:26 +00:00" } ] }

Add unhandled supplier invoice

Add an unhandled supplier invoice.

Your account must have an active connection to an external economy system.
Required permissions
SupplierInvoice_Write
Request object
title
required
string
The title.
invoiceDate
required
datetime
The invoice date (YYYY-MM-DD)
amount
required
decimal
The amount, tax excluded.
sourceSystemId
required
string
The source system ID of the supplier invoice.
description
string
The description.
supplierName
string
The name of the supplier.
bookingProjectNumber
string
The booking project number.
invoiceNumber
string
The invoice number.
Response object
Id
required
int
The id of the created resource.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/core/supplierinvoices/addunhandled
Example request
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW Content-Length: 812 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="amount" 500.00 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="bookingProjectNumber" 401-501 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="description" Invoice description ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="invoiceDate" 2025-02-05 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="invoiceNumber" 506 ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="sourceSystemId" 700-ABC ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="supplierName" Toyota ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="title" Invoice title ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="files"; filename="invoice-506.pdf" Content-Type: application/pdf (Binary data not shown) ------WebKitFormBoundary7MA4YWxkTrZu0gW Content-Disposition: form-data; name="files"; filename="logo.jpeg" Content-Type: application/jpeg (Binary data not shown) ------WebKitFormBoundary7MA4YWxkTrZu0gW--
Example response
{ "id": 1451 }

List time reports

Gets a list of time reports.

Required permissions
Timereport_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: date userName hours invoiceableHours sentToAttestDate attestedDate createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
deprecated
datetime utc
Filters time reports where the created date is greater than or equal to this date.
filter.createdDateTo
deprecated
datetime utc
Filters time reports where the created date is less than or equal to this date.
filter.updatedDateFrom
deprecated
datetime utc
Filters time reports where the updated date is greater than or equal to this date.
filter.updatedDateTo
deprecated
datetime utc
Filters time reports where the updated date is less than or equal to this date.
filter.createdOrUpdatedSince
datetime utc
Matches time reports that were created or updated since the specified date and time.
filter.from
datetime utc
Filter time reports where Date is greater than or equal to this.
filter.to
datetime utc
Filter time reports where Date is lower than or equal to this.
filter.userIds
integer array
Filter all time reports that belongs to this list of users.
filter.projectId
integer
Filter time reports that are registered to a specific project.
filter.internalProjectId
integer
Filter time reports that are registered to a specific internal project.
filter.absenceProjectId
integer
Filter time reports that are registered to a specific absence project.
filter.contactId
integer
Filter time reports that are connected to this contact.
filter.activityId
integer
Filter time reports that are of the specified activity type
filter.isSentToAttest
boolean
Filter time reports that are/are not sent to attest.
filter.isAttested
boolean
Filter time reports that are/are not attested.
filter.projectType
string
Filter time reports which are registered to a certain type of project. Valid values are: project internalProject absenceProject
filter.hasAdditions
boolean
Filter time reports that have additions reports.
filter.hasEquipment
boolean
Filter time reports that have equipment reports.
filter.hasAllowanceReports
boolean
Filter time reports that have allowance reports.
filter.hasTravelReports
boolean
Filter time reports that have travel reports.
filter.taskId
integer
Filter time reports on a certain task.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier of this time report.
date
required
datetime
The date that this time report represents.
clockStart
string
Represents the start time of this time report.
clockEnd
string
Represents the end time of this time report.
hours
required
decimal
The number of hours.
invoiceableHours
required
decimal
The number of invoiceable hours.
breakMinutes
integer
The number of minutes that was spent on break. The 'Hours' field will be deducted by the amount of break minutes.
cost
decimal
The cost per hour.
rate
decimal
The invoiceable hourly rate.
discount
decimal
The invoiceable discount in percent per hour.
comment
string
A comment about this time report that the customer may see.
internalComment
string
A internal comment about this time report that the customer won't see.
sentToAttestDate
datetime utc
The date that this time report was sent to attest.
attestedDate
datetime utc
The date that this time report was attested.
user
required
object
The user that this time report belongs to.
project
object
The project that this time report is connected to.
internalProject
object
The internal project that this time report is connected to.
absenceProject
object
The absence project that this time report is connected to.
contact
required
object
The contact that the project of the time report is connected to.
activity
required
object
The activity of the time report.
timeCode
required
object
The time code of the time report.
timeArticle
required
object
The time article of the time report.
costCenter
object
The cost center that this time report is connected to.
invoiceId
integer
The Id of the invoice that this time report is included on.
invoicedDate
datetime utc
The date that this time report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this time report.
travelReportId
integer
The Id of the travel report connected to this time report.
allowanceReportId
integer
The Id of the allowance report connected to this time report.
createdDate
required
datetime utc
The date and time of which the time report was created.
updatedDate
datetime utc
The date and time of which the time report was last updated.
hasAdditions
required
boolean
Whether the time report has addition reports or not.
hasEquipment
required
boolean
Whether the time report has eqipment reports or not.
createdBy
object
The user that created the time report.
updatedBy
object
The user that last updated the time report.
taskId
integer
Connected task of a time report or null if none is connected.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/TimeReports
Example request
GET /v1/Core/TimeReports?page=1&filter.from=2021-10-01&filter.to=2021-10-31&sortOrder=ascending
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "timereport.list", "id": 270, "date": "2021-08-30", "clockStart": "07:00", "clockEnd": "17:00", "hours": 8, "invoiceableHours": 7, "breakMinutes": 60, "cost": 200, "rate": 500, "discount": null, "comment": "A comment that is visible on the invoice", "internalComment": "A comment that is not visible on the invoice", "sentToAttestDate": "2021-09-15 07:02:16 +00:00", "attestedDate": "2021-09-15 07:10:18 +00:00", "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "project": { "objectName": "project.name_id", "id": 19, "name": "Maintenance", "number": "12" }, "internalProject": null, "absenceProject": null, "contact": { "objectName": "generic.name_id", "id": 87, "name": "Microsoft" }, "activity": { "objectName": "generic.name_id", "id": 34, "name": "Project management" }, "timeCode": { "objectName": "generic.name_id", "id": 16, "name": "Normal" }, "timeArticle": { "objectName": "generic.name_id", "id": 49, "name": "Work hours" }, "costCenter": { "objectName": "generic.name_id", "id": 460, "name": "Center" }, "invoiceId": 16012, "invoicedDate": null, "invoiceDraftId": null, "travelReportId": 15747, "allowanceReportId": 314, "createdDate": "2021-09-15 05:02:04 +00:00", "updatedDate": "2021-10-09 12:44:07 +00:00", "hasAdditions": false, "hasEquipment": true, "createdBy": { "objectName": "generic.name_id", "id": 6, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 1416, "name": "Derek Johnson" }, "taskId": null } ] }

Get time report

Gets a single time report.

Required permissions
Timereport_Read
Request parameters
id
required
integer
The unique identifier of this time report.
Response object
objectName
string
The name of the object.
id
required
integer
The unique identifier of this time report.
date
required
datetime
The date that this time report represents.
clockStart
string
Represents the start time of this time report.
clockEnd
string
Represents the end time of this time report.
hours
required
decimal
The number of hours.
invoiceableHours
required
decimal
The number of invoiceable hours.
breakMinutes
integer
The number of minutes that was spent on break. The 'Hours' field will be deducted by the amount of break minutes.
cost
decimal
The cost per hour.
rate
decimal
The invoiceable hourly rate.
discount
decimal
The invoiceable discount in percent per hour.
comment
string
A comment about this time report that the customer may see.
internalComment
string
A internal comment about this time report that the customer won't see.
sentToAttestDate
datetime utc
The date that this time report was sent to attest.
attestedDate
datetime utc
The date that this time report was attested.
attestedByUser
object
The user that attested this time report.
user
required
object
The user that this time report belongs to.
contact
required
object
The contact that the project of the time report is connected to.
project
object
The project that this time report is connected to.
internalProject
object
The internal project that this time report is connected to.
absenceProject
object
The absence project that this time report is connected to.
activity
required
object
The activity of the time report.
timeCode
required
object
The time code of the time report.
timeArticle
required
object
The time article of the time report.
costCenter
object
The cost center that this time report is connected to.
bookingProject
object
The booking project that this time report is connected to.
invoiceId
integer
The Id of the invoice that this time report is included on.
invoicedDate
datetime utc
The date that this time report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this time report.
task
object
The task that this time report was reported on.
travelReport
object
The travel report connected to this time report.
allowanceReport
object
The allowance report connected to this time report.
materials
object
A list of materials that was reported together with this time report.
equipments
object
A list of equipments that was reported together with this time report.
additions
object
A list of additions that was reported together with this time report.
createdDate
required
datetime utc
The date and time of which the time report was created.
updatedDate
datetime utc
The date and time of which the time report was last updated.
GET /v1/Core/TimeReports/:id
Example request
GET /v1/Core/TimeReports/707
Response
{ "objectName": "timereport.detail", "id": 270, "date": "2021-08-30", "clockStart": null, "clockEnd": null, "hours": 8, "invoiceableHours": 7, "breakMinutes": null, "cost": 200, "rate": 500, "discount": null, "comment": "A comment that is visible on the invoice", "internalComment": "A comment that is not visible on the invoice", "sentToAttestDate": "2021-09-15 07:02:16 +00:00", "attestedDate": "2021-09-15 07:10:18 +00:00", "attestedByUser": null, "user": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "contact": { "objectName": "generic.name_id", "id": 87, "name": "Microsoft" }, "project": { "objectName": "project.name_id", "id": 19, "name": "Maintenance", "number": "12" }, "internalProject": null, "absenceProject": null, "activity": { "objectName": "generic.name_id", "id": 34, "name": "Project management" }, "timeCode": { "objectName": "generic.name_id", "id": 16, "name": "Normal" }, "timeArticle": { "objectName": "generic.name_id", "id": 49, "name": "Work hours" }, "costCenter": null, "bookingProject": null, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "task": null, "travelReport": null, "allowanceReport": null, "materials": [], "equipments": [], "additions": [], "createdDate": "2021-09-15 05:02:04 +00:00", "updatedDate": null }
Object "timereport.detail.travelreport"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this travel report.
place
string
Where the reportee went. Will not show up on invoice.
invoicablePlace
string
Where the reportee went. Will show up on invoice.
distance
required
decimal
The distance in kilometers that was covered.
invoicableDistance
decimal
The invoiceable distance in kilometers that was covered.
toSalary
required
boolean
Whether or not the travel should be payed back to the user.
toBeInvoiced
required
boolean
Whether or not the travel should be included when invoiceing the customer.
cost
decimal
The internal cost of this travel report per distance traveled.
rate
decimal
The price per invoiceable distance unit.
discount
decimal
The discount per invoiceable distance unit in percent.
sentToAttestDate
datetime utc
The date and time of when this travel report was sent in for review.
attestedDate
datetime utc
The date and time of when this travel report was attested.
costCenter
object
The cost center that this travel report is connected to.
bookingProject
object
The booking project that this travel report is connected to.
invoiceId
integer
The id of the invoice that this travel report is included on.
invoicedDate
datetime utc
The date that this travel report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this travel report.
companyCar
object
The company car that was used for the travel.
article
object
The article of the travel report.
Object "timereport.detail.travelreport"
{ "objectName": "timereport.detail.travelreport", "id": 270, "place": "piteå-luleå-piteå", "invoicablePlace": "piteå-luleå-piteå", "distance": 100, "invoicableDistance": 150, "toSalary": true, "toBeInvoiced": true, "cost": 10, "rate": 15, "discount": null, "sentToAttestDate": null, "attestedDate": null, "costCenter": { "objectName": "generic.name_id", "id": 3, "name": "Cost center 3" }, "bookingProject": { "objectName": "generic.name_id", "id": 2, "name": "BP 2" }, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "companyCar": null, "article": null }
Object "timereport.detail.travelreport.companycar"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this company car.
name
required
string
The name of the company car.
tripStart
decimal
The trip meter of the car before the travel.
tripEnd
decimal
The trip meter of the car after the travel.
addressStart
string
The address of which the car started its travel.
addressGoal
string
The address goal.
addressEnd
string
The address of which the car ended its travel.
Object "timereport.detail.travelreport.companycar"
{ "objectName": "timereport.detail.travelreport.companycar", "id": 12, "name": "Company car #1", "tripStart": 15000, "tripEnd": 15250, "addressStart": "My street 123, My city", "addressGoal": "My street 321, Another city", "addressEnd": "My street 123, My city" }
Object "timereport.detail.allowancereport"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this allowance report.
description
string
The description of the allowance report.
cost
decimal
The internal cost of the allowance report.
amount
decimal
The rate of this allowance report.
invoicableAmount
decimal
The invoiceable rate of this allowance report.
discount
decimal
The discount of the invoiceable rate in percent.
invoicableSpecification
required
string
The name of the allowance.
toBeInvoiced
required
boolean
Whether or not this allowance should be invoiced.
sentToAttestDate
datetime utc
The date and time of when this allowance report was sent in for review.
attestedDate
datetime utc
The date and time of when this allowance report was attested.
costCenter
object
The cost center that this time report is connected to.
bookingProject
object
The booking project that this time report is connected to.
invoiceId
integer
The id of the invoice that this allowance report is included in.
invoicedDate
datetime utc
The date that this allowance report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this allowance report.
article
object
The article of the allowance report.
Object "timereport.detail.allowancereport"
{ "objectName": "timereport.detail.allowancereport", "id": 12, "description": "Lunch", "cost": 200, "amount": 250, "invoicableAmount": 250, "discount": null, "invoicableSpecification": "Whole day", "toBeInvoiced": false, "sentToAttestDate": null, "attestedDate": null, "costCenter": { "objectName": "generic.name_id", "id": 3, "name": "Cost center 3" }, "bookingProject": { "objectName": "generic.name_id", "id": 2, "name": "BP 2" }, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "article": null }
Object "timereport.detail.materialreport"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this material report.
title
string
The title of the material report.
units
required
decimal
The number of units.
costPerUnit
decimal
The internal cost per unit.
discountInPercent
decimal
The discount per unit in percent.
invoicableUnits
decimal
The number of invoiceable units.
unitPrice
required
decimal
The price per unit.
invoicableUnitPrice
decimal
The invoiceable price per unit.
taxPercent
required
decimal
The percentage of tax per unit.
amount
required
decimal
The total amount for this material report.
invoicableAmount
decimal
The total invoiceable amount for this material report.
cost
decimal
The internal cost per unit.
calculatedUnits
decimal
The estimated number of units.
tax
required
decimal
The total amount of tax for this material report.
toBeInvoiced
required
boolean
Whether or not this material report should be invoiced.
article
object
The article in the article registry that this material report represents
unitText
string
The display name of the unit.
invoicableUnitText
string
The display name of the unit when invoiceing.
isRotRut
required
boolean
Whether or not this material report is swedish ROT or RUT.
invoiceId
integer
The id of the invoice that this material report is included in.
invoicedDate
datetime utc
The date that this material report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this material report.
articleNumber
string
The article number.
costCenter
object
The cost center that this time report is connected to.
bookingProject
object
The booking project that this time report is connected to.
Object "timereport.detail.materialreport"
{ "objectName": "timereport.detail.materialreport", "id": 12, "title": "Breaker bar", "units": 2, "costPerUnit": 100, "discountInPercent": null, "invoicableUnits": null, "unitPrice": 125, "invoicableUnitPrice": 125, "taxPercent": 25, "amount": 250, "invoicableAmount": 250, "cost": 200, "calculatedUnits": null, "tax": 62.5, "toBeInvoiced": true, "article": { "objectName": "generic.name_id", "id": 24, "name": "Breaker bar" }, "unitText": "pcs", "invoicableUnitText": "pcs", "isRotRut": false, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "articleNumber": "0012", "costCenter": { "objectName": "generic.name_id", "id": 3, "name": "Cost center 3" }, "bookingProject": { "objectName": "generic.name_id", "id": 2, "name": "BP 2" } }
Object "timereport.detail.equipmentreport"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this equipment report.
hours
required
decimal
The number of hours that this equipment was used.
cost
decimal
The internal cost of the equipment per hour.
rate
decimal
The rate of the equipment per hour.
invoicableRate
decimal
The invoiceable rate of the equipment per hour.
invoicableHours
required
decimal
The number of invoiceable hours.
article
required
object
The article in the article registry that this equipment report refers to.
invoiceId
integer
The id of the invoice that this equipment report is included in.
invoicedDate
datetime utc
The date that this equipment report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this equipment report.
discount
decimal
The discount per invoiceable hour in percent.
comment
string
A comment about what the time was spent on doing.
costCenter
object
The cost center that this equipment report is connected to.
bookingProject
object
The booking project that this equipment report is connected to.
Object "timereport.detail.equipmentreport"
{ "objectName": "timereport.detail.equipmentreport", "id": 12, "hours": 5, "cost": 20, "rate": 30, "invoicableRate": 40, "invoicableHours": 5, "article": { "objectName": "generic.name_id", "id": 45, "name": "Jackhammer" }, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "discount": null, "comment": "Used the jackhammer to obliterate a concrete slab.", "costCenter": { "objectName": "generic.name_id", "id": 3, "name": "Cost center 3" }, "bookingProject": { "objectName": "generic.name_id", "id": 2, "name": "BP 2" } }
Object "timereport.detail.additionreport"
objectName
string
The name of the object.
id
required
integer
The unique identifier for this addition report.
salaryCount
decimal
The number of units that will be counted towards the users salary.
invoicableCount
decimal
The number of units that will be invoiced.
cost
decimal
The internal cost per salary count.
invoicablePrice
decimal
The invoiceable price per invoiceable count.
discount
decimal
The discount per invoiceable count in percent.
invoiceId
integer
The Id of the invoice that this addition report is included on.
invoicedDate
datetime utc
The date that this addition report was invoiced.
invoiceDraftId
integer
The id of the invoice draft that contains this addition report.
article
required
object
The article in the article registry that this addition report refers to.
costCenter
object
The cost center that this addition report is connected to.
bookingProject
object
The booking project that this addition report is connected to.
Object "timereport.detail.additionreport"
{ "objectName": "timereport.detail.additionreport", "id": 12, "salaryCount": 2, "invoicableCount": 2, "cost": 20, "invoicablePrice": 400, "discount": null, "invoiceId": null, "invoicedDate": null, "invoiceDraftId": null, "article": { "objectName": "generic.name_id", "id": 78, "name": "Night time" }, "costCenter": { "objectName": "generic.name_id", "id": 3, "name": "Cost center 3" }, "bookingProject": { "objectName": "generic.name_id", "id": 2, "name": "BP 2" } }
Status codes
200 Ok
Indicates a successful request.
400 Bad Request
Indicates a client error. This status code will be produced if the contact could not be found.

Create time report

Creates a new time report.

Required permissions
Timereport_Write
Request object
date
required
datetime
The date of which this time report represents.
clockStart
string
Which time of day this time report started. Format is "hh:mm" (24-hour clock).
clockEnd
string
Which time of day this time report ended. Format is "hh:mm" (24-hour clock).
hours
required
decimal
The number of hours.
invoiceableHours
required
decimal
The number of invoiceable hours.
breakMinutes
integer
The number of minutes of which the reporter was on break.
comment
string
A comment about what you did. Is visible when invoiceing.
internalComment
string
An internal comment about what you did. Is not visible when invoiceing
userId
required
integer
The id of the user this time report belongs to.
projectId
integer
The id of the project that this time report is connected to.
internalProjectId
integer
The id of the internal project that this time report is connected to.
absenceProjectId
integer
The id of the absence project that this time report is connected to.
activityId
required
integer
The id of the activity that this time report is connected to.
timeCodeId
required
integer
The id of the time code that this time report is connected to.
timeArticleId
required
integer
The id of the time article that this time report is connected to.
taskId
integer
The id of the task that this time report is connected to, if any.
travelReport
object
A travel report.
allowanceReport
object
An allowance report. Should only be set if a travel report is set.
materials
object array
A list of materials used.
equipments
object array
A list of equipments used.
additions
object array
A list of additions to include in this time report.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/Core/TimeReports
Example request
{ "date": "2021-11-10 00:00:00", "clockStart": "10:00", "clockEnd": "18:00", "hours": 7.75, "invoiceableHours": 9, "breakMinutes": 15, "comment": "Lorem ipsum dolar sit amet", "internalComment": "Lorem ipsum dolar sit amet", "userId": 1, "projectId": 1, "internalProjectId": null, "absenceProjectId": null, "activityId": 1, "timeCodeId": 1, "timeArticleId": 1, "taskId": null, "travelReport": { "place": "Piteå-Luleå-Piteå", "distance": 100, "invoiceableDistance": 120, "toSalary": true, "companyCar": { "id": 1, "tripStart": 15000, "tripEnd": 15100, "addressStart": "Generalgatan 1", "addressGoal": "Generalgatan 2", "addressEnd": "Generalgatan 1" } }, "allowanceReport": { "allowanceTypeId": 1, "description": "Lorem ipsum dolar sit amet", "toBeInvoiced": true }, "materials": [ { "id": null, "articleId": 55, "articleNumber": "A12", "title": "Lorem ipsum", "unitPrice": 600, "invoiceableUnitPrice": 650, "units": 4, "invoiceableUnits": 5, "calculatedUnits": 4, "unitText": "st", "cost": 500, "discountInPercent": 0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": "E01", "title": "Article not in registry", "unitPrice": 300, "invoiceableUnitPrice": 300, "units": 1, "invoiceableUnits": 2, "calculatedUnits": 1, "unitText": "meter", "cost": 100, "discountInPercent": 10, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": null, "title": "Lorem ipsum dolar sit amet...", "unitPrice": 0, "invoiceableUnitPrice": null, "units": 0, "invoiceableUnits": null, "calculatedUnits": null, "unitText": null, "cost": null, "discountInPercent": null, "isTextOnly": true } ], "equipments": [ { "id": null, "hours": 4.5, "articleId": 10, "comment": "Lorem ipsum dolar sit amet" } ], "additions": [ { "id": null, "articleId": 14, "yesNo": null, "numberCount": 3 }, { "id": null, "articleId": 15, "yesNo": true, "numberCount": null } ] }

Update time report

Updates an existing time report.

Required permissions
Timereport_Write
Request object
date
required
datetime
The date of which this time report represents.
clockStart
string
Which time of day this time report started. Format is "hh:mm" (24-hour clock).
clockEnd
string
Which time of day this time report ended. Format is "hh:mm" (24-hour clock).
hours
required
decimal
The number of hours.
invoiceableHours
required
decimal
The number of invoiceable hours.
breakMinutes
integer
The number of minutes of which the reporter was on break.
comment
string
A comment about what you did. Is visible when invoiceing.
internalComment
string
An internal comment about what you did. Is not visible when invoiceing
userId
required
integer
The id of the user this time report belongs to.
projectId
integer
The id of the project that this time report is connected to.
internalProjectId
integer
The id of the internal project that this time report is connected to.
absenceProjectId
integer
The id of the absence project that this time report is connected to.
activityId
required
integer
The id of the activity that this time report is connected to.
timeCodeId
required
integer
The id of the time code that this time report is connected to.
timeArticleId
required
integer
The id of the time article that this time report is connected to.
taskId
integer
The id of the task that this time report is connected to, if any.
travelReport
object
A travel report.
allowanceReport
object
An allowance report. Should only be set if a travel report is set.
materials
object array
A list of materials used.
equipments
object array
A list of equipments used.
additions
object array
A list of additions to include in this time report.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/Core/TimeReports/:id
Example request
{ "date": "2021-11-10 00:00:00", "clockStart": "10:00", "clockEnd": "18:00", "hours": 7.75, "invoiceableHours": 9, "breakMinutes": 15, "comment": "Lorem ipsum dolar sit amet", "internalComment": "Lorem ipsum dolar sit amet", "userId": 1, "projectId": 1, "internalProjectId": null, "absenceProjectId": null, "activityId": 1, "timeCodeId": 1, "timeArticleId": 1, "taskId": null, "travelReport": { "place": "Piteå-Luleå-Piteå", "distance": 100, "invoiceableDistance": 120, "toSalary": true, "companyCar": { "id": 1, "tripStart": 15000, "tripEnd": 15100, "addressStart": "Generalgatan 1", "addressGoal": "Generalgatan 2", "addressEnd": "Generalgatan 1" } }, "allowanceReport": { "allowanceTypeId": 1, "description": "Lorem ipsum dolar sit amet", "toBeInvoiced": true }, "materials": [ { "id": 2, "articleId": 55, "articleNumber": "A12", "title": "Lorem ipsum", "unitPrice": 600, "invoiceableUnitPrice": 650, "units": 4, "invoiceableUnits": 5, "calculatedUnits": 4, "unitText": "st", "cost": 500, "discountInPercent": 0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": "E01", "title": "Article not in registry", "unitPrice": 300, "invoiceableUnitPrice": 300, "units": 1, "invoiceableUnits": 2, "calculatedUnits": 1, "unitText": "meter", "cost": 100, "discountInPercent": 10, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": null, "title": "Lorem ipsum dolar sit amet...", "unitPrice": 0, "invoiceableUnitPrice": null, "units": 0, "invoiceableUnits": null, "calculatedUnits": null, "unitText": null, "cost": null, "discountInPercent": null, "isTextOnly": true } ], "equipments": [ { "id": 2, "hours": 4.5, "articleId": 10, "comment": "Lorem ipsum dolar sit amet" }, { "id": null, "hours": 1, "articleId": 11, "comment": "Lorem ipsum dolar sit amet" } ], "additions": [ { "id": 2, "articleId": 15, "yesNo": true, "numberCount": null }, { "id": null, "articleId": 16, "yesNo": true, "numberCount": null } ] }

Delete time report

Deletes the specified time report.

Required permissions
Timereport_Write
Request parameters
id
required
integer
The id of the time report to delete.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
If the time report could not be found or if the time report is attested or invoiced.
DELETE /v1/Core/TimeReports/:id
Example request
DELETE /v1/Core/TimeReports/1

List user day statistics

Gets a list of users, containing time reporting information about each day of a date span.

Required permissions
Timereport_Read
Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.from
datetime
The start of the date span. The date span can be a maximum of 31 days.
filter.to
datetime
The end of the date span.
filter.userIds
integer array
Only include the specified users.
filter.departmentIds
integer array
Only include users which belongs to the specified departments.
Response object
objectName
string
The name of the object.
userId
required
integer
The is of the user.
name
string
The name of the user.
department
object
The department that the user belongs to, if any.
dates
object array
A list of dates, each date containing information about the user's time reporting status that day.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Core/TimeReports/UserDayStatistics
Example request
GET /v1/Core/TimeReports/UserDayStatistics?page=1&filter.from=2021-10-01&filter.to=2021-10-02
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "timereport.userdaystatistics", "userId": 1, "name": "John Doe", "department": { "objectName": "generic.name_id", "id": 1, "name": "Developers" }, "dates": [ { "objectName": "timereport.userdaystatistics.datedata", "date": "2021-10-01", "reportedHours": 8.5, "scheduledHours": 8.0, "lockedDate": "2024-12-07 10:47:38 +00:00", "attestedDate": null }, { "objectName": "timereport.userdaystatistics.datedata", "date": "2021-10-02", "reportedHours": 4.25, "scheduledHours": 8.0, "lockedDate": null, "attestedDate": null } ] } ] }

Admin resources

Absence projects

Available operations to the registry of absence projects are listed to the right.

List absence projects

Gets a list of absence projects.

Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the absence project.
name
string
The name of the absence project.
commentRequiredWhenTimeReporting
required
boolean
Whether or not a comment is required when registering time for this absence project.
salaryCodeForMonthlySalary
string
The salary code for employees with montly salaries.
salaryCodeForHourlySalary
string
The salary code for employees with hourly salaries.
refersToSickness
required
boolean
Whether or not this absence project refers to sickness.
isActive
required
boolean
Whether or not this absence project is active.
createdBy
object
The user that created this absence project.
updatedBy
object
The user that last updated the absence project.
created
datetime utc
The date and time of which this absence project was created.
updated
datetime utc
The date and time of which this absence project was last updated.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Admin/AbsenceProjects
Example request
GET /v1/Admin/AbsenceProjects?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "absenceproject.list", "id": 1, "name": "Lorem ipsum", "commentRequiredWhenTimeReporting": false, "salaryCodeForMonthlySalary": "040", "salaryCodeForHourlySalary": "040", "refersToSickness": false, "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2024-11-27 10:47:38 +00:00", "updated": null } ] }

Activities

Available operations to the registry of activities are listed to the right.

List activities

Gets a list of activities.

Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Response object
objectName
string
The name of the object.
id
required
integer
The id of the activity.
name
string
The name of the activity.
isActive
required
boolean
Whether or not this activity is active and can be used when registering time.
preferredTimeCode
object
The preferred time code when reporting time using this activity, if any.
preferredTimeArticle
object
The preferred time article when reporting time using this activity, if any.
createdBy
object
The user that created this activity.
updatedBy
object
The user that last updated this activity, if any.
created
datetime utc
The date and time of which this activity was created.
updated
datetime utc
The date and time of which this activity was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Admin/Activities
Example request
GET /v1/Admin/Activities?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "activity.list", "id": 1, "name": "Lorem ipsum", "isActive": true, "preferredTimeCode": { "objectName": "generic.name_id", "id": 2, "name": "Dolar sit amet" }, "preferredTimeArticle": { "objectName": "generic.name_id", "id": 1, "name": "Lorem ipsum" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2024-11-27 10:47:38 +00:00", "updated": null } ] }

List articles

Gets a list of articles.

Paging parameters
page
required
integer
The page number to retrieve. Starts at 1.
pageSize
integer
The number of items to retrieve per page. Can be between 1-100, defaults to 25.
type
string
The type of articles to retrieve.new

Defaults to material if omitted.

Valid values are: all allowance material equipment addition time
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name articleNumber createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.query
string
Filters by article number and name.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the article.
articleNumber
string
The article number of the article.
name
string
The name of the article.
price
decimal
The price per unit of the article.
cost
decimal
The cost per unit of the article.
unit
object
The unit of the article.
description
string
The description of the article.
isActive
required
boolean
Whether or not the article is active and can be used.
createdBy
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/Admin/Articles
Example request
GET /v1/Admin/Articles?page=1&filter.query=lor&type=all
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 2, "totalItemCount": 2, "totalPages": 1, "items": [ { "objectName": "article.list", "id": 1, "articleNumber": "A024", "name": "Lorem ipsum", "price": 500.0, "cost": 345.5, "unit": { "objectName": "generic.name_id", "id": 1, "name": "st" }, "description": "Lorem ipsum dolar sit amet", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2024-11-27 10:47:38 +00:00", "updated": null }, { "objectName": "article.list", "id": 2, "articleNumber": "A025", "name": "Ipsum lorem", "price": 600.0, "cost": 445.5, "unit": { "objectName": "generic.name_id", "id": 2, "name": "st" }, "description": "Lorem ipsum dolar sit amet", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 2, "name": "Jane Doe" }, "updatedBy": null, "created": "2024-11-28 10:47:38 +00:00", "updated": null } ] }

Get article

Gets an article.

Request parameter
id
required
integer
The id of the article.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the article.
name
string
The name of the article.
description
string
The description of the article.
type
string
The type of the article.
articleNumber
string
The article number of the article.
price
decimal
The price per unit of the article.
cost
decimal
The cost per unit of the article.
unit
object
The unit of the article.
isActive
required
boolean
Whether or not the article is active and can be used.
externalId
string
The external id, if any.
vatCode
required
object
VAT code
salaryCode
string
The salary code, if any.
salaryCodeForHour
string
The salary code for hour, if any.
articleGroup
string
The article group, if any.
eAN
string
The EAN code of the article.
isFavorite
required
boolean
Whether or not the article is a favorite.
manufacturer
string
The manufacturer of the article.
manufacturerArticleNumber
string
The manufacturer article number of the article.
affectsCompTimeBalance
required
boolean
The AffectsCompTimeBalance field, if any.
percentage
decimal
The percentage field, if any.
salaryCompensation
decimal
The salary compensation field, if any.
start1
string
The start1 field, if any.
end1
string
The end1 field, if any.
start2
string
The start2 field, if any.
end2
string
The end2 field, if any.
normalWorkDays
boolean
The normal work days field, if any.
weekDays
boolean
The week days field, if any.
majorPublic
boolean
The major public field, if any.
supplier
object
The supplier, if any.
additionType
string
The addition type, if any.
costCenter
object
The cost center, if any.
model
string
The model, if any.
serialNumber
string
The serial number, if any.
yearOfPurchase
integer
The year of purchase, if any.
equipmentType
string
The equipment type, if any.
createdBy
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/admin/articles/:id
Example request
GET /v1/admin/articles/42
Example response
{ "id": 42, "name": "Article 1", "description": "Description of article 1", "type": "Material", "articleNumber": "ABC-123", "price": 200.00, "cost": 100.00, "unit": { "objectName": "generic.name_id", "id": 1, "name": "Unit 1" }, "isActive": true, "externalId": "EXT-123", "vatCode": { "objectName": "vat.code", "id": 0, "name": "VAT 1", "code": "1", "vat": 25.00, "isVatFree": false, "createdBy": null, "updatedBy": null, "created": null, "updated": null }, "salaryCode": "123", "salaryCodeForHour": "555", "articleGroup": "123", "ean": "1234567890123", "isFavorite": true, "manufacturer": "Toyota", "manufacturerArticleNumber": "123-123", "affectsCompTimeBalance": false, "percentage": 5.00, "salaryCompensation": 100.00, "start1": null, "end1": null, "start2": null, "end2": null, "normalWorkDays": true, "weekDays": true, "majorPublic": false, "supplier": null, "additionType": null, "costCenter": { "objectName": "costcenter.name_id", "id": 1, "name": "Cost center 1", "code": "CC1" }, "model": "Model 1", "serialNumber": "1234567890123", "yearOfPurchase": 2020, "equipmentType": null, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }

Create addition article

Creates a new addition article.

Request object
isActive
boolean
Whether or not the time addition is active.

Will be set to true if omitted.

additionType
integer
1 = Number, 2 = Boolean
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
additionType
string
The addition type.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/admin/articles/addition
Example request
{ "isActive": true, "additionType": 1, "salaryCode": "1234", "salaryCodeForHour": "1234", "articleNumber": "234", "cost": 401.00, "description": "Description of new addition 1", "externalId": "EXT-123", "name": "New Addition 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.addition", "additionType": "Number", "salaryCode": "1234", "salaryCodeForHour": "1234", "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new addition 1", "externalId": "EXT-123", "isActive": true, "name": "New Addition 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 123, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Update addition article

Updates a addition article.

Request parameter
id
required
integer
The id of the article.
Request object
isActive
boolean
Whether or not the time addition is active.

Will be ignored if omitted.

additionType
integer
1 = Number, 2 = Boolean
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
additionType
string
The addition type.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request, resulting in updating a resource. The response includes a `Location` header with the URI of the updated resource, and the body contains details about the updated resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/admin/articles/addition/:id
Example request
{ "isActive": true, "additionType": 2, "salaryCode": "1234", "salaryCodeForHour": "12345", "articleNumber": "234", "cost": 401.00, "description": "Description of updated addition 1", "externalId": "EXT-123", "name": "Updated addition 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.addition", "additionType": "Boolean", "salaryCode": "1234", "salaryCodeForHour": "1234", "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of updated addition 1", "externalId": "EXT-123", "isActive": true, "name": "Updated addition 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 123, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Create allowance article

Creates a new allowance article.

Request object
isActive
boolean
Whether or not the allowance is active.

Will be set to true if omitted.

salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/admin/articles/allowance
Example request
{ "isActive": true, "salaryCode": null, "salaryCodeForHour": null, "articleNumber": "234", "cost": 401.00, "description": "Description of new allowance 1", "externalId": "EXT-123", "name": "New Allowance 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.allowance", "salaryCode": null, "salaryCodeForHour": null, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new allowance 1", "externalId": "EXT-123", "isActive": true, "name": "New Allowance 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Update allowance article

Updates an allowance article.

Request parameter
id
required
integer
The id of the article.
Request object
isActive
boolean
Whether or not the allowance is active.

Will be ignored if omitted.

salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request, resulting in updating a resource. The response includes a `Location` header with the URI of the updated resource, and the body contains details about the updated resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/admin/articles/allowance/:id
Example request
{ "isActive": true, "salaryCode": null, "salaryCodeForHour": null, "articleNumber": "234", "cost": 401.00, "description": "Description of updated allowance 1", "externalId": "EXT-123", "name": "Updated Allowance 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.allowance", "salaryCode": null, "salaryCodeForHour": null, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of updated allowance 1", "externalId": "EXT-123", "isActive": true, "name": "Updated Allowance 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.0, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }

Create equipment article

Creates a new equipment article.

Request object
isActive
boolean
Whether or not the equipment is active.

Will be set to true if omitted.

equipmentTypeId
integer
The equipment type id.
model
string
The model.
serialNumber
string
The serial number.
yearOfPurchase
integer
The year of purchase.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
equipmentTypeId
integer
The equipment type id.
model
string
The model.
serialNumber
string
The serial number.
yearOfPurchase
integer
The year of purchase.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/admin/articles/equipment
Example request
{ "isActive": true, "equipmentTypeId": 33, "model": "Model 23", "serialNumber": "SN-123", "yearOfPurchase": 2019, "articleNumber": "234", "cost": 401.00, "description": "Description of new equipment 1", "externalId": "EXT-123", "name": "New Equipment 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.equipment", "equipmentTypeId": 33, "model": "Model 23", "serialNumber": "SN-123", "yearOfPurchase": 2019, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new equipment 1", "externalId": "EXT-123", "isActive": true, "name": "New Equipment 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Update equipment article

Updates an equipment article.

Request parameter
id
required
integer
The id of the article.
Request object
isActive
boolean
Whether or not the equipment is active.

Will be ignored if omitted.

equipmentTypeId
integer
The equipment type id.
model
string
The model.
serialNumber
string
The serial number.
yearOfPurchase
integer
The year of purchase.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
equipmentTypeId
integer
The equipment type id.
model
string
The model.
serialNumber
string
The serial number.
yearOfPurchase
integer
The year of purchase.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request, resulting in updating a resource. The response includes a `Location` header with the URI of the updated resource, and the body contains details about the updated resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/admin/articles/equipment/:id
Example request
{ "isActive": true, "equipmentTypeId": 33, "model": "Model 23", "serialNumber": "SN-123", "yearOfPurchase": 2019, "articleNumber": "234", "cost": 401.00, "description": "Description of updated equipment 1", "externalId": "EXT-123", "name": "Updated equipment 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.equipment", "equipmentTypeId": 33, "model": "Model 23", "serialNumber": "SN-123", "yearOfPurchase": 2019, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of updated equipment 1", "externalId": "EXT-123", "isActive": true, "name": "Updated equipment 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }

Create material article

Creates a new material article.

Request object
isActive
boolean
Whether or not the material is active.

Will be set to true if omitted.

articleGroupId
integer
The article group id.
eAN
string
The EAN code.
isFavorite
required
boolean
Whether it is favorite or not.
manufacturerArticleNumber
string
The manufacturer article number.
manufacturer
string
The manufacturer.
supplierId
integer
The supplier id.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
articleGroupId
integer
The article group id.
eAN
string
The EAN code.
isFavorite
required
boolean
Whether it is favorite or not.
manufacturerArticleNumber
string
The manufacturer article number.
manufacturer
string
The manufacturer.
supplierId
integer
The supplier id.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/admin/articles/material
Example request
{ "isActive": true, "articleGroupId": 123, "ean": "1234567890123", "isFavorite": true, "manufacturerArticleNumber": "123-123", "manufacturer": "Toyota", "supplierId": 123, "articleNumber": "234", "cost": 401.00, "description": "Description of new material 1", "externalId": "EXT-123", "name": "New Material 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.material", "articleGroupId": 56, "ean": "1234567890123", "isFavorite": true, "manufacturerArticleNumber": "123-123", "manufacturer": "Toyota", "supplierId": 123, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new material 1", "externalId": "EXT-123", "isActive": true, "name": "New Material 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 1, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Update material article

Updates a material article.

Request parameter
id
required
integer
The id of the article.
Request object
isActive
boolean
Whether or not the material is active.

Will be ignored if omitted.

articleGroupId
integer
The article group id.
eAN
string
The EAN code.
isFavorite
required
boolean
Whether it is favorite or not.
manufacturerArticleNumber
string
The manufacturer article number.
manufacturer
string
The manufacturer.
supplierId
integer
The supplier id.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
articleGroupId
integer
The article group id.
eAN
string
The EAN code.
isFavorite
required
boolean
Whether it is favorite or not.
manufacturerArticleNumber
string
The manufacturer article number.
manufacturer
string
The manufacturer.
supplierId
integer
The supplier id.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request, resulting in updating a resource. The response includes a `Location` header with the URI of the updated resource, and the body contains details about the updated resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/admin/articles/material/:id
Example request
{ "isActive": true, "articleGroupId": 123, "ean": "1234567890123", "isFavorite": true, "manufacturerArticleNumber": "123-123", "manufacturer": "Toyota", "supplierId": 123, "articleNumber": "234", "cost": 401.00, "description": "Description of updated material 1", "externalId": "EXT-123", "name": "Updated Material 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.material", "articleGroupId": 56, "ean": "1234567890123", "isFavorite": true, "manufacturerArticleNumber": "123-123", "manufacturer": "Toyota", "supplierId": 123, "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of updated material 1", "externalId": "EXT-123", "isActive": true, "name": "Updated Material 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 1, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }

Create time article

Creates new time article.

Request object
isActive
boolean
Whether or not the time article is active.

Will be set to true if omitted.

salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
201 CREATED
Indicates a successful request, resulting in the creation of a new resource. The response includes a `Location` header with the URI of the newly created resource, and the body contains details about the newly created resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
POST /v1/admin/articles/time
Example request
{ "isActive": true, "salaryCode": "1234", "salaryCodeForHour": "12345", "articleNumber": "234", "cost": 401.00, "description": "Description of new time article 1", "externalId": "EXT-123", "name": "New Time Article 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.time", "salaryCode": "1234", "salaryCodeForHour": "12345", "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new time article 1", "externalId": "EXT-123", "isActive": true, "name": "New Time Article 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

Update time article

Update a time article.

Request parameter
id
required
integer
The id of the article.
Request object
isActive
boolean
Whether or not the time article is active.

Will be ignored if omitted.

salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
string
The identity of the item in the source system.

Maximum 200 characters.

name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unitId
required
integer
The unit id that it belongs to.
vatCodeId
required
integer
The VAT code id that it belongs to.
Response object
objectName
string
The name of the object.
salaryCode
string
The salary code.
salaryCodeForHour
string
The salary code for hour.
id
required
integer
The id of the article.
articleNumber
string
The article number.

Maximum 50 characters.

cost
decimal
The cost.

Two decimals places allowed.

description
string
The description.
externalId
required
string
The external id.

Maximum 200 characters.

isActive
required
boolean
Whether or not the article is active.
name
required
string
The name.

Maximum 500 characters.

price
decimal
The price.

Two decimals places allowed.

unit
required
object
The unit that this article belongs to.
vatCode
required
object
The VAT code that this article belongs to.
createdBy
required
object
The user that created this article.
updatedBy
object
The user that last updated this article, if any.
created
required
datetime utc
The date and time of which this article was created.
updated
datetime utc
The date and time of which this article was last updated, if any.
Status codes
200 OK
Indicates a successful request, resulting in updating a resource. The response includes a `Location` header with the URI of the updated resource, and the body contains details about the updated resource.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
PUT /v1/admin/articles/time/:id
Example request
{ "isActive": true, "salaryCode": "1234", "salaryCodeForHour": "12345", "articleNumber": "234", "cost": 401.00, "description": "Description of updated time article 1", "externalId": "EXT-123", "name": "Updated time article 1", "price": 1101.00, "unitId": 817, "vatCodeId": 646 }
Example response
{ "objectName": "article.time", "salaryCode": "1234", "salaryCodeForHour": "12345", "id": 42, "articleNumber": "234", "cost": 401.00, "description": "Description of new time article 1", "externalId": "EXT-123", "isActive": true, "name": "New Time Article 1", "price": 1101.00, "unit": { "objectName": "generic.name_id", "id": 817, "name": "Unit 1" }, "vatCode": { "objectName": "vat.code", "id": 646, "name": "VAT 25%", "code": "25", "vat": 25.00, "isVatFree": false, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "created": "2024-12-03 10:47:38 +00:00", "updated": "2024-12-05 10:47:38 +00:00" }, "createdBy": { "objectName": "generic.name_id", "id": 123, "name": "John Doe" }, "updatedBy": null, "created": "2024-12-03 10:47:38 +00:00", "updated": null }

List booking projects

Gets a list of booking projects.

Paging parameters
page
required
integer
Specifies which page of the list to fetch.
pageSize
integer
Specifies the number of items per page. Can be between 1-100, default is 25.
Sorting parameters
sortBy
string
Specifies which property of the entity to sort by. Valid values are: name bookingNumber isActive startDate endDate createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.createdDateFrom
datetime utc
Filters booking projects where the created date is greater than or equal to this date.
filter.createdDateTo
datetime utc
Filters booking projects where the created date is less than or equal to this date.
filter.updatedDateFrom
datetime utc
Filters booking projects where the updated date is greater than or equal to this date.
filter.updatedDateTo
datetime utc
Filters booking projects where the updated date is less than or equal to this date.
filter.startDateFrom
datetime utc
Filters booking projects where the start date is greater than or equal to this date.
filter.startDateTo
datetime utc
Filters booking projects where the start date is less than or equal to this date.
filter.endDateFrom
datetime utc
Filters booking projects where the end date is greater than or equal to this date.
filter.endDateTo
datetime utc
Filters booking projects where the end date is less than or equal to this date.
filter.isActive
boolean
Filters booking projects according to the set value.
filter.query
string
Filters booking projects by name and booking number.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the booking project.
name
required
string
The name of the booking project.
bookingNumber
required
string
The number of the booking project.
isActive
required
boolean
Whether or not the booking project is active.
startDate
datetime
The start date of the booking project.
endDate
datetime
The end date of the booking project.
createdBy
required
object
The user that created this booking project.
updatedBy
object
The user that last updated this booking project, if any.
created
required
datetime utc
The date and time of which this booking project was created.
updated
datetime utc
The date and time of which this booking project was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code will be produced if the required "page" paging parameter is missing or if any other paging, sorting or filtering parameter has an invalid value.
GET /v1/admin/bookingprojects
Example request
GET /v1/admin/bookingprojects?sortby=name&sortorder=descending&page=1&filter.isactive=true
Response
{ "ObjectName": "generic.pagedlist", "Page": 1, "PageSize": 25, "ItemCount": 1, "TotalItemCount": 1, "TotalPages": 1, "Items": [ { "ObjectName": "bookingproject.detail", "Id": 42, "Name": "Booking Project 1", "BookingNumber": "XYZ", "IsActive": true, "StartDate": null, "EndDate": null, "CreatedBy": { "ObjectName": "generic.name_id", "Id": 1, "Name": "John Doe" }, "UpdatedBy": { "ObjectName": "generic.name_id", "Id": 2, "Name": "Jane Doe" }, "Created": "2024-11-22 10:47:38 +00:00", "Updated": "2024-11-26 10:47:38 +00:00" } ] }

Get booking project by id

Gets a single booking project.

Request parameter
id
required
integer
The id of the booking project.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the booking project.
name
required
string
The name of the booking project.
bookingNumber
required
string
The number of the booking project.
isActive
required
boolean
Whether or not the booking project is active.
startDate
datetime
The start date of the booking project.
endDate
datetime
The end date of the booking project.
createdBy
required
object
The user that created this booking project.
updatedBy
object
The user that last updated this booking project, if any.
created
required
datetime utc
The date and time of which this booking project was created.
updated
datetime utc
The date and time of which this booking project was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/admin/bookingprojects/:id
Example request
GET /v1/admin/bookingprojects/42
Example request
{ "ObjectName": "bookingproject.detail", "Id": 42, "Name": "Booking Project 1", "BookingNumber": "123", "IsActive": true, "StartDate": null, "EndDate": null, "CreatedBy": { "ObjectName": "generic.name_id", "Id": 1, "Name": "John Doe" }, "UpdatedBy": { "ObjectName": "generic.name_id", "Id": 1, "Name": "John Doe" }, "Created": "2024-12-03 10:47:38 +00:00", "Updated": "2024-12-05 10:47:38 +00:00" }

Get booking project by booking number

Gets a single booking project.

Request parameter
bookingNumber
required
string
The number of the booking project.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the booking project.
name
required
string
The name of the booking project.
bookingNumber
required
string
The number of the booking project.
isActive
required
boolean
Whether or not the booking project is active.
startDate
datetime
The start date of the booking project.
endDate
datetime
The end date of the booking project.
createdBy
required
object
The user that created this booking project.
updatedBy
object
The user that last updated this booking project, if any.
created
required
datetime utc
The date and time of which this booking project was created.
updated
datetime utc
The date and time of which this booking project was last updated, if any.
Status codes
200 OK
Indicates a successful request.
400 BAD REQUEST
Indicates a client error. This status code could be produced for a variety of reasons such as missing or invalid required fields, ids that point to resources that do not exist or have the appropriate permissons and so on.
GET /v1/admin/bookingprojects?bookingnumber=:bookingnumber
Example request
GET /v1/admin/bookingprojects?bookingnumber=xyz
Example request
{ "ObjectName": "bookingproject.detail", "Id": 42, "Name": "Booking Project 1", "BookingNumber": "xyz", "IsActive": true, "StartDate": null, "EndDate": null, "CreatedBy": { "ObjectName": "generic.name_id", "Id": 1, "Name": "John Doe" }, "UpdatedBy": { "ObjectName": "generic.name_id", "Id": 1, "Name": "John Doe" }, "Created": "2024-12-03 10:47:38 +00:00", "Updated": "2024-12-05 10:47:38 +00:00" }

Create booking project

Creates new booking project.

Request object
isActive
boolean
Whether or not the booking project is active.

Will be set to true if omitted.

name
required
string
The name of the booking project.
bookingNumber
required
string
The number of the booking project.
startDate
datetime
The start date of the booking project.
endDate
datetime
The end date of the booking project.
Response object
objectName
string
The name of the object.
id
required
integer