Progression API - Start here

Use the Progression API effectively and use the best practices to maximise your usage.

Generic Swagger Documentation


Change "YOURCOMPANY" in the URL to point the documentation to your account and test your API.
Example: https://YOURCOMPANY.progressionlive.com/server/doc/rest/index.html.

Use Case - Integration with an Enterprise Resource Planning (ERP) System

When connecting to an ERP system (e.g., SAP Business One), the ultimate goal is often to retrieve an invoice from Progression within the ERP. This allows for inventory withdrawals and finalizes the billing of these tasks.

For our use case, we will assume that master data will be updated in the ERP software.

To synchronize the invoice, we will need to send three key pieces of information: client, location (work site), products

We must ensure these three entities are linked between the two software systems (Progression and the ERP) and kept up to date.

Once these three entities are synchronized between the two software systems, we can transfer the invoice to the ERP. The ERP will return to Progression to confirm the task.

Generic Best Practices

  • Avoid polling; instead, use our webhooks to get the most up-to-date data.
  • If you cannot avoid "polling," use filters to limit the response.
  • Store the reference value of your other system in Progression with the "externalId" field.
    • ⚠️ Note, if you connect multiple other software, only one external ID is available per entity in Progression.
  • Store the Progression ID in your other system.
  • Do not send fields that are empty or that should not be updated.
  • Sending a "Null" value removes the value in the database.

How to Authenticate to the API

Note, access to the API requires a paid subscription to the service. To obtain this service, you can email us at serviceclient@progressionlive.com or call us at 1-866-670-0516.

Where to Find the API Key in Your Account

Currently, this information is inaccessible to users; you must request it from a Progression employee. You can contact our support team by email at support@progressionlive.com or by phone at 1-866-670-0516.

Example Query Connection

curl -X POST "VOTRECOMPAGNIE/server/rest/task/create?apiKey=VotreCleAPI" -H "accept: application/json" -H "Content-Type: application/json" -d "{\"type\":{\"label\":\"Appel de service\"},\"summary\":\"Sommaire de la tâche\"}"

Example BEARER Connection

curl -X POST "VOTRECOMPAGNIE/server/rest/task/create" -H "accept: application/json" -H "Authorization: Bearer VotreCleAPI" -H "Content-Type: application/json" -d "{\"type\":{\"label\":\"Appel de service\"},\"summary\":\"Sommaire de la tâche\"}"

 

Synchronizing Clients

Check if the client exists using the get/client function.
Search by name or external ID.
Create the client if it doesn't exist using post/client/create.
Remember to put your reference ID in the "externalId" field of Progression and, if possible, store the Progression ID in your other software to know which clients already exist in Progression, avoiding an API call.
Update the client if it already exists using post/client/identifier/update.

Synchronizing Locations

Check if the location exists using the get/location function.
Create the location if it doesn't exist using the post/location/create function.
Update the location if it exists using the post/client/identifier/update function.
If the location is updated in Progression, use a webhook to return the information to your other system.

Synchronizing Products

Check if the product exists using the get/product/list function.
Create the product if it doesn't exist using the post/product/create function.
Update the product if it exists using the post/product/identifier/update function.
If the product is updated in Progression, use a webhook to return the information to your other system.

Synchronizing Tasks

Create a task using the post/task/create function.
Return the information to your system during a specific action.
Change the task status to send feedback to the user in case of success and another status in case of failure using the post/task/identifier/state function.

Commonly used Webhooks

When a Task of Type AS Progresses to a Specific State (Example 700)

{
  "url": "myURL",
  "name": "Task progresses to 700",
  "entityName": "TaskState",
  "eventType": "CREATE",
  "targetUrl": "myURL",
  "enabled": true,
  "expand": "",
  "filters": [
    {
      "property": "currentState.logicId",
      "type": "NumberEquals",
      "value": "700"
    },
    {
      "property": "type.code",
      "type": "TextExactlyMatches",
      "value": "AS"
    }
  ],
  "headers": {}
}

 When a Product is Updated

{
  "url": "myURL",
  "name": "Product updated",
  "entityName": "Product",
  "eventType": "UPDATE",
  "targetUrl": "myURL",
  "enabled": true,
  "expand": "",
  "filters": [],
  "headers": {}
}

When a Client is Updated

{
  "url": "myURL",
  "name": "Client updated",
  "entityName": "Client",
  "eventType": "UPDATE",
  "targetUrl": "myURL",
  "enabled": true,
  "expand": "",
  "filters": [],
  "headers": {}
}

When a Location is Updated

{
  "url": "myURL",
  "name": "Location updated",
  "entityName": "Location",
  "eventType": "UPDATE",
  "targetUrl": "myURL",
  "enabled": true,
  "expand": "",
  "filters": [],
  "headers": {}
}