What the API covers
This page lists the records an integration can reach through the EVX Software API, the rules the data follows, and two short examples. It helps you decide what an integration can do, and gives your developer a first look before the full reference.
The technical reference, with authentication, every endpoint, and code samples, is at developers.evxsoftware.com.
This version of the API is available from EVX Software version 4.3.
Records the API covers
| Area | What an integration can do |
|---|---|
| Projects | Read and update projects and their details, including your firm's custom fields |
| Clients | Read and update the clients your projects belong to |
| Tasks | Read, create, and update tasks |
| Time | Read and record time entries |
| Expenses | Read and record expenses, when your installation uses the Expenses module |
| Forms | Read and fill in forms, laid out as your installation configures them |
| Notes | Read and create notes |
| Documents | Read, store, and download documents |
| Configuration | Read the settings an integration needs, such as the number of decimals for amounts |
| Me | Read the details of the user the integration acts as |
The full list of operations for each area is on developers.evxsoftware.com.
How the data behaves
- Permissions: the integration sees and changes only what its user can. An amount the user is not allowed to see comes back empty.
- Custom fields: the custom fields your firm added to projects and other records can be read and written.
- Lists: long lists come back in pages, with the total number of records, so an integration can fetch them in steps.
- Retries: an integration can safely repeat a request that failed halfway, without creating the same record twice.
- Modules: an area that belongs to a module your installation does not use, such as Expenses, is not available.
Examples
These examples show what a developer sends and receives. Replace the values in capitals with your own.
Sign in and get a token. The integration sends its credentials to the token endpoint, and receives an access token valid for a few minutes:
curl -X POST "TOKEN_ENDPOINT" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=client_credentials" \
-d "client_id=CLIENT_ID" \
-d "client_secret=CLIENT_SECRET"
{
"access_token": "ACCESS_TOKEN",
"token_type": "Bearer",
"expires_in": 300
}
List tasks. The integration sends the token with each request. This one asks for the first 20 tasks the user can see:
curl "https://YOUR-INSTALLATION/api/v3/tasks?start=0&limit=20" \
-H "Authorization: Bearer ACCESS_TOKEN"
A successful answer starts with "ok": true, followed by the tasks in data. A refused request starts with "ok": false and explains why in error.
Code samples in PHP, Node.js, and Python, and every other operation, are on developers.evxsoftware.com.
What you can do next
- Connecting an integration to give an integration access.
- developers.evxsoftware.com for the full technical reference.
- API to return to the start of this section.