Download OpenAPI specification:Download
Version | Description |
---|---|
22.0.0 | Added LastUpdated property to Project Activities . |
21.0.1 | Updated descriptions for timeentry prices. |
21.0.0 | Added OtherReference property to Project endpoints. |
20.0.1 | Updated descriptions for model properties. |
20.0.0 | Customer contacts and delivery locations endpoints deprecated. You can find the same enpoints in Customers API |
19.0.0 | Page-based endpoints were moved under /paged url and cursor-based endpoints dropped the /all. |
18.0.0 | Added isDeleted flag to customer-contacts and included deleted contacts in the response. Deleted contacts can be used for history purposes, but cannot be set as reference persons on sales documents. In previous versions only customer-contacts/id returns deleted contacts as well. |
17.0.2 | TimeEntryEmployeeNumberCannotBeUpdated and MileageEmployeeNumberCannotBeUpdated error codes removed. The change affects all versions, but we bumped the version for transparency. |
17.0.1 | New custom OpenAPI extension added in the specification: x-error-codes . Existing x-required-roles extension converted to an array of strings. |
17.0.0 | Improved the error model. Added code and property fields to the model. code represents the error code. property is the field name on which the input validation failed. |
16.4.0 | customer-deliverylocations endpoints added. |
16.3.0 | customer-contacts endpoints added. |
16.2.2 | Added input validations for required string properties, if a string property is required it can't be empty, it should contain at least 1 character. |
16.2.1 | Error codes extended for mileages and timeentries . Affects all the exisiting versions. |
16.2.0 | - employeegroups DELETE endpoint added. - employees DELETE endpoint added. - project-employeegroups DELETE endpoint added. - project-employees DELETE endpoint added. |
16.1.0 | Time entry prices and Mileage entry prices endpoints added. |
16.0.0 | Changed parameter schema for mileages and timeentries approve endpoints. |
15.0.0 | Added cost and sales accounts properties in activitygroups endpoints. |
14.1.3 | - Added new filter for IsAccessible in activities endpoints. - Added new filter for IsBarred in costtypes endpoints. |
14.1.2 | - Added input validations for activitygroups . - Updated description for projectgroups properties. |
14.1.1 | Added input validations for projectgroups . |
14.1.0 | project-employees-count endpoint added. |
14.0.0 | - project-activities endpoints added. - projects/activities have been deprecated. |
13.2.0 | costtypegroups endpoints added. |
13.1.0 | costtypes endpoints added. |
13.0.0 | - projectgroups POST endpoint added, Number made non-required,- activitygroups POST endpoint added, Number made non-required. |
12.0.0 | projects Number made non-required. |
11.0.0 | employees Number made required. |
10.1.2 | API version number moved to the server URL. |
10.1.1 | - activities employeeNumber maximum value changed to 999999. - projects employeeNumber maximum value changed to 999999. |
10.1.0 | project-employees POST endpoint added. |
10.0.0 | - activities POST and PUT endpoints added. - activitygroups GET endpoints added. - Object version field added to activities , projectstatuses and projectgroups endpoints. |
9.0.0 | Project related settings for employee resource renamed as Project employee . |
8.1.0 | project-customers endpoints added. |
8.0.0 | - employeegroups endpoints added: GET all paginated, GET count, POST and PUT. - project-employeegroups endpoints added: GET all paginated, GET all cursor-based, GET count, GET by number, POST and PUT. - Object version field added to employee groups endpoints. |
7.0.0 | Projects related settings for employee extended with new fields for Name, GroupNumber and IsBarred. |
6.0.0 | Readonly property IsReconciled added to TimeEntries endpoint. |
5.1.0 | Project delete endpoint added. |
5.0.0 | - Project-related properties such as isUser , userId , canApprove , canInvoice , employeeType in /employees moved to /project-employees . - Properties lastUpdated , costPrice , salesPrice and invoicedtotal in /projects changed to readonly.- Property date in /timeentries changed to mandatory.- Access permission to /employees changed to requiring access to Sales .- PUT endpoints for /timeentries/{number} , /employees/{number} , /employeeprojectrelatedsettings/{number} have been deprecated and new ones without {number} in the URL have been added. |
4.0.0 | project.CustomerNumber made non-required, range check introduced. |
3.1.0 | Error messages of time entry approval improved, timeEntry.IsApproved , mileage.IsApproved and mileage.IncludeApproval made read-only. |
3.0.0 | mileage.Date made required. Verification for mileage.EmployeeNumber and mileage.Distance added. |
2.2.2 | Range check introduced in projects.Number , employee.Number and employeeGroup.Number . |
2.2.1 | Employees PATCH endpoint deprecated. |
2.2.0 | employeegroups/all and employeegroups/{number} endpoints added. |
2.1.0 | /activities/allowed endpoint added to get allowed activities for an employee and project. |
2.0.0 | Open API released! Endpoints related to Projects module added. |
Add these three headers to your requests.
Header | Value | What is this? |
---|---|---|
X-AppSecretToken | YOUR_PRIVATE_TOKEN | This identifies your app. This is your secret token. Try using the value demo . |
X-AgreementGrantToken | YOUR_AGREEMENT_GRANT_TOKEN | This identifies the grant issued by an agreement, to allow your app to access the agreements data. Try using the value demo . |
Content-Type | application/json | We’re a JSON based API. This tells us that you agree with us on using JSON. |
Optional headers:
Header | Value | What is this? |
---|---|---|
Idempotency-Key | YOUR_IDEMPOTENCY_KEY | This represents your own unique idempotency key. Enables you to make use of our Idempotency Tokens feature. You can't use this feature with GET requests. |
$.ajax({
url: "https://apis.e-conomic.com/api/v22.0.0/projects",
dataType: "json",
headers: {
'X-AppSecretToken': "demo",
'X-AgreementGrantToken': "demo",
'Content-Type': "application/json"
},
type: "GET"
})
.always(function (data) {
$("#output").text(JSON.stringify(data, null, 4));
});
curl -H "X-AppSecretToken: demo" -H "X-AgreementGrantToken: demo" https://apis.e-conomic.com/api/v22.0.0/projects
Welcome to the Visma e-conomic OpenAPI documentation!
The e-conomic API is a document-based JSON REST API.
For more in-depth information about e-conomic itself, please have a look at the e-copedia http://wiki.e-conomic.dk.
API releases are versioned using a three-part versioning scheme: {major version}.{minor version}.{patch version}
.
We broadly follow Semantic Versioning principles when versioning the API. The major version number is incremented when a breaking change occurs.
The format is:
/api/v{major version}.{minor version}.{patch version}/{resource-name}
Each value of the above are integers and you should configure the specific version in each API call.
An example could be: /api/v2.2.1/projects
To track the changes of versions, please see our changelog.
We reserve the right to deprecate versions at intervals since this allows for moving into a friendly environment for you faster.
If you wish to try out the API before registering a developer agreement, you can do this by using the demo agreement, which mimics the authentication flow you will have to use when you create your app. All you have to do is specify HTTP header tokens X-AgreementGrantToken: demo
and X-AppSecretToken: demo
. Note however that you can only do GET requests with the demo agreement. If you want full access to our API's, you will need to register.
Our data is exposed as collections of items. Each item has many properties, with one property as a unique identifier, usually called number
or id
. You can always get a single item if you already know the unique identifier. In case the unique identifier is not known, you can always search the collection and retrieve an array of items that satisfy the search criteria, or retrieve only the count of items that satisfy the search criteria. When you search for items in a collection, you can always use filtering, sorting and pagination. When it comes to pagination, we offer two distinct approaches available on separate endpoints. You can read more about filtering, sorting and pagination in the following sections.
Filtering is enabled on all collection endpoints but not on all properties.
Filtering on collections can be done using the query string parameter filter
. A filter is made up of a set of predicates and follows a syntax inspired by mongoDB. A predicate is made up of a property name, an operator, and a value.
Example: ?filter=name$eq:Joe
This matches all resources with the value Joe in the property name.
Predicates can be chained using either of the logical operators AND and OR.
Example: ?filter=name$eq:Joe$and:city$like:*port
Filtering on strings is case insensitive.
Information about what properties allow filtering and on what operators can be found in the property in the schema for the collection. Each property that allows filtering has the property "x-filterable"
in combination with operators
set. If you try to filter on something that isn’t allowed the server will respond with a status code 400.
If you want to control the operator affinity then you can use parentheses.
An example is: ?filter=name$eq:Joe$and:(city$like:*port$or:age$lt:40)
URL parameter values should always be URL compatible. Always URL encode filter strings.
The possible filtering operators are:
Operator | Syntax |
---|---|
Equals | $eq: |
Not equals | $ne: |
Greater than | $gt: |
Greater than or equal | $gte: |
Less than | $lt: |
Less than or equal | $lte: |
Substring match | $like: |
And also | $and: |
Or else | $or: |
In | $in: |
Not In | $nin: |
The $like:
operator supports both using wildcards (*) and not using wildcards. If no wildcards are used, the expression is considered a contains
expression and effectively becomes a filter with a wildcard at the start of the string and one at the end of the string. This operator is only allowed on some properties.
To not interfere with the parsing of the filter expression, certain escape sequences are necessary.
Should you want to filter for the nonexistence of a property (i.e. null value) you can use the null escape sequence.
$null:
To determine whether a specified value matches any value in (or not in) a list you filter using the $in:
or $nin:
operator. The list to filter by has to be enclosed in brackets and values separated by commas.
customerNumber$in:[2,5,7,22,45]
It is possible to also use the $null:
keyword if you wish to include that in the filter. The max supported length of an array using the $in:
or $nin:
operator is 200.
Sorting on strings is case insensitive.
Sorting on collections can be done using the query string parameter ‘sort’.
?sort=name
The default sort direction is ascending, but this can be turned by prepending a minus (-).
?sort=-name
If you need to sort by multiple properties these can just be separated by commas. Mixing of directions is allowed.
?sort=-name,age
In certain cases, you might want to enforce that even numeric values are sorted alphabetically, so 1000 is less than 30. In those cases, you can prepend the sort property with a tilde (~).
?sort=~name
Information about what properties are sortable can be found in the schema for the collection. Each property that allows sorting has the property "x-sortable": true
set.
When it comes to retrieving a collection of items, you can use two distinct approaches:
Cursor-based pagination (continued loading of items using a cursor
as a query parameter to get the next page of items)
Items
". (Usage: /{ITEM}?cursor={CURSOR_VALUE}
)Classic pagination (limited functionality*. Specify skippages
and pagesize
as query parameters to get a specific page of items)
Items
". (Usage: /{ITEM}/paged?skippages=0&pagesize=20
)Please bear in mind that the two approaches are supported by separate endpoints. To use classic pagination, add /paged
to your request URL.
If you need to know the total count of items that you can expect to get from your search, you can use a separate endpoint called "Retrieve the number of Items
".
You can also use the result of this endpoint to calculate the pagination navigation buttons for a table/grid-based UI.
We highly recommend that you use cursor-based pagination because:
When you search for items in a large collection, the response will contain the first 1.000 items and a cursor
that you can use in a subsequent request to get the next series of items. This way you can retrieve the next set of items only when needed (if 1.000 items suffice, you don't need to send a second request).
Please note that the cursor is currently the id
of the first item
on the next set and it should not be mistaken for the number of items which are yet to be displayed.
Also, if the cursor is not present in the response, it means that there are no more items in the results.
I want to retrieve all projects.
I send a request to https://apis.e-conomic.com/api/v22.0.0/projects
and get back an array of 1.000 projects, and a cursor
with value 34781
I send a request for the next items in the resulting collection:https://apis.e-conomic.com/api/v22.0.0/projects?cursor=34781
and get back an array of 1.000 projects and a cursor with value 87695
I send a request for the next items in the result:https://apis.e-conomic.com/api/v22.0.0/projects?cursor=87695
and get back an array of 56 items and no cursor.
No cursor means I have retrieved all the projects, i.e. I have reached the end of the list.
If no parameters are used, the collection endpoint returns 20 items at a time. URL parameters allow you to increase this to up to 100 items or to skip pages if necessary.
I want to show a grid with page size of 50 and pagination navigation buttons.
I send a request to see how many projects there are in the collection:https://apis.e-conomic.com/api/v22.0.0/projects/count
I get the number of projects in the collection, 2056
, and I can calculate the number of pages to be 2056 divided by 50 = 40 with 6 as remainder, meaning I have 41 pages total. I can then use this to present the user the navigation buttons.
I send a request to retrieve the first page of projects that my user will see:https://apis.e-conomic.com/api/v22.0.0/projects/paged?pagesize=50&sort=name
with this I get back an array of 50 projects, sorted alphabetically by the project name.
Now if the user wants to see page number 6, I'll send a new request, skipping the first 5 pages to get the projects from page number 6:https://apis.e-conomic.com/api/v22.0.0/projects/paged?pagesize=50&skippages=5&sort=name
I get back an array of 50 projects, that belong to page number 6 when sorting alphabetically by the project name.
As mentioned before we offer endpoint to get the count of items in the collection. You can also use this info for calculation of pagination navigation in case of classic pagination.
Example https://apis.e-conomic.com/api/v22.0.0/projects/count
The Open API returns these HTTP status codes.
Code | Text | Description |
---|---|---|
200 | OK | Everything is OK |
201 | Created | When you create resources, this is what you get. This will be accompanied by the created resource in the body and a location header with a link to the created resource. |
204 | No Content | In certain cases there is nothing to return. So we will let you know by returning a 204. |
400 | Bad Request | The request you made was somehow malformed. A malformed request could be failed validation on creation or updating. If you try to filter on something that isn’t filterable this is also what you’ll see. Whenever possible we will also try to include a developer hint to help you get around this issue. |
401 | Unauthorized | The credentials you supplied us with weren’t correct, or perhaps you forgot them altogether. If an agreement has revoked the grant they gave your app, this is what you will see. |
403 | Forbidden | You won’t necessarily have access to everything. So even though you were authorized we might still deny access to certain resources. This depends on the roles asked for when the grant was issued. |
404 | Not Found | This is returned when you try to request something that doesn’t exist. This could be a resource that has been deleted or just a URL you tried to hack. If you see a lot of these, it could be an indication that you aren’t using the links provided by the API. You should never need to concatenate any URLs. The API should provide you with the links needed. |
405 | Method Not Allowed | Not all endpoints support all HTTP methods. If you try issue a PUT request to a collection resource this is what you get. |
415 | Unsupported Media Type | Our API is a JSON api. If you ask us to give you anything else, we give you this, and tell you why in the JSON body of the response. |
500 | Internal Server Error | We don’t like to see these, and they are flagged in our logs. When you see this, something went wrong on our end. Either try again, or contact our support. |
Since OpenAPI allows client generation based on the specification, we decided to use the same model/schema in our for both read and write endpoints where possible.
This led us to chose not to have the Id/Number in the URL parameter for PUT requests, but to use the one from the body, so there is no confusion.
When a property is marked as required
it means you need to provide a value on each POST and PUT requests.
When a property is marked as readonly
it means you should provide the same value you get in the GET requests, or do not send the property in the JSON at all (skip it).
For some resource ids (the direct URL path to a resource) the question of non-alphanumeric characters must be solved in REST APIs by either encoding or replacement to ensure URL compatibility.
In the e-conomic REST API a subset of non-alphanumeric characters are replaced using a custom scheme for resource URLs:
Character | Replacement |
---|---|
“<” | 0 |
“>” | 1 |
“*” | 2 |
“%” | 3 |
“:” | 4 |
“&” | 5 |
“/” | 6 |
“\” | 7 |
“_” | 8 |
“ ” (whitespace) | 9 |
“?” | 10 |
“.” | 11 |
“#” | 12 |
“+” | 13 |
Example: Product “My Awesome Product_Discount5%” Resource URL (self): https://apis.e-conomic.com/products/My_9_Awesome_9_Product_8_Discount5_3_
All other non-alphanumeric characters in resource URLs are standard URL encoded. Please refer to standard URL encoding for characters not mentioned above.
Helpful details to know when implementing e-conomic REST.
Booleans should only be expected to be represented in responses when true. A false boolean is omitted from response body. The same logic applies to write operations such as POST and PUT.
Null values are omitted from the response body.
We do not generally accept null as a value and a validation exception should be expected. To null a property you must exclude it from your JSON on the write operation.
ObjectVersion is the mechanism that enforces updates only on latest state of an object.
ObjectVersion property is mandatory in Put Requests.
ObjectVersion property is retrieved on Get Request and needs to be included in Put Request.
If object was modified between Get and Put requests, Put request will fail with error code 409 Conflict
{
"message": "Update conflict. Version does not match.",
"developerHint": "The resource has been updated by another user. Retrieve the resource/object and try the update again. This is needed in order to prevent you from rolling back another user's update.",
"logId": "09580053-1141-4e7f-85e1-bed8600e0278",
"logTimeUtc": "2021-11-04T09:07:56",
"property": "version"
}
Idempotency tokens are unique keys that help maintain the integrity of operations on the API’s. These tokens prevent accidental duplication of requests, ensuring that the same operation is not performed multiple times, even if the same request is sent repeatedly.
When making a request, you can set Idempotency-Key
header with your own unique value for that specific request. In case of a network failure, if you don't get the response, you can retry the request with the same value for the header. Our system will prevent duplicate requests, instead you will get the original response from our cache.
Keep in mind that this is cached for only one hour window.
When we return a response from the cache, we set a response header X-ResultFromCache
to true.
It’s important to note that you will be responsible for generating and keeping track of these keys.
The Idempotency Tokens feature is not available for GET requests.
In the specification file, there are some custom extensions that developers can make use of when consuming endpoints.
Those extensions are always prefixed by x-
.
x-required-roles
: The list of roles that are required for each group of endpoints.x-error-codes
: The list of error codes that are potentially returned from each group of endpoints.Activities
provide the means to set custom prices for the time Employees
spend working on a Project
.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
ActivityNumberAlreadyExists | Activity cannot be created since the given number already exists. |
ActivityGroupNumberDoesNotExist | Activity cannot be created or updated since the given group does not exist. |
ActivityNameNullOrEmpty | Activity cannot be created or updated since its name cannot be null or empty. |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a page of Activities.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
groupNumber required | integer <int32> The number of the activity group that the activity belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceMarkupPercentage | number or null <double> Property used to adjust the cost price of the time registered on the activity. The cost price of the time entry is calculated as follows: CostPrice = (employee costPrice + activity costPriceMarkupPercentage) x time entry numberOfHours. Filterable: not filterable Sortable: false |
cutoffDate | string or null <date-time> The date when the salesPriceBefore stops having effect and gets replaced with salesPriceAfter. Filterable: not filterable Sortable: false |
hideInSearch | boolean Flag indicating if an activity should be hidden from employees when they create a time entry in the e-conomic UI. Filterable: not filterable Sortable: false |
inLieuCode | integer <int32> If time in lieu is used, this defines which code the activity should utilize when registered upon. Filterable: not filterable Sortable: false |
isAccessible | boolean Flag indicating if time entries can be registered on the activity or not. It should be set to true if you want to be able to acess the activity. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The price for a given activity to be applied after the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
salesPriceBefore | number or null <double> The price for a given activity to be applied until the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome activity"
}
]
Use this endpoint to retrieve all Activities in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (Activity) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Activity.
groupNumber required | integer <int32> The number of the activity group that the activity belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceMarkupPercentage | number or null <double> Property used to adjust the cost price of the time registered on the activity. The cost price of the time entry is calculated as follows: CostPrice = (employee costPrice + activity costPriceMarkupPercentage) x time entry numberOfHours. Filterable: not filterable Sortable: false |
cutoffDate | string or null <date-time> The date when the salesPriceBefore stops having effect and gets replaced with salesPriceAfter. Filterable: not filterable Sortable: false |
hideInSearch | boolean Flag indicating if an activity should be hidden from employees when they create a time entry in the e-conomic UI. Filterable: not filterable Sortable: false |
inLieuCode | integer <int32> If time in lieu is used, this defines which code the activity should utilize when registered upon. Filterable: not filterable Sortable: false |
isAccessible | boolean Flag indicating if time entries can be registered on the activity or not. It should be set to true if you want to be able to acess the activity. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The price for a given activity to be applied after the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
salesPriceBefore | number or null <double> The price for a given activity to be applied until the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome activity"
}
{- "number": 0
}
Use this endpoint to update a single Activity.
groupNumber required | integer <int32> The number of the activity group that the activity belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceMarkupPercentage | number or null <double> Property used to adjust the cost price of the time registered on the activity. The cost price of the time entry is calculated as follows: CostPrice = (employee costPrice + activity costPriceMarkupPercentage) x time entry numberOfHours. Filterable: not filterable Sortable: false |
cutoffDate | string or null <date-time> The date when the salesPriceBefore stops having effect and gets replaced with salesPriceAfter. Filterable: not filterable Sortable: false |
hideInSearch | boolean Flag indicating if an activity should be hidden from employees when they create a time entry in the e-conomic UI. Filterable: not filterable Sortable: false |
inLieuCode | integer <int32> If time in lieu is used, this defines which code the activity should utilize when registered upon. Filterable: not filterable Sortable: false |
isAccessible | boolean Flag indicating if time entries can be registered on the activity or not. It should be set to true if you want to be able to acess the activity. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The price for a given activity to be applied after the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
salesPriceBefore | number or null <double> The price for a given activity to be applied until the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome activity"
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Call this endpoint to get the number of Activities. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Use this endpoint to load a single Activity by id/number.
number required | integer <int32> |
groupNumber required | integer <int32> The number of the activity group that the activity belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceMarkupPercentage | number or null <double> Property used to adjust the cost price of the time registered on the activity. The cost price of the time entry is calculated as follows: CostPrice = (employee costPrice + activity costPriceMarkupPercentage) x time entry numberOfHours. Filterable: not filterable Sortable: false |
cutoffDate | string or null <date-time> The date when the salesPriceBefore stops having effect and gets replaced with salesPriceAfter. Filterable: not filterable Sortable: false |
hideInSearch | boolean Flag indicating if an activity should be hidden from employees when they create a time entry in the e-conomic UI. Filterable: not filterable Sortable: false |
inLieuCode | integer <int32> If time in lieu is used, this defines which code the activity should utilize when registered upon. Filterable: not filterable Sortable: false |
isAccessible | boolean Flag indicating if time entries can be registered on the activity or not. It should be set to true if you want to be able to acess the activity. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The price for a given activity to be applied after the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
salesPriceBefore | number or null <double> The price for a given activity to be applied until the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome activity"
}
Use this endpoint to get all the activities that the employee is allowed to register an entry on for a given project. Potential restrictions of registration are based on recording rules in the UI, which cannot be modified through the API. Add the employee number and project to your query parameter to obtain the allowed activities for registrations.
employeeNumber required | integer <int32> [ 1 .. 999999 ] The employee number. |
projectNumber required | integer <int32> [ 1 .. 999999999 ] The project number. |
groupNumber required | integer <int32> The number of the activity group that the activity belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceMarkupPercentage | number or null <double> Property used to adjust the cost price of the time registered on the activity. The cost price of the time entry is calculated as follows: CostPrice = (employee costPrice + activity costPriceMarkupPercentage) x time entry numberOfHours. Filterable: not filterable Sortable: false |
cutoffDate | string or null <date-time> The date when the salesPriceBefore stops having effect and gets replaced with salesPriceAfter. Filterable: not filterable Sortable: false |
hideInSearch | boolean Flag indicating if an activity should be hidden from employees when they create a time entry in the e-conomic UI. Filterable: not filterable Sortable: false |
inLieuCode | integer <int32> If time in lieu is used, this defines which code the activity should utilize when registered upon. Filterable: not filterable Sortable: false |
isAccessible | boolean Flag indicating if time entries can be registered on the activity or not. It should be set to true if you want to be able to acess the activity. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The price for a given activity to be applied after the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
salesPriceBefore | number or null <double> The price for a given activity to be applied until the CutOffDate. The activity sales price determines the sales price of a time entry - the time that an employee spends working on a project. Filterable: not filterable Sortable: false |
Activity Groups
allow for the classification of activities as:
Productive activities are activities with economic value.
The distinction between invoiceable and non-invoiceable is whether time entries registered on an activity are to be considered billable to the user's customer or not.
Additionally, activity groups determine if registrations on an activity should have an impact on the financial accounting or not.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
ActivityGroupCannotBeCreatedUpdatedNumberAlreadyExists | Activity group cannot be created since the given number already exists. |
ActivityGroupCannotBeCreatedUpdatedCostDataInvalid | Activity group cannot be created or updated. If includeCostPriceInFinance is true, then costAccountOngoingType, costAccountOngoing, costContraAccountOngoing and costAccountClosed are required, otherwise they should be ommited. |
ActivityGroupCannotBeCreatedUpdatedSalesDataInvalid | Activity group cannot be created or updated. If includeSalesPriceInFinance is true, then salesAccountOngoingType, salesAccountOngoing, salesContraAccountOngoing and salesAccountClosed are required, otherwise they should be ommited. |
ActivityGroupCannotBeCreatedUpdatedAccountDoesNotExist | Activity group cannot be created or updated. The account does not exist. |
ActivityGroupCannotBeCreatedUpdatedAccountIsBarred | Activity group cannot be created or updated. The account is barred. |
ActivityGroupCannotBeCreatedUpdatedAccountIsOfWrongType | Activity group cannot be created or updated. The type of the account needs to be either Balance or Profit & Loss . |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Activity Group by id/number.
number required | integer <int32> |
name required | string [ 0 .. 100 ] characters The name of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
type required | integer <int32> Enum: 1 2 3 The activity group type determines whether a customer can be invoiced for the time entries registered on an activty or not.
|
costAccountClosed | integer or null <int32> The account number to register costs for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoing | integer or null <int32> The account number to register costs for ongoing activities. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for booking the revenue from ongoing activities:
If includeCostPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
costContraAccountOngoing | integer or null <int32> The contra account number to register costs for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
includeCostPriceInFinance | boolean Flag indicating if activity costs are to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
includeSalesPriceInFinance | boolean Flag indicating if the activity revenue is to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesAccountClosed | integer or null <int32> The account number to register revenue for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoing | integer or null <int32> The account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for revenue from ongoing activities:
If includeSalesPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
salesContraAccountOngoing | integer or null <int32> The contra account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
{- "Id": 1,
- "Description": "An awesome activity group"
}
Use this endpoint to load a page of Activity Groups.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
name required | string [ 0 .. 100 ] characters The name of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
type required | integer <int32> Enum: 1 2 3 The activity group type determines whether a customer can be invoiced for the time entries registered on an activty or not.
|
costAccountClosed | integer or null <int32> The account number to register costs for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoing | integer or null <int32> The account number to register costs for ongoing activities. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for booking the revenue from ongoing activities:
If includeCostPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
costContraAccountOngoing | integer or null <int32> The contra account number to register costs for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
includeCostPriceInFinance | boolean Flag indicating if activity costs are to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
includeSalesPriceInFinance | boolean Flag indicating if the activity revenue is to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesAccountClosed | integer or null <int32> The account number to register revenue for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoing | integer or null <int32> The account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for revenue from ongoing activities:
If includeSalesPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
salesContraAccountOngoing | integer or null <int32> The contra account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome activity group"
}
]
Use this endpoint to retrieve all Activity Groups in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ActivityGroup) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Activity Group.
name required | string [ 0 .. 100 ] characters The name of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
type required | integer <int32> Enum: 1 2 3 The activity group type determines whether a customer can be invoiced for the time entries registered on an activty or not.
|
costAccountClosed | integer or null <int32> The account number to register costs for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoing | integer or null <int32> The account number to register costs for ongoing activities. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for booking the revenue from ongoing activities:
If includeCostPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
costContraAccountOngoing | integer or null <int32> The contra account number to register costs for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
includeCostPriceInFinance | boolean Flag indicating if activity costs are to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
includeSalesPriceInFinance | boolean Flag indicating if the activity revenue is to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the activity group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesAccountClosed | integer or null <int32> The account number to register revenue for closed activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoing | integer or null <int32> The account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for revenue from ongoing activities:
If includeSalesPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
salesContraAccountOngoing | integer or null <int32> The contra account number to register revenue for ongoing activities. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome activity group"
}
{- "number": 0
}
Call this endpoint to get the number of Activity Groups. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Cost type groups
endpoints help distinguish between invoiceable and non-invoiceable cost types.
The difference between the two is that only expenses with invoiceable cost types can be transferred to an invoice.
Additionally, cost type groups determine the accounts where booked expenses go.
Related guide for users: e-copedia (Danish)
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Cost Type Group by id/number.
number required | integer <int32> |
accountClosed required | integer <int32> The account number to register costs for closed projects. Filterable: not filterable Sortable: true |
accountOnGoing required | integer <int32> The account number to register ongoing costs. Filterable: not filterable Sortable: true |
name required | string [ 0 .. 100 ] characters The name of the cost type group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the cost type group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
type required | integer <int32> Enum: 1 2 The cost group type determines whether customers can be invoiced for expenses or not.
|
markup | number or null <double> The difference in percentage between the sales price and the cost price. Filterable: not filterable Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome cost type group"
}
Use this endpoint to load a page of Cost Type Groups.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
accountClosed required | integer <int32> The account number to register costs for closed projects. Filterable: not filterable Sortable: true |
accountOnGoing required | integer <int32> The account number to register ongoing costs. Filterable: not filterable Sortable: true |
name required | string [ 0 .. 100 ] characters The name of the cost type group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the cost type group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
type required | integer <int32> Enum: 1 2 The cost group type determines whether customers can be invoiced for expenses or not.
|
markup | number or null <double> The difference in percentage between the sales price and the cost price. Filterable: not filterable Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome cost type group"
}
]
Use this endpoint to retrieve all Cost Type Groups in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (CostTypeGroup) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Call this endpoint to get the number of Cost Type Groups. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Cost types
endpoints help create expenses.
They determine whether an expense is invoiceable - through the cost type group assigned to the cost type - and the VAT code that's going to be applied.
Related guide for users: e-copedia (Danish)
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Cost Type by id/number.
number required | integer <int32> |
costGroupNumber required | integer <int32> The number of the cost type group that the cost type belongs to. Filterable: not filterable Sortable: true |
name required | string [ 0 .. 100 ] characters The name of the cost type. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the cost type. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
isBarred | boolean Flag indicating if the cost type can be used to create expenses or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
lastUpdated | string <date-time> The date when the cost type was last updated. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
vatCode | string or null The code for the Vat that's going to be applied to expenses. Filterable: not filterable Sortable: true |
{- "Id": 1,
- "Description": "An awesome cost type"
}
Use this endpoint to load a page of Cost Types.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
costGroupNumber required | integer <int32> The number of the cost type group that the cost type belongs to. Filterable: not filterable Sortable: true |
name required | string [ 0 .. 100 ] characters The name of the cost type. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the cost type. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
isBarred | boolean Flag indicating if the cost type can be used to create expenses or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
lastUpdated | string <date-time> The date when the cost type was last updated. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
vatCode | string or null The code for the Vat that's going to be applied to expenses. Filterable: not filterable Sortable: true |
[- {
- "Id": 1,
- "Description": "An awesome cost type"
}
]
Use this endpoint to retrieve all Cost Types in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (CostType) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Call this endpoint to get the number of Cost Types. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Mileage entries
are the registration of project-related mileages by Employees
on Projects
.
Until they are approved, mileages are only considered drafts and can be edited or deleted.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
MileageIsNotFound | Mileage entry was not found. |
MileageIsAlreadyApproved | Mileage entry is already approved. |
MileageOnBarredProjectCannotBeApproved | Mileage entry cannot be approved since the project has been barred. |
MileageCannotBeUpdatedAlreadyApproved | Mileage entry cannot be updated or deleted since it is approved. |
MileageIsNotInAccountingPeriod | Mileage entry is not in a valid accounting period. |
MileageAccountingPeriodIsBarredOrClosed | Mileage entry is in an invalid (closed or barred) accounting period. |
MileageAccountingPeriodIsClosed | Mileage entry is in a closed accounting period. |
MileageNumberListCannotBeEmpty | List of mileage entries cannot be empty. |
MileageApprovalFailedBaseCurrencyIsNotSet | Mileage entry cannot be approved since the company base currency has not been set. |
MileageCannotBeCreatedUpdatedDateIsNotSet | Mileage entry cannot be created or updated, date must be set and be greater than minimum date. |
MileageCannotBeCreatedUpdatedDateIsNotInAccountingPeriod | Mileage entry cannot be created or updated, its date is not in an existing accounting period. |
MileageCannotBeCreatedUpdatedDateIsInClosedBarredAccountingPeriod | Mileage entry cannot be created or updated, its date is in a closed or barred accounting period. |
MileageSetupCannotBeCreatedUpdatedCostAccountNotExists | Mileage setup cannot be created or updated, cost account ongoing does not exist. |
MileageSetupCannotBeCreatedUpdatedContraAccountNotExists | Mileage setup cannot be created or updated, contra account ongoing does not exist. |
MileageSetupCannotBeCreatedUpdatedCostAccountClosedNotExists | Mileage setup cannot be created or updated, cost account closed does not exist. |
EmployeeHasNoAccessToProject | Employee has no access to the provided project. |
EmployeeHasNoAccessToActivity | Employee has no access to the provided activity. |
EntriesNotAllowedProjectNotFound | Entries not allowed on an inexistent project. |
EntriesNotAllowedProjectIsMain | Entries not allowed on a main project. |
EntriesNotAllowedProjectIsClosed | Entries not allowed on a closed project. |
EntriesNotAllowedProjectIsBarred | Entries not allowed on a barred project. |
EntriesNotAllowedEmployeeNotFound | Entries not allowed because the given employee was not found. |
EntriesNotAllowedEmployeeIsBarred | Entries not allowed because the given employee is barred. |
CannotBeApprovedEmployeeNotFound | Entry cannot be approved since employee was not found. |
CannotBeApprovedEmployeeIsBarred | Entry cannot be approved since employee is barred. |
CannotBeApprovedActivityNotFound | Entry cannot be approved since activity was not found. |
CannotBeApprovedActivityIsBarred | Entry cannot be approved since activity is barred. |
CannotBeApprovedForCompletedActivity | Entry cannot be approved since the activity is completed or hasn't started yet. |
CannotBeApprovedActivityNotPartOfProject | Entry cannot be approved since the activity is not part of the project. |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Mileage entry by id/number.
number required | integer <int32> |
date required | string <date-time> The date of the travel for which the mileage entry is created. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
distance required | number <double> The distance of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
employeeNumber required | integer <int32> The number of the employee that the mileage entry is to be registered for. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the mileage entry is to be registered on. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
from | string or null The starting place of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
includeApprove | boolean By default it is true, so a user with rights will be able to approve. Once it is approved, the field becomes false and it will be impossible to approve ever again. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
isApproved | boolean Flag indicating if the mileage entry has been approved or not. If it has been approved, it cannot be updated anymore. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the project mileage entry. Read-only: true Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
to | string or null The destination of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome mileage"
}
Use this endpoint to delete a single Mileage entry by id/number.
number required | integer <int32> |
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Use this endpoint to load a page of Mileage entries.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
date required | string <date-time> The date of the travel for which the mileage entry is created. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
distance required | number <double> The distance of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
employeeNumber required | integer <int32> The number of the employee that the mileage entry is to be registered for. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the mileage entry is to be registered on. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
from | string or null The starting place of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
includeApprove | boolean By default it is true, so a user with rights will be able to approve. Once it is approved, the field becomes false and it will be impossible to approve ever again. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
isApproved | boolean Flag indicating if the mileage entry has been approved or not. If it has been approved, it cannot be updated anymore. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the project mileage entry. Read-only: true Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
to | string or null The destination of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome mileage"
}
]
Use this endpoint to retrieve all Mileage entries in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (Mileage) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Mileage entry.
date required | string <date-time> The date of the travel for which the mileage entry is created. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
distance required | number <double> The distance of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
employeeNumber required | integer <int32> The number of the employee that the mileage entry is to be registered for. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the mileage entry is to be registered on. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
from | string or null The starting place of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
to | string or null The destination of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome mileage"
}
{- "number": 0
}
Use this endpoint to update a single Mileage entry.
date required | string <date-time> The date of the travel for which the mileage entry is created. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
distance required | number <double> The distance of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
employeeNumber required | integer <int32> The number of the employee that the mileage entry is to be registered for. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the mileage entry is to be registered on. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
from | string or null The starting place of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
to | string or null The destination of the travel for which the mileage entry is created. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome mileage"
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Call this endpoint to get the number of Mileage entries. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Use this endpoint to approve a list of Mileage entries.
numbers required | Array of integers <int32> [ items <int32 > ] The numbers of the mileage entries that are to be approved. Filterable: not filterable Sortable: false |
{- "numbers": [
- 1,
- 2,
- 3
]
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Mileage prices
endpoints extend Mileages
with prices.
A mileage entry cost or sales price is calculated by multiplying the mileage cost or sales rate respectively by the number of kilometers.
The mileage cost or sales rate is provided by the mileage setup.
Related guide for users: e-copedia (Danish)
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Mileage entry prices by id/number.
number required | integer <int32> |
costPrice | number or null <double> The total cost of the travel, calculated as follows: CostPrice = CostRate x distance. Read-only: true Filterable: not filterable Sortable: false |
costRate | number or null <double> The cost price per mile of travel, provided by the mileage setup. Read-only: true Filterable: not filterable Sortable: false |
number | integer <int32> The mileage entry unique identifier. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPrice | number or null <double> The total sales price of the travel, calculated as follows: SalesPrice = SalesRate x distance. Read-only: true Filterable: not filterable Sortable: false |
salesRate | number or null <double> The sales price per mile of travel, provided by the mileage setup. Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome mileage price"
}
Use this endpoint to load a page of Mileage entry prices.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
costPrice | number or null <double> The total cost of the travel, calculated as follows: CostPrice = CostRate x distance. Read-only: true Filterable: not filterable Sortable: false |
costRate | number or null <double> The cost price per mile of travel, provided by the mileage setup. Read-only: true Filterable: not filterable Sortable: false |
number | integer <int32> The mileage entry unique identifier. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPrice | number or null <double> The total sales price of the travel, calculated as follows: SalesPrice = SalesRate x distance. Read-only: true Filterable: not filterable Sortable: false |
salesRate | number or null <double> The sales price per mile of travel, provided by the mileage setup. Read-only: true Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome mileage price"
}
]
Use this endpoint to retrieve all Mileage entry prices in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (MileagePrices) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Project-activities
endpoints describe the relationship between projects and activities.
Their main purpose is to determine the period for which users can register time on a given Project
and a given Activity
.
By default, if there are no activities linked to a project, employees can register time on any activity.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
ProjectActivityCannotBeCreatedProjectNotFound | Project activity entry cannot be created, the given project was not found. |
ProjectActivityCannotBeCreatedActivityNotFound | Project activity entry cannot be created, the given activity was not found. |
ProjectActivityCannotBeCreatedActivityAlreadyExists | Project activity entry cannot be created, the activity already exists on the given project. |
ProjectActivityCannotBeCreatedActivityIsBarred | Project activity entry cannot be created, the given activity is barred. |
ProjectActivityCannotBeCreatedUpdatedInvalidDates | Project activity entry cannot be created or updated, the start date must be before the end date. |
ProjectActivityCannotBeCreatedProjectIsMain | Project activity entry cannot be registered on a main project. |
ProjectActivityCannotBeCreatedProjectIsClosed | Project activity entry cannot be registered on a closed project. |
ProjectActivityCannotBeCreatedProjectIsBarred | Project activity entry cannot be registered on a barred project. |
ProjectActivityCannotBeUpdatedReadonlyProperties | Project activity entry cannot be updated, cannot modify readonly properties. |
EntriesNotAllowedEmployeeNotFound | Entries not allowed because the given employee was not found. |
EntriesNotAllowedEmployeeIsBarred | Entries not allowed because the given employee is barred. |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a page of Project Activities.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
activityNumber required | integer <int32> The number of the activity that is linked to the project. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the activity is linked to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
completed | boolean Flag indicating if a project activity is still ongoing or if it's completed. Time registration on completed activities is not possible. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
endDate | string or null <date-time> The date when time registration on the project activity stops being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
lastUpdated | string or null <date-time> The date and time when the project activity entry was last updated. Use it in the filter to retrieve only updated entries. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The system unique number of the project activity entry. This property is not visible in the UI. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
responsibleEmployeeNumber | integer or null <int32> The number of the employee that is responsible for the project activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
startDate | string or null <date-time> The date when time registration on the project activity starts being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome project activity"
}
]
Use this endpoint to retrieve all Project Activities in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ProjectActivity) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Project Activity.
activityNumber required | integer <int32> The number of the activity that is linked to the project. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the activity is linked to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
completed | boolean Flag indicating if a project activity is still ongoing or if it's completed. Time registration on completed activities is not possible. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
endDate | string or null <date-time> The date when time registration on the project activity stops being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The system unique number of the project activity entry. This property is not visible in the UI. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
responsibleEmployeeNumber | integer or null <int32> The number of the employee that is responsible for the project activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
startDate | string or null <date-time> The date when time registration on the project activity starts being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome project activity"
}
{- "number": 0
}
Use this endpoint to update a single Project Activity.
activityNumber required | integer <int32> The number of the activity that is linked to the project. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the activity is linked to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
completed | boolean Flag indicating if a project activity is still ongoing or if it's completed. Time registration on completed activities is not possible. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
endDate | string or null <date-time> The date when time registration on the project activity stops being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The system unique number of the project activity entry. This property is not visible in the UI. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
responsibleEmployeeNumber | integer or null <int32> The number of the employee that is responsible for the project activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
startDate | string or null <date-time> The date when time registration on the project activity starts being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
{- "Id": 1,
- "Description": "An awesome project activity"
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Use this endpoint to load a single Project Activity by id/number.
number required | integer <int32> |
activityNumber required | integer <int32> The number of the activity that is linked to the project. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
projectNumber required | integer <int32> The number of the project that the activity is linked to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
completed | boolean Flag indicating if a project activity is still ongoing or if it's completed. Time registration on completed activities is not possible. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
endDate | string or null <date-time> The date when time registration on the project activity stops being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
lastUpdated | string or null <date-time> The date and time when the project activity entry was last updated. Use it in the filter to retrieve only updated entries. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The system unique number of the project activity entry. This property is not visible in the UI. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
responsibleEmployeeNumber | integer or null <int32> The number of the employee that is responsible for the project activity. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
startDate | string or null <date-time> The date when time registration on the project activity starts being allowed. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
{- "Id": 1,
- "Description": "An awesome project activity"
}
Use this endpoint to delete a single Project Activity by id/number.
number required | integer <int32> |
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Call this endpoint to get the number of Project Activities. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Project-customers
endpoints return a list of all the existing customers that can be used within Projects
.
Related guide for users: e-copedia (Danish)
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a single Project Customer by id/number.
number required | integer <int32> |
name required | string [ 0 .. 255 ] characters The name of the customer. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the customer. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome customer"
}
Use this endpoint to load a page of Project Customers.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
name required | string [ 0 .. 255 ] characters The name of the customer. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: true |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the customer. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome customer"
}
]
Use this endpoint to retrieve all Project Customers in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ProjectCustomer) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Call this endpoint to get the number of Project Customers. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Project-employee Groups
help distinguish between various categories of employees.
Note that Employeegroups
and Project-employeegroups
return the same data, the only difference between the two is that one requires access to the Sales module and the other one to the Projects module.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
EmployeeGroupNumberAlreadyExists | Employee group cannot be created since the given number already exists. |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERINCHOSENGROUP | The employee group contains one or more employees. |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to retrieve all Project employee groups in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ProjectEmployeeGroup) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Project employee group.
name required | string [ 0 .. 100 ] characters The name of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome employee group"
}
{- "number": 0
}
Use this endpoint to update a single Project employee group.
name required | string [ 0 .. 100 ] characters The name of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome employee group"
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Use this endpoint to load a single Project employee group by id/number.
number required | integer <int32> |
name required | string [ 0 .. 100 ] characters The name of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome employee group"
}
Use this endpoint to delete a single Project employee group by id/number.
number required | integer <int32> |
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Use this endpoint to load a page of Project employee groups.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
name required | string [ 0 .. 100 ] characters The name of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999999 ] The unique number of the employee group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome employee group"
}
]
Call this endpoint to get the number of Project employee groups. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Project-employees
endpoints provide project-related information about employees.
Employees can also be users in the system, but only if they are created via the UI Projects/ Employees section and the employee type is not 0.
Sometimes the employee type can be 0 even if IsUser is true, but only if an user is created via All Settings and then linked to an employee.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
EmployeeCannotBeCreatedUpdatedNumberAlreadyExists | Employee cannot be created since the given number already exists. |
EmployeeCannotBeCreatedUpdatedGroupNotFound | Employee cannot be created or updated since the given employee group was not found. |
EmployeeCannotBeCreatedUpdatedNameNullOrEmpty | Employee cannot be created or updated since employee name cannot be null or empty. |
ERROR_BOUNDCOWORKERTHEREISNUMBEROFPOSTSONDRAFTS | Finance vouchers exist for the selected employee. |
ERROR_BOUNDCOWORKERACCOUNTNUMBEROFTIMEREGISTERINGONCOWORKER | There is/are time entry(ies) for the selected employee. |
ERROR_BOUNDCOWORKERACCOUNTNUMBEROFEXPENSEREGISTERINGONCOWORKER | There is/are expense entry(ies) for the selected employee. |
ERROR_BOUNDCOWORKERACCOUNTNUMBEROFMILEAGEENTRIESONCOWORKER | There is/are milage entry(ies) for the selected employee. |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERRESPONSIBLENUMBEROFCASES | The employee is responsible for project(s). |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISBOUNDEDTOUSERSACCESSOFTIMEREGISTERING | The employee is linked to a user's access to time recording. |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISSALESMANFORNUMBEROFDEBITORS | The employee is a sales representative for customer(s). |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISOURREFFORNUMBEROFCREDITORS | The employee is linked to supplier(s). |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISSALESMANFORNUMBEROFINVOICES | The employee is a sales representative for invoice(s). |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISSALESMANFORNUMBEROFDRAFTS | The employee is a sales representative for draft invoice(s). |
ERROR_BOUNDCOWORKERACCOUNTCOWORKERISREFMANFORNUMBEROFPURCHASEORDERS | The employee is linked to purchase order(s). |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to retrieve all Project employees in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ProjectEmployee) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John"
}
]
}
Use this endpoint to create a single Project employee.
canApprove required | boolean Flag indicating if the employee can approve entries on a project. Filterable: not filterable Sortable: false |
canInvoice required | boolean Flag indicating if the employee can take mileage or time entries to the invoice process. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
groupNumber required | integer <int32> The number of the employee group that the employee belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
isBarred required | boolean Flag indicating if the employee can be registered on or is barred. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999 ] The unique number of the project employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
address | string or null [ 0 .. 100 ] characters The address of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
city | string or null [ 0 .. 50 ] characters The city of residence of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costPriceAfter | number or null <double> The cost price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceBefore | number or null <double> The cost price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
cutOffDate | string or null <date> The date when the costPriceBefore and salesPriceBefore stop having effect and get replaced with costPriceAfter and salesPriceAfter. It can be null if only salesPriceBefore should apply. Filterable: eq, ne, lt, lte, gt, gte Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The sales price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPriceBefore | number or null <double> The sales price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
zipCode | string or null [ 0 .. 50 ] characters The employee's zip code. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
number | integer <int32> The identifier of the newly created entity Read-only: true Filterable: not filterable Sortable: false |
{- "Id": 1,
- "Description": "An awesome project employee"
}
{- "number": 0
}
Use this endpoint to update a single Project employee.
canApprove required | boolean Flag indicating if the employee can approve entries on a project. Filterable: not filterable Sortable: false |
canInvoice required | boolean Flag indicating if the employee can take mileage or time entries to the invoice process. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
groupNumber required | integer <int32> The number of the employee group that the employee belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
isBarred required | boolean Flag indicating if the employee can be registered on or is barred. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999 ] The unique number of the project employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
address | string or null [ 0 .. 100 ] characters The address of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
city | string or null [ 0 .. 50 ] characters The city of residence of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costPriceAfter | number or null <double> The cost price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceBefore | number or null <double> The cost price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
cutOffDate | string or null <date> The date when the costPriceBefore and salesPriceBefore stop having effect and get replaced with costPriceAfter and salesPriceAfter. It can be null if only salesPriceBefore should apply. Filterable: eq, ne, lt, lte, gt, gte Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The sales price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPriceBefore | number or null <double> The sales price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
zipCode | string or null [ 0 .. 50 ] characters The employee's zip code. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
{- "Id": 1,
- "Description": "An awesome project employee"
}
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Call this endpoint to get the number of Project employees. You can use a filtering as well.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
0
Use this endpoint to load a page of Project employees.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
canApprove required | boolean Flag indicating if the employee can approve entries on a project. Filterable: not filterable Sortable: false |
canInvoice required | boolean Flag indicating if the employee can take mileage or time entries to the invoice process. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
groupNumber required | integer <int32> The number of the employee group that the employee belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
isBarred required | boolean Flag indicating if the employee can be registered on or is barred. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999 ] The unique number of the project employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
address | string or null [ 0 .. 100 ] characters The address of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
city | string or null [ 0 .. 50 ] characters The city of residence of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costPriceAfter | number or null <double> The cost price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceBefore | number or null <double> The cost price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
cutOffDate | string or null <date> The date when the costPriceBefore and salesPriceBefore stop having effect and get replaced with costPriceAfter and salesPriceAfter. It can be null if only salesPriceBefore should apply. Filterable: eq, ne, lt, lte, gt, gte Sortable: true |
employeeType | integer <int32> Enum: 0 1 2 3 Employee types:
|
isUser | boolean Flag indicating if the employee is also a user. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The sales price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPriceBefore | number or null <double> The sales price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
userId | string or null The id of the user that the employee is linked to. It is null if the employee is not linked to any user. Read-only: true Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
zipCode | string or null [ 0 .. 50 ] characters The employee's zip code. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome project employee"
}
]
Use this endpoint to load a single Project employee by id/number.
number required | integer <int32> |
canApprove required | boolean Flag indicating if the employee can approve entries on a project. Filterable: not filterable Sortable: false |
canInvoice required | boolean Flag indicating if the employee can take mileage or time entries to the invoice process. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
groupNumber required | integer <int32> The number of the employee group that the employee belongs to. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
isBarred required | boolean Flag indicating if the employee can be registered on or is barred. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
name required | string [ 0 .. 100 ] characters The name of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
number required | integer <int32> [ 1 .. 999999 ] The unique number of the project employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
address | string or null [ 0 .. 100 ] characters The address of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
city | string or null [ 0 .. 50 ] characters The city of residence of the employee. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costPriceAfter | number or null <double> The cost price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
costPriceBefore | number or null <double> The cost price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
cutOffDate | string or null <date> The date when the costPriceBefore and salesPriceBefore stop having effect and get replaced with costPriceAfter and salesPriceAfter. It can be null if only salesPriceBefore should apply. Filterable: eq, ne, lt, lte, gt, gte Sortable: true |
employeeType | integer <int32> Enum: 0 1 2 3 Employee types:
|
isUser | boolean Flag indicating if the employee is also a user. Read-only: true Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesPriceAfter | number or null <double> The sales price that is to be applied after the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
salesPriceBefore | number or null <double> The sales price that is to be applied until the CutOffDate. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
userId | string or null The id of the user that the employee is linked to. It is null if the employee is not linked to any user. Read-only: true Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
zipCode | string or null [ 0 .. 50 ] characters The employee's zip code. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
{- "Id": 1,
- "Description": "An awesome project employee"
}
Use this endpoint to delete a single Project employee by id/number.
number required | integer <int32> |
{- "message": "string",
- "developerHint": "string",
- "logId": "string",
- "logTimeUtc": "string",
- "property": "string",
- "errorCode": "string"
}
Project Groups
allow projects to be classified as:
Internal projects are only for internal use, whereas external projects are for other companies and therefore need to be assigned a customer.
The distinction between invoiceable and non-invoiceable is whether the costs registered on a project are to be considered billable to the user's customer or not.
Additionally, project groups determine whether registrations on a project should have an impact on the financial accounting or not.
Related guide for users: e-copedia (Danish)
Error Code | Description |
---|---|
ProjectGroupCannotBeCreatedUpdatedNumberAlreadyExists | Project group cannot be created since the given number already exists. |
ProjectGroupCannotBeCreatedUpdatedCostDataInvalid | Project group cannot be created or updated. If includeCostPriceInFinance is true, then costAccountOngoingType, costAccountOngoing, costContraAccountOngoing and costAccountClosed are required, otherwise they should be ommited. |
ProjectGroupCannotBeCreatedUpdatedSalesDataInvalid | Project group cannot be created or updated. If includeSalesPriceInFinance is true, then salesAccountOngoingType, salesAccountOngoing, salesContraAccountOngoing and salesAccountClosed are required, otherwise they should be ommited. |
ProjectGroupCannotBeCreatedUpdatedAccountDoesNotExist | Project group cannot be created or updated. The account does not exist. |
ProjectGroupCannotBeCreatedUpdatedAccountIsBarred | Project group cannot be created or updated. The account is barred. |
ProjectGroupCannotBeCreatedUpdatedAccountIsOfWrongType | Project group cannot be created or updated. The type of the account needs to be either Balance or Profit & Loss . |
Required application roles: ProjectEmployee or SuperUser [More info]
Use this endpoint to load a page of Project Groups.
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
PageSize | integer <int32> [ 1 .. 100 ] Default: 20 Use this parameter to set the page size. pagination instructions |
SkipPages | integer <int32> [ 0 .. 100 ] Default: 0 Use this parameter to set number of pages to skip. pagination instructions |
Sort | string Use this parameter to set the sort fields and direction. sort instructions |
name required | string [ 0 .. 100 ] characters The name of the project group. Filterable: eq, ne, lt, lte, gt, gte, in, nin, like Sortable: false |
type required | integer <int32> Enum: 1 2 3 The project group type determines whether a customer can be invoiced for the costs (time entries, mileage entries, expenses) registered on a project or not.
|
costAccountClosed | integer or null <int32> The account number to register costs for closed projects. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoing | integer or null <int32> The account number to register costs for ongoing projects. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
costAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for booking the revenue from ongoing projects:
If includeCostPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
costContraAccountOngoing | integer or null <int32> The contra account number to register costs for ongoing projects. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
includeCostPriceInFinance | boolean Flag indicating if project costs are to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
includeSalesPriceInFinance | boolean Flag indicating if the project revenue is to be included in accounting or not. Filterable: eq, ne, lt, lte, gt, gte Sortable: false |
number | integer <int32> The unique number of the project group. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: true |
objectVersion | string or null The object version, required for PUT requests to help ensure that updates made by others don’t get overwritten by your update request. Filterable: not filterable Sortable: false |
salesAccountClosed | integer or null <int32> The account number to register revenue for closed projects. If includeSalesPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoing | integer or null <int32> The account number to register revenue for ongoing projects. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
salesAccountOngoingType | integer <int32> Enum: 0 1 The type of account to be used for revenue from ongoing projects:
If includeSalesPriceInFinance is set to true, this property is required. Otherwise, it cannot be provided. Filterable: not filterable Sortable: false |
salesContraAccountOngoing | integer or null <int32> The contra account number to register revenue for ongoing projects. Only accessible accounts (not barred) with accountType=="status" or "profitAndLoss" are allowed. Filterable: eq, ne, lt, lte, gt, gte, in, nin Sortable: false |
[- {
- "Id": 1,
- "Description": "An awesome projectGroup"
}
]
Use this endpoint to retrieve all Project Groups in bulk. Max number of items returned in a single call is 1000. Use the continuation cursor parameter to set the continuation cursor for retrieval of next set of data. pagination instructions
Cursor | string [ 0 .. 50 ] characters Use this parameter to set the continuation cursor for paging. pagination instructions |
Filter | string Use this parameter to set the filtering for fields. filtering instructions |
cursor | string or null Use this continuation cursor in a request back to continue the list. In case there are no more items to retrieve, the cursor is not returned at all. Read-only: true Filterable: not filterable Sortable: false |
Array of objects or null (ProjectGroup) Max number of items returned is 1000. Filterable: not filterable Sortable: false |
{- "cursor": "234",
- "items": [
- {
- "id": "13",
- "name": "Patrick"
}, - {
- "id": "16",
- "name": "John&