Blikk 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 Blikk account and an API-application. Follow the steps in the section below to create an API-application.

Base URL
https://publicapi.blikk.com/

Creating an API-application

If you have an existing Blikk 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": "2022-07-01 05:43:12 +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.tagIds
integer array
Matches contacts whose list of tags contains the specified array of id's.
filter.createdOrUpdatedSince
datetime
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.
name
string
The name 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.
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, "name": "John Doe", "customerNumber": "1", "contactType": "person", "organizationalOrSocialSecurityNumber": null, "visitingAddress": { "objectName": "generic.address", "streetAddress": "Blikkvä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": "2022-07-01 04:43:12 +00:00", "lastUpdated": null } ] }

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 in Blikk.
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 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 in Blikk.
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 in Blikk.
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

Projects

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

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.query
string
Filters articles by project number, name, customer name, project number and project name.
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.
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.
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 }, "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" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-16 04:43:12 +00:00", "updated": 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": "2022-06-22 04:43:12 +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": "2022-06-24 04:43:12 +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": "2022-06-23 04:43:12 +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": "2022-06-21 04:43:12 +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.
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.
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": "2022-06-28 04:43:12 +00:00", "updatedDate": 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.
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": "2022-07-11 04:43:12", "endDate": null, "tagIds": [ 1, 5, 12 ], "memberIds": [ 1, 2 ], "taskBoardColumnId": 1, "projectId": 15 }

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.
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": "2022-07-11 04:43:12", "endDate": null, "tagIds": [ 1, 5, 12 ], "memberIds": [ 1, 2 ], "taskBoardColumnId": 1, "projectId": 15 }

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": "2022-06-29 04:43:12 +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": "2022-07-01 04:43:12 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2022-06-29 04:43:12 +00:00", "updatedDate": null }, { "objectName": "task.checklistitem.detail", "id": 2, "title": "Lorem ipsum 1", "sortOrder": 1, "completedDate": "2022-07-01 04:43:12 +00:00", "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2022-06-29 04:43:12 +00:00", "updatedDate": null } ], "createdByUser": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "createdDate": "2022-06-29 04:43:12 +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": "2022-06-29 04:43:12 +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": "2022-06-30 04:43:12 +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

Time reports

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.from
datetime
Filter time reports where Date is greater than or equal to this.
filter.to
datetime
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.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
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
string
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.
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.
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": null, "clockEnd": null, "hours": 8.0, "invoiceableHours": 7.0, "breakMinutes": null, "cost": 200.0, "rate": 500.0, "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": null, "invoiceId": null, "travelReportId": null, "allowanceReportId": null, "createdDate": "2021-09-15 05:02:04 +00:00", "updatedDate": 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
string
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.
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.0, "invoiceableHours": 7.0, "breakMinutes": null, "cost": 200.0, "rate": 500.0, "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, "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.
companyCar
object
The company car that was used for the travel.
Object "timereport.detail.travelreport"
{ "objectName": "timereport.detail.travelreport", "id": 270, "place": "piteå-luleå-piteå", "invoicablePlace": "piteå-luleå-piteå", "distance": 100.0, "invoicableDistance": 150.0, "toSalary": true, "toBeInvoiced": true, "cost": 10.0, "rate": 15.0, "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, "companyCar": 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.0, "tripEnd": 15250.0, "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.
Object "timereport.detail.allowancereport"
{ "objectName": "timereport.detail.allowancereport", "id": 12, "description": "Lunch", "cost": 200.0, "amount": 250.0, "invoicableAmount": 250.0, "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 }
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.
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.0, "costPerUnit": 100.0, "discountInPercent": null, "invoicableUnits": null, "unitPrice": 125.0, "invoicableUnitPrice": 125.0, "taxPercent": 25.0, "amount": 250.0, "invoicableAmount": 250.0, "cost": 200.0, "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, "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.
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.0, "cost": 20.0, "rate": 30.0, "invoicableRate": 40.0, "invoicableHours": 5.0, "article": { "objectName": "generic.name_id", "id": 45, "name": "Jackhammer" }, "invoiceId": 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.
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.0, "invoicableCount": 2.0, "cost": 20.0, "invoicablePrice": 400.0, "discount": 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.0, "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.0, "invoiceableDistance": 120.0, "toSalary": true, "companyCar": { "id": 1, "tripStart": 15000.0, "tripEnd": 15100.0, "addressStart": "Blikkgatan 1", "addressGoal": "Blikkgatan 2", "addressEnd": "Blikkgatan 1" } }, "allowanceReport": { "allowanceTypeId": 1, "description": "Lorem ipsum dolar sit amet", "toBeInvoiced": true }, "materials": [ { "id": null, "articleId": 55, "articleNumber": "A12", "title": "Lorem ipsum", "unitPrice": 600.0, "invoiceableUnitPrice": 650.0, "units": 4.0, "invoiceableUnits": 5.0, "calculatedUnits": 4.0, "unitText": "st", "cost": 500.0, "discountInPercent": 0.0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": "E01", "title": "Article not in registry", "unitPrice": 300.0, "invoiceableUnitPrice": 300.0, "units": 1.0, "invoiceableUnits": 2.0, "calculatedUnits": 1.0, "unitText": "meter", "cost": 100.0, "discountInPercent": 10.0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": null, "title": "Lorem ipsum dolar sit amet...", "unitPrice": 0.0, "invoiceableUnitPrice": null, "units": 0.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.0 }, { "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.0, "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.0, "invoiceableDistance": 120.0, "toSalary": true, "companyCar": { "id": 1, "tripStart": 15000.0, "tripEnd": 15100.0, "addressStart": "Blikkgatan 1", "addressGoal": "Blikkgatan 2", "addressEnd": "Blikkgatan 1" } }, "allowanceReport": { "allowanceTypeId": 1, "description": "Lorem ipsum dolar sit amet", "toBeInvoiced": true }, "materials": [ { "id": 2, "articleId": 55, "articleNumber": "A12", "title": "Lorem ipsum", "unitPrice": 600.0, "invoiceableUnitPrice": 650.0, "units": 4.0, "invoiceableUnits": 5.0, "calculatedUnits": 4.0, "unitText": "st", "cost": 500.0, "discountInPercent": 0.0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": "E01", "title": "Article not in registry", "unitPrice": 300.0, "invoiceableUnitPrice": 300.0, "units": 1.0, "invoiceableUnits": 2.0, "calculatedUnits": 1.0, "unitText": "meter", "cost": 100.0, "discountInPercent": 10.0, "isTextOnly": false }, { "id": null, "articleId": null, "articleNumber": null, "title": "Lorem ipsum dolar sit amet...", "unitPrice": 0.0, "invoiceableUnitPrice": null, "units": 0.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.0, "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": "2022-07-01 04:43:12 +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": "2022-06-21 04:43:12 +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": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Allowances

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

List allowances

Gets a list of allowances.

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 allowance.
name
string
The name of the allowance.
description
string
The description of the allowance.
isActive
required
boolean
Whether or not the allowance is active and can be used when registering travel.
createdBy
object
The user that created this allowance.
updatedBy
object
The user that last updated this allowance, if any.
created
datetime utc
The date and time of which this allowance was created.
updated
datetime utc
The date and time of which this allowance 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/Allowances
Example request
GET /v1/Admin/Allowances?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "allowance.list", "id": 1, "name": "Lorem ipsum", "description": "Lorem ipsum dolar sit amet", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Articles

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

List articles

Gets a list of articles.

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 articleNumber createdDate updatedDate
sortOrder
string
Specifies the sorting order. Valid values are: ascending descending
Filter parameters
filter.query
string
Filters articles 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
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "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": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Company cars

Available operations to the registry of company cars are listed to the right.

List company cars

Gets a list of company cars.

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 company car.
name
string
The name of the company car.
isActive
required
boolean
Whether or not the company car is active and can be used.
makeAndModel
string
The make and model of the company car.
registrationNumber
string
The registration number of the company car.
type
string
The type of company car. Valid values are: companyCar officalCar
createdBy
object
The user that created this company car.
updatedBy
object
The user that last updated this company car, if any.
created
datetime utc
The date and time of which this company car was created.
updated
datetime utc
The date and time of which this company car 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/CompanyCars
Example request
GET /v1/Admin/CompanyCars?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "companycar.list", "id": 1, "name": "Lorem ipsum", "isActive": true, "makeAndModel": "BMW 320 GT", "registrationNumber": "ABC123", "type": "CompanyCar", "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Contact tags

Available operations to the registry of contact tags are listed to the right.

List contact tags

Gets a list of countries.

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
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 tag.
title
string
The display name of the tag.
color
string
The color in HEX-format.
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/ContactTags
Example request
GET /v1/Admin/ContactTags?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "generic.tag", "id": 1, "title": "Good customer", "color": "#41b18b" } ] }

Countries

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

List countries

Gets a list of countries.

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 country.
name
string
The name of the country.
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/Countries
Example request
GET /v1/Admin/Countries?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "country.list", "id": 1, "name": "Sverige" } ] }

Equipments

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

List equipments

Gets a list of equipments.

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 equipment.
name
string
The name of the equipment.
description
string
The description of the equipment.
isActive
required
boolean
Whether or not the equipment is active and can be used.
type
object
The type of equipment.
createdBy
object
The user that created this equipment.
updatedBy
object
The user that last updated this equipment, if any.
created
datetime utc
The date and time of which this equipment was created.
updated
datetime utc
The date and time of which this equipment 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/Equipments
Example request
GET /v1/Admin/Equipments?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "equipment.list", "id": 1, "name": "Lorem ipsum", "description": "Lorem ipsum dolar sit amet", "isActive": true, "type": { "objectName": "generic.name_id", "id": 1, "name": "Lorem ipsum" }, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Internal projects

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

List internal projects

Gets a list of internal 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 internal project.
name
string
The name of the internal project.
commentRequiredWhenTimeReporting
required
boolean
Whether or not a comment is required when registering time for this internal project.
isActive
required
boolean
Whether or not this internal project is active.
createdBy
object
The user that created this internal project.
updatedBy
object
The user that last updated the internal project.
created
datetime utc
The date and time of which this internal project was created.
updated
datetime utc
The date and time of which this internal 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/InternalProjects
Example request
GET /v1/Admin/InternalProjects?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "internalproject.list", "id": 1, "name": "Lorem ipsum", "commentRequiredWhenTimeReporting": false, "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Time additions

Available operations to the registry of time additions are listed to the right.

List time additions

Gets a list of time additions.

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 time addition.
name
string
The name of the time addition.
description
string
The description of the time addition.
type
string
The type of time addition.
isActive
required
boolean
Whether or not the time addition is active and can be used.
createdBy
object
The user that created this time addition.
updatedBy
object
The user that last updated this time addition, if any.
created
datetime utc
The date and time of which this time addition was created.
updated
datetime utc
The date and time of which this time addition 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/TimeAdditions
Example request
GET /v1/Admin/TimeAdditions?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 2, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "timeaddition.list", "id": 1, "name": "Lorem ipsum", "description": "Lorem ipsum dolar sit amet", "type": "boolean", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null }, { "objectName": "timeaddition.list", "id": 2, "name": "Lorem ipsum dolar", "description": "Lorem ipsum dolar sit amet", "type": "number", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-23 04:43:12 +00:00", "updated": null } ] }

Time articles

Available operations to the registry of time articles are listed to the right.

List time articles

Gets a list of time articles.

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 time article.
name
string
The name of the time article.
description
string
The description of the time article.
isActive
required
boolean
Whether or not the time article is active and can be used when registering time.
createdBy
object
The user that created this time article.
updatedBy
object
The user that last updated this time article, if any.
created
datetime utc
The date and time of which this time article was created.
updated
datetime utc
The date and time of which this time 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/TimeArticles
Example request
GET /v1/Admin/TimeArticles?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "timearticle.list", "id": 1, "name": "Lorem ipsum", "description": "Lorem ipsum dolar sit amet", "isActive": true, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Time codes

Available operations to the registry of time codes are listed to the right.

List time codes

Gets a list of time codes.

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 time code.
name
string
The name of the time code.
description
string
The description of the time code.
isActive
required
boolean
Whether or not the time code is active and can be used when registering time.
isStandard
required
boolean
Whether or not this time code is the standard time code when registering time.
createdBy
object
The user that created this time code.
updatedBy
object
The user that last updated this time code, if any.
created
datetime utc
The date and time of which this time code was created.
updated
datetime utc
The date and time of which this time code 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/TimeCodes
Example request
GET /v1/Admin/TimeCodes?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "timecode.list", "id": 1, "name": "Lorem ipsum", "description": "Lorem ipsum dolar sit amet", "isActive": true, "isStandard": false, "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "updatedBy": null, "created": "2022-06-21 04:43:12 +00:00", "updated": null } ] }

Users

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

List users

Gets a list of users.

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.query
string
Filter users by text query.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the user.
firstName
string
The first name of the user.
lastName
string
The last name of the user.
startDate
datetime
The date that the user started it's employment.
endDate
datetime
The date that the user ended it's employment.
timeReportingProfile
object
The time reporting profile that the user uses.
department
object
The department of which the user belongs to, if any.
license
string
The license that the user has. Valid values are: total standard basic light
permissions
string array
A list of permissions that the user has.
createdBy
object
The user who created this user.
updatedBy
object
The user who last updated this user, if any.
createdDate
datetime utc
The date and time of which this user was created.
updatedDate
datetime utc
The date and time of which this user 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/Users
Example request
GET /v1/Admin/Users?page=1
Response
{ "objectName": "generic.pagedlist", "page": 1, "pageSize": 25, "itemCount": 1, "totalItemCount": 1, "totalPages": 1, "items": [ { "objectName": "user.list", "id": 2, "firstName": "John", "lastName": "Doe", "startDate": "2021-02-01", "endDate": "2022-02-15", "timeReportingProfile": { "objectName": "generic.name_id", "id": 5, "name": "Default profile" }, "department": { "objectName": "generic.name_id", "id": 1, "name": "Developers" }, "license": "total", "permissions": [ "administrator", "sales" ], "createdBy": { "objectName": "generic.name_id", "id": 1, "name": "Jane Doe" }, "updatedBy": null, "createdDate": "2022-06-11 04:43:12 +00:00", "updatedDate": null } ] }

Get user

Gets a single user.

Request parameters
id
required
integer
The id of the user.
Response object
objectName
string
The name of the object.
id
required
integer
The id of the user.
firstName
string
The first name of the user.
lastName
string
The last name of the user.
license
string
The license that the user has. Valid values are: total standard basic light
email
string
The email of the user.
socialSecurityNumber
string
The social security number of the user.
mobilePhoneNumber
string
The mobile phone number of the user.
workPhoneNumber
string
The work phone number of the user.
note
string
A note about the user.
startDate
datetime
The date that the employment started, if any.
endDate
datetime
The date that the employment ended, if any.
department
object
The department of which the user belongs to, if any.
costCenter
object
The cost center that this user is connected to, if any.
salaryType
string
The salary type of the user. Valid values are: none hourly monthly
costPerHour
decimal
An estimate of the cost per hour, if any.
employeeNumber
string
The employee number, if any.
settlementAccount
string
The settlement account that this user is connected to, if any.
address
object
The personal address of the user, if any.
nextOfKin
string
The name of the next of kin contact, if any.
nextOfKinRelation
string
The relation of the next of kin contact, if any.
nextOfKinPhoneNumber
string
The phone number of the next of kin contact, if any.
manager
object
The manager for this user.
schedule
object
The current schedule for the user, if any.
standardTimeArticle
object
The standard time article used by the user.
standardActivity
object
The standard activity used by the user.
timeReportingProfile
object
The time reporting profile that the user has.
timeBankEnabled
required
boolean
Whether or not the time bank is enabled.
currentTimeBank
decimal
The currently accumulated time bank, if any.
planningCapacityInPercent
decimal
The planning capacity of the user in percent, if any.
tags
object array
A list of tags that the user has.
permissions
string array
A list of permissions that the user has.
createdBy
object
The user who created this user.
updatedBy
object
The user who last updated this user, if any.
createdDate
datetime utc
The date and time of which this user was created.
updatedDate
datetime utc
The date and time of which this user 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/Users/:id
Example request
GET /v1/Admin/Users/1
Response
{ "objectName": "user.detail", "id": 1, "firstName": "John", "lastName": "Doe", "license": "Total", "email": "john.doe@test.com", "socialSecurityNumber": null, "mobilePhoneNumber": "+46701234567", "workPhoneNumber": null, "note": "This is a note about this user", "startDate": "2021-12-01", "endDate": null, "department": { "objectName": "generic.name_id", "id": 1, "name": "Developers" }, "costCenter": null, "salaryType": "Monthly", "costPerHour": 450.0, "employeeNumber": "12", "settlementAccount": null, "address": null, "nextOfKin": null, "nextOfKinRelation": null, "nextOfKinPhoneNumber": null, "manager": { "objectName": "generic.name_id", "id": 1, "name": "John Doe" }, "schedule": { "objectName": "generic.name_id", "id": 1, "name": "Full time" }, "standardTimeArticle": { "objectName": "generic.name_id", "id": 1, "name": "Consulting" }, "standardActivity": { "objectName": "generic.name_id", "id": 1, "name": "Project management" }, "timeReportingProfile": { "objectName": "generic.name_id", "id": 1, "name": "Base reporting profile" }, "timeBankEnabled": false, "currentTimeBank": null, "planningCapacityInPercent": null, "tags": null, "permissions": [ "administrator" ], "createdBy": null, "updatedBy": null, "createdDate": "2021-12-15 09:24:13 +00:00", "updatedDate": null }