Introduction to APIs available in Progressus
Introduction
This document provides the high-level overview of APIs used in the DevOps/ Jira Progressus Integration
Integration Flows
The integration flows bring project names and IDs from Jira and stores them in the Integration Project List.
Projects in Business Central need to be marked as ‘External Time Entry’. Then select which Jira project should be mapped to this BC project.
Example of above Jira Project ending up in Timesheet:
Jira Epic - Progressus Task
The integration flows bring Epic names and IDs from Jira and stores them in the Integration Task List.
Similar to projects, Business Central Job Tasks can be marked as ‘External Time Entry’ and matched with a Jira Epic. By default, new tasks are created in Business Central automatically with this information as Epics are added in Jira.
Example of above Jira Epic ending up in Timesheet:
Jira Time tracking - Progressus Timesheet (Time Entry)
Time tracking from Jira is brought over for a Business Central resource based on the Jira Assignee. The Business Central resource must be enabled as ‘External Time Entry User’ and their email must match the Jira Assignee’s email address.
Jira Time Tracking is entered into Business Central for the Assignee based on the parent project\task that were shown in the other sections of this document.
Notice that the “8.00” in the Business Central screenshot above is bold and green. This indicates that there are multiple Time Entries for this date in this Timesheet line. You can click on that field and then click the ellipsis to drill down to see the Time Entries.
Once we drill down, we can see that the Jira time tracking is entered as a description for the Time Entry.
APIs Used
The End Point for calling API using basic authorization will be following:
https://api.businesscentral.dynamics.com/v1.0/><tenantid>/api/<API publisher>/<API group>/<API version>/companies(<company id>)/EntityName
Name | Page ID | Page Name | Example URL | |||
---|---|---|---|---|---|---|
Resources | 14046092 | Resources API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/resource/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources |
|||
Projects | 14046090 | Project API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects |
|||
External Projects | 14046108 | External Project API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/externalproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externalprojects |
|||
Integration Projects | 14046105 | Integration Projects API PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/integrationproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationprojects |
|||
Tasks | 14046091 | Task API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/task/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks |
|||
External Tasks | 14046109 | External Task API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/externaltask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks |
|||
Integration Tasks | 14046107 | Integration Task API PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/integrationtask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationtasks |
|||
TimeEntry/ TimeCard | 14046095 | Time Cards API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/timecard/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timecards |
|||
TimePeriods | 14046093 | Time Periods API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/timeperiod/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timeperiods |
|||
Integration Entry Log | 14046114 | Integration Log API PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/integrationlog/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationlogs |
|||
Integration Setup | 14046097 | Integration Setup API v1 PGS | https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe96a2aad51085c/sandbox/api/progressus/integrationsetup/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationsetup |
Resources
GET list of Resources using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources
Sample Response:
{
"@odata.context": `"https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources",`
"value": [
{
"@odata.etag": "W/\"JzQ0O0hZa1ErT3JEelhmZTRLcHFkWWxUZ1dId1pKRFlzT1E3Yi9BSEtRWkd4dnM9MTswMDsn\"",
"id": "f77a7548-a393-eb11-8ce2-000d3a0e5516",
"no": "R1490",
"type": "Person",
"name": "Velosio",
"employmentDate": "2021-01-01",
"resourceGroupNumber": "",
"genProductPostingGroup": "NO TAX",
"taxGroupCode": "",
"vatProdPostingGroup": "",
"projectManager": false,
"lineManager": "",
"lineManager2": "",
"taxAreaCode": "",
"baseUnitOfMeasure": "HOUR",
"email": "skuchana@plumblineConsulting.com",
"externalTimeSystem": true
},
{
"@odata.etag": "W/\"JzQ0O04yTnpVWUdEMGZlR1k3aUJlZ2VtVmRCakVYbWNZODJqaDZUVGJTMTNYRkk9MTswMDsn\"",
"id": "e7b27ec2-b593-eb11-8ce2-000d3a0e5516",
"no": "R1500",
"type": "Person",
"name": "Velosio-2",
"employmentDate": "2021-01-01",
"resourceGroupNumber": "ADMIN",
"genProductPostingGroup": "NO TAX",
"taxGroupCode": "",
"vatProdPostingGroup": "",
"projectManager": false,
"lineManager": "",
"lineManager2": "",
"taxAreaCode": "",
"baseUnitOfMeasure": "HOUR",
"email": "skuchana@plumblineConsulting.com",
"externalTimeSystem": false
},
{
"@odata.etag": "W/\"JzQ0O2pqeUZaQnBGMG13aVRzd2lJRFVPVDNieEpYZzhVU0EzNG1IWFRFQ2QvcUE9MTswMDsn\"",
"id": "c9b04833-ee28-eb11-bf6b-000d3a0fc19e",
"no": "PM0007",
"type": "Person",
"name": "PM0007",
"employmentDate": "2018-01-01",
"resourceGroupNumber": "PROJMAN",
"genProductPostingGroup": "SERVICES",
"taxGroupCode": "",
"vatProdPostingGroup": "",
"projectManager": true,
"lineManager": "",
"lineManager2": "",
"taxAreaCode": "",
"baseUnitOfMeasure": "HOUR",
"email": "",
"externalTimeSystem": false
}
Sr. No. | Field/ Tag | Description | Example | |
---|---|---|---|---|
1 | no | Code[20] Specifies the number of the involved Resource, according to the specified number series or specified manually.] | "no": "R1490", | |
2 | type | Option [Person/ Machine] Specifies whether the resource is a person or a machine. | "type": "Person", | |
3 | name | Text[100] Specifies a description of the resource. | "name": "Velosio", | |
4 | employmentDate | Date Specifies the date when the person began working for you or the date when the machine was placed in service. | "employmentDate": "2021-01-01", | |
5 | resourceGroupNumber | Code[20] Specifies the resource group that this resource is assigned to. | "resourceGroupNumber": "", | |
6 | genProductPostingGroup | Code[20] Specifies the item's product type to link transactions made for this item with the appropriate general ledger account according to the general posting setup. | "genProductPostingGroup": "NO TAX", | |
7 | taxGroupCode | Code[20] Specifies the tax group that is used to calculate and post sales tax. | "taxGroupCode": "", | |
8 | vatProdPostingGroup | Code[20] Specifies the tax specification of the involved item or resource to link transactions made for this record with the appropriate general ledger account according to the tax posting setup. | "vatProdPostingGroup": "", | |
9 | projectManager | Boolean Check this box if this user will act as a project Manager. Project managers are allowed to approve time cards in the system. It also allows the resource to be chosen as a project manager on the project card. | "projectManager": false, | |
10 | lineManager | Code[20] Specifies the line manager from the resource code list. Choose a resource as the line manager for the resource in question. A line manager filter can be used when approving time entries and expenses | "lineManager": "", | |
11 | lineManager2 | Code[20] Specifies the line manager 2 from the resource code List. Choose a resource as the line manager for the resource in question. A line manager 2 filter can be used when approving time entries and expense | "lineManager2": "", | |
12 | taxAreaCode | Code[20] Specifies the tax area used to calculate and post the sales tax. | "taxAreaCode": "", | |
13 | baseUnitOfMeasure | Code[10] Specifies the base unit used to measure the resource, such as hour, piece, or kilometer. | "baseUnitOfMeasure": "HOUR", | |
14 | Text[80] Enter the email for the resource | "email": "", | ||
15 | externalTimeSystem | Boolean Specifies if the resource will use external/ integration system for time entry. | "externalTimeSystem": true |
GET Filtered data, filter by a field value using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources?$filter=name eq 'Sandeep'
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources",
"value": [
{
"@odata.etag": "W/\"JzQ0O3Urc0V0eVVXZk1ibUhndk0yN0NuRHFJZzNWbTV4YzhpQ3dhYjYyM2RkVXc9MTswMDsn\"",
"id": "2964b63b-ea95-eb11-8ce2-000d3a0e5516",
"no": "R1520",
"type": "Person",
"name": "Sandeep",
"employmentDate": "2021-02-02",
"resourceGroupNumber": "PROJMAN",
"genProductPostingGroup": "SERVICES",
"taxGroupCode": "LABOR",
"vatProdPostingGroup": "NOTAX",
"projectManager": true,
"lineManager": "API0010",
"lineManager2": "API0015",
"taxAreaCode": "CHICAGO, IL",
"baseUnitOfMeasure": "HOUR",
"email": "sgourishetty@plumblineconsulting.com",
"externalTimeSystem": true
}
]
}
POST Resource using API
`POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources`
Sample Request Body:
{
"type": "Person",
"name": "Velosio",
"employmentDate": "2021-01-01",
"resourceGroupNumber": "",
"genProductPostingGroup": "NO TAX",
"taxGroupCode": "",
"vatProdPostingGroup": "",
"projectManager": false,
"lineManager": "",
"lineManager2": "",
"taxAreaCode": "",
"baseUnitOfMeasure": "HOUR",
"email": "skuchana@plumblineConsulting.com",S
"externalTimeSystem": false
}
Sample Response:
{
"@odata.context": "<https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/>$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources/$entity",
"@odata.etag": "W/\"JzQ0O0ZrOE9CRFBMRG1tNkgxRmpsM2t3azRNNWVNUFVlSVhjbzVEY3Fzc25oNlk9MTswMDsn\"",
"id": "7852c40b-c6ac-eb11-9b4f-000d3a23f74d",
"no": "R1530",
"type": "Person",
"name": "Velosio",
"employmentDate": "2021-01-01",
"resourceGroupNumber": "",
"genProductPostingGroup": "NO TAX",
"taxGroupCode": "",
"vatProdPostingGroup": "",
"projectManager": false,
"lineManager": "",
"lineManager2": "",
"taxAreaCode": "",
"baseUnitOfMeasure": "HOUR",
"email": "skuchana@plumblineConsulting.com",
"externalTimeSystem": false
}
GET only Resource specified fields using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources?$select=no,name
Sample Response:
`{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/resource/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/resources",
"value": [
{
"@odata.etag": "W/\"JzQ0O0hZa1ErT3JEelhmZTRLcHFkWWxUZ1dId1pKRFlzT1E3Yi9BSEtRWkd4dnM9MTswMDsn\"",
"no": "R1490",
"name": "Velosio"
},
{
"@odata.etag": "W/\"JzQ0O04yTnpVWUdEMGZlR1k3aUJlZ2VtVmRCakVYbWNZODJqaDZUVGJTMTNYRkk9MTswMDsn\"",
"no": "R1500",
"name": "Velosio-2"
},
{
"@odata.etag": "W/\"JzQ0O0QrWk5pZitrS0N4WTVjS2xqZmZ1ZTFLZHlZaE1JeEdVSi9HcDF3bFdQcVE9MTswMDsn\"",
"no": "R1510",Sam
"name": "Velosio"
},
`
Projects
GET list of Projects using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects",
"value": [
{
"@odata.etag": "W/\"JzQ0OzFnNG9PZThYMHZXRGNMK0tNbUhBR3hMU05iUzdJbkd6ekJ2SXNTcU9ub3c9MTswMDsn\"",
"no": "API00010",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01"
},
{
"@odata.etag": "W/\"JzQ0O1hKYi9hU1BFR3IrWnNUam5kd1ZvbVE5cDJ5L0phQlJDMjdoZFVoczBGbWs9MTswMDsn\"",
"no": "API00010-API",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": true,
"startingDate": "2018-03-01"
}
]
}
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | no | Code[20] Specifies a unique identifier for the project. The field is either filled automatically from a defined number series, or you enter the number if manual number entry has been enabled in the number series setup. | "no": "API00010", |
2 | description | Text[100] Specifies a short description of the project. | "description": "API Project-1", |
3 | billtoCustomerNo | Code[20] Specifies the number of the customer who pays for the project. | "billtoCustomerNo": "30000", |
4 | externalProjectNo | Code[20] Specifies an external reference number to identify the project | "externalProjectNo": "", |
5 | status | Option (Enum) with option values: Planning, Quote, Open, Completed | "status": "Open", |
6 | personResponsible | Code[20] Specifies the person at your company who is responsible for the project. | "personResponsible": "ARDEN.BILL", |
7 | projectManagerx | Code[20] Specifies the person who is assigned to manage the project. | "projectManagerx": "", |
8 | salespersonCode | Code[20] Specifies a code for the salesperson who normally handles the customer's account and project. | "salespersonCode": "", |
9 | internalProject | Boolean Specifies it is an internal, company project. | "internalProject": false, |
10 | privateProject | Boolean Specifies it is a private project. | "privateProject": false, |
11 | customerProject | Boolean Specifies it is a project billable to a customer. | "customerProject": false, |
Row12 | startingDate | Date Specifies the date on which the project actually starts. | "startingDate": "2018-03-01" |
GET Projects - filtered by a field using API
You can provide filters in API calls. The syntax for this follows the Microsoft REST API guidelines. For example, to GET all projects with status as Open,
call https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects?$filter=status eq 'Open'
Another example of filtering in API call:
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects?$filter=no eq 'API00010'
Sample Response:
`{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects",
"value": [
{
"@odata.etag": "W/\"JzQ0OzFnNG9PZThYMHZXRGNMK0tNbUhBR3hMU05iUzdJbkd6ekJ2SXNTcU9ub3c9MTswMDsn\"",
"no": "API00010",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01"
}
]
}
Another example of filtering in the GET call:
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects?$filter=personResponsible eq 'ARDEN.BILL' and startingDate eq 2018-03-01
POST Project using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects
Sample Request Body:
`{
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01"
}
Sample Response:
`{
"@odata.context": "<https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/>$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects/$entity",
"@odata.etag": "W/\"JzQ0O0dlellldGdEb1lXT1Mxc2JRczNnbnJuNWpaditDYzRPTURNQnpHWVdrYzg9MTswMDsn\"",
"no": "P0000083",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01"
}
GET Projects - only specified fields using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects?$select=no,description
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/project/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/projects",
"value": [
{
"@odata.etag": "W/\"JzQ0OzFnNG9PZThYMHZXRGNMK0tNbUhBR3hMU05iUzdJbkd6ekJ2SXNTcU9ub3c9MTswMDsn\"",
"no": "API00010",
"description": "API Project-1"
},
{
"@odata.etag": "W/\"JzQ0O1hKYi9hU1BFR3IrWnNUam5kd1ZvbVE5cDJ5L0phQlJDMjdoZFVoczBGbWs9MTswMDsn\"",
"no": "API00010-API",
"description": "API Project-1"
},
{
"@odata.etag": "W/\"JzQ0O05mVDk5eC9CYnErWkZLYmE3cENvTDF0M3FCdmxqZmx4NEQzbHIwVnJCVE09MTswMDsn\"",
"no": "API00010-API-API",
"description": "API Project-1"
},
{
"@odata.etag": "W/\"JzQ0OzlpbFNwdGlOTWhwb2taeG5iN09NVGpQak5CWGlrVjJ4V2MveWxxU2I4Y1k9MTswMDsn\"",
"no": "API00010-API-API-API",
"description": "API Project-1"
},
{
"@odata.etag": "W/\"JzQ0OzFVVVM0MHNQb1FiVkplUjlEZkhnUTRjTkJMVHkzWkx2NUhHVzdhVVp4Tjg9MTswMDsn\"",
"no": "API00011",
"description": "API Project-11"
}
) ]
External Projects
GET list of External Projects using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externalproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externalprojects
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externalproject/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externalprojects",
"value": [
{
"@odata.etag": "W/\"JzQ0O0NZNVhUQUhYSFhwUzNXcDJneW0yY1JlcDR2Smh5cCt0NUdCSUVaNjd1dUE9MTswMDsn\"",
"no": "API00010",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01",
"externalTimeEntry": true,
"integrationProjectName": "43f42d32-7f5d-4516-ab57-88241e9d598d",
"integrationProjectPK": ""
},
{
"@odata.etag": "W/\"JzQ0O2d5SEFjeUczWVAyb1o4NXBmNG93Z0t6MUd3K0lnbk1rUTUwVVlQNUtTdTQ9MTswMDsn\"",
"no": "API00010-API",
"description": "API Project-1",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": true,
"startingDate": "2018-03-01",
"externalTimeEntry": true,
"integrationProjectName": "Progressus API Testing",
"integrationProjectPK": "4d0fc121-2c66-432e-bff6-8f5fe00b8d2a"
}
)
]
Difference between External Projects API and Projects API: External Projects API have following three additional fields to Projects API
- externalTimeEntry
- integrationProjectName
- integrationProjectPK
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | no | Code[20] Specifies a unique identifier for the project. The field is either filled automatically from a defined number series, or you enter the number if manual number entry has been enabled in the number series setup. | "no": "API00010-API", |
2 | description | Text[100] Specifies a short description of the project. | "description": "API Project-1", |
3 | billtoCustomerNo | Code[20] Specifies the number of the customer who pays for the project. | "billtoCustomerNo": "30000", |
4 | externalProjectNo | Code[20] Specifies an external reference number to identify the project | "externalProjectNo": "", |
5 | status | Option (Enum) with option values: Planning, Quote, Open, Completed; Specifies the current status of the project. You can change the status for the project as it progresses. Final calculations can be made on completed projects. | "status": "Open", |
6 | personResponsible | Code[20] Specifies the person at your company who is responsible for the project. | "personResponsible": "", |
7 | projectManagerx | Code[20] Specifies the person who is assigned to manage the project. | "projectManagerx": "", |
8 | salespersonCode | Code[20] Specifies a code for the salesperson who normally handles the customer's account and project. | "salespersonCode": "", |
9 | internalProject | Boolean Specifies it is an internal, company project. | "internalProject": false, |
10 | privateProject | Boolean Specifies it is a private project. | "privateProject": false, |
11 | customerProject | Boolean Specifies it is a project billable to a customer. | "customerProject": false, |
12 | startingDate | Date Specifies the date on which the project actually starts. | "startingDate": "2018-03-01" |
13 | ExternalTimeEntry | Boolean Specifies if the project will use external/integration system for time entry. | "externalTimeEntry": true, |
14 | integrationProjectName | Text[250] Specifies the name of the project in integration system. | "integrationProjectName": "Progressus API Testing", |
15 | integrationProjectPK | Text[50] Specifies a unique identifier for the project in integrated system. | "integrationProjectPK": "4d0fc121-2c66-432e-bff6-8f5fe00b8d2a" |
POST External Projects using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externalproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externalprojects
Sample Request Body:
{
"description": "Test POST External Proj",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01",
"externalTimeEntry": true,
"integrationProjectName": "Test data for Integration Project J00500",
"integrationProjectPK": "J00500"
`
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externalproject/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externalprojects/$entity",
"@odata.etag": "W/\"JzQ0O3UwUExpNVlnYlU4amx0QjJweENpek1xczVkb3I0c3Y5VUxFMW1JeFpmR2s9MTswMDsn\"",
"no": "P0000084",
"description": "Test POST External Proj",
"billtoCustomerNo": "30000",
"externalProjectNo": "",
"status": "Open",
"personResponsible": "ARDEN.BILL",
"projectManagerx": "",
"salespersonCode": "",
"internalProject": false,
"privateProject": false,
"customerProject": false,
"startingDate": "2018-03-01",
"externalTimeEntry": true,
"integrationProjectName": "Test data for Integration Project J00500",
"integrationProjectPK": "J00500"
}
Integration Projects
GET Integration Projects using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationprojects
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationproject/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationprojects",
"value": [
{
"@odata.etag": "W/\"JzQ0OzJHL3I5dUJGZnNjTG1XOVNVMHl0OXFCc1FLYWF5TzBoaWlWSjJYdkZ2OGs9MTswMDsn\"",
"iD": "",
"name": "Test Internal Project"
},
{
"@odata.etag": "W/\"JzQ0O0lDcDhleHM2eGpRdkt6TlIwS1hna0pPeXlqejlNZ2RQU0ZUWHZNaTFmdUE9MTswMDsn\"",
"iD": "10000",
"name": "VelosioJira"
},
{
"@odata.etag": "W/\"JzQ0O3g2bG0xUzJIWTFBN0MybkZGVW1SME56TmVENHRLSElmc29KOGxFcEUreGc9MTswMDsn\"",
"iD": "10001",
"name": "VelosioJira2"
}
]
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | iD | Text[50] Specifies a unique identifier for the project in integrated system. The field is filled when data is populated from integration system through flow/ power automation. | "iD": "", |
2 | name | Text[250] Specifies the project name in integrated system (DevOps or Jira). | "name": "VelosioJira" |
POST Integration Projects using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationproject/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationprojects
Sample Request Body:
{
"iD": "New Integration Project",
"name": "Test Internal Project"
}
Sample Response:
{ "@odata.context": "<https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationproject/v1.0/>$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationprojects/$entity", "@odata.etag": "W/\"JzQ0O1pPa2l1akcwb2k2VVRBc2w5MWpoYUYvM3J5QXIvQ3dKQWJJMUdJRnlUelE9MTswMDsn\"", "iD": "New Integration Project", "name": "Test Internal Project" }
Tasks
GET Tasks using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks",
"value": [
{
"@odata.etag": "W/\"JzQ0O0VFMm9vSnphN1c5dXpPeVI5bERkSk81SGJVRFUraVBCTEtpY3RDaUx5cEU9MTswMDsn\"",
"id": "c4534d25-827a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "1500",
"description": "365 Solutions 111",
"preOrder": false,
"requireComments": false
},
{
"@odata.etag": "W/\"JzQ0O0l5MW9vOW5ITzhhTDhhQjU0aVlYWkxRQ3FHOGJxQS93SU5PT3lpQmJDTk09MTswMDsn\"",
"id": "8d815b2b-827a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "1600",
"description": "",
"preOrder": false,
"requireComments": false
},
{
"@odata.etag": "W/\"JzQ0O0ZQMm5DSFc1UHRIOUVwOHIrT3lmNFlBVXZGVUw3RGFsck9GeTJRZWlMQjg9MTswMDsn\"",
"id": "5d3ac194-907a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "3000",
"description": "",
"preOrder": false,
"requireComments": false
}
]
}
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | id | GUID Specifies a unique identifier of the record.System generated GUID. | id": "8d815b2b-827a-eb11-b853-000d3a049031", |
2 | jobno | Code[20] Specifies the Job/Project number. | "jobno": "P0000066", |
3 | taskno | Code[20] Specifies the number of the related job task. | "taskno": "3000", |
4 | description | Text[100] Specifies a description of the job task. You can enter anything that is meaningful in describing the task. The description is copied and used in descriptions on the job planning line. | "description": "", |
5 | preOrder | Boolean Specifies if it is a Pre-Order | "preOrder": false, |
6 | requireComments | Boolean Specifies when comments are required on timesheet or expense sheet entries posted to this task. | "requireComments": false |
GET Tasks - filtered data using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks?$filter=jobno eq 'P0000066'
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks",
"value": [
{
"@odata.etag": "W/\"JzQ0O0VFMm9vSnphN1c5dXpPeVI5bERkSk81SGJVRFUraVBCTEtpY3RDaUx5cEU9MTswMDsn\"",
"id": "c4534d25-827a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "1500",
"description": "365 Solutions 111",
"preOrder": false,
"requireComments": false
},
{
"@odata.etag": "W/\"JzQ0O0l5MW9vOW5ITzhhTDhhQjU0aVlYWkxRQ3FHOGJxQS93SU5PT3lpQmJDTk09MTswMDsn\"",
"id": "8d815b2b-827a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "1600",
"description": "",
"preOrder": false,
"requireComments": false
},
{
"@odata.etag": "W/\"JzQ0O0ZQMm5DSFc1UHRIOUVwOHIrT3lmNFlBVXZGVUw3RGFsck9GeTJRZWlMQjg9MTswMDsn\"",
"id": "5d3ac194-907a-eb11-b853-000d3a049031",
"jobno": "P0000066",
"taskno": "3000",
"description": "",
"preOrder": false,
"requireComments": false
}
]
}
POST Tasks using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks
Sample Request Body:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks/$entity",
"@odata.etag": "W/\"JzQ0O05tOS8zUStRYjZvWExpK2RvTklZRFVkSlBYekhzQ050bFpDNmhsbTh4NUE9MTswMDsn\"",
"id": "e2a7351a-20b2-eb11-9b52-000d3a3c0378",
"jobno": "P0000066",
"taskno": "3500",
"description": "365 Solutions 111",
"preOrder": false,
"requireComments": false
}
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/task/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/tasks/$entity",
"@odata.etag": "W/\"JzQ0O05tOS8zUStRYjZvWExpK2RvTklZRFVkSlBYekhzQ050bFpDNmhsbTh4NUE9MTswMDsn\"",
"id": "e2a7351a-20b2-eb11-9b52-000d3a3c0378",
"jobno": "P0000066",
"taskno": "3500",
"description": "365 Solutions 111",
"preOrder": false,
"requireComments": false
}
External Tasks
GET External Tasks using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks
Sample Response:
{ "@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks", "value": [ { "@odata.etag": "W/\"JzQ0O1ZvbUtaUW9yNUNZTTVGeUFqMWNKNjAybGFQUkxMRDdjVkRlOFVmYnN6NGc9MTswMDsn\"", "id": "c4534d25-827a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "1500", "description": "365 Solutions 111", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O1NCdWxFZWdpOGZ4SStIaHNVVFFxZGx1dzJTbll6SkIrV01EV0UwR0p3OWs9MTswMDsn\"", "id": "8d815b2b-827a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "1600", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 } ] }
Difference between External Tasks API and Tasks API: External Tasks API have following three additional fields to Projects API
- externalTimeEntry
- integrationTaskName
- integrationTaskPK
Sr. no. | Field/Tag | Description | Example |
---|---|---|---|
1 | id | GUID Specifies a unique identifier of the record.System generated GUID. | "id": "c4534d25-827a-eb11-b853-000d3a049031", |
2 | jobno | Code[20] Specifies the Job/Project number. | "jobno": "P0000066", |
3 | taskno | Code[20] Specifies the number of the related job task | "taskno": "3000", |
4 | description | Text[100] Specifies a description of the job task. You can enter anything that is meaningful in describing the task. The description is copied and used in descriptions on the job planning line | "description": "", |
5 | preOrder | Boolean Specifies if it is a Pre-Order | "preOrder": false, |
6 | requireComments | Boolean Specifies when comments are required on timesheet or expense sheet entries posted to this task. | "requireComments": false |
7 | ExternalTimeEntry | Boolean Specifies if the project will use external/integration system for time | "externalTimeEntry": false, |
8 | integrationTaskName | Text[255] Specifies the name of the task in integration system | "integrationTaskName": "", |
9 | integrationTaskPK | Integer Specifies a unique identifier for the task in integrated system | "integrationTaskPK": 0 |
GET External Tasks filtered data using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks?$filter=jobno eq 'P0000066'
Sample Response:
{ "@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks", "value": [ { "@odata.etag": "W/\"JzQ0O1ZvbUtaUW9yNUNZTTVGeUFqMWNKNjAybGFQUkxMRDdjVkRlOFVmYnN6NGc9MTswMDsn\"", "id": "c4534d25-827a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "1500", "description": "365 Solutions 111", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O1NCdWxFZWdpOGZ4SStIaHNVVFFxZGx1dzJTbll6SkIrV01EV0UwR0p3OWs9MTswMDsn\"", "id": "8d815b2b-827a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "1600", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O0FDMit2djlyY2YrbTUxbmdHTkFCbGJnREVVWmJ2R3VoNDNuemhlSXVLQ0E9MTswMDsn\"", "id": "5d3ac194-907a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "3000", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O2Z4cmprZ3R5aGk5cTRmc1Q0VjdqK3ZBbjN3MUJYeU5GYjdVNVJzOFlGS1U9MTswMDsn\"", "id": "5f3ac194-907a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "4000", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0OzROdDB3YTl2aHNXTHlUbnhlT3IxWUZQWEMyNmlzVXpxdWZvdS9DbEFLRUk9MTswMDsn\"", "id": "a1428da7-957a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "4300", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O1pkcE5qZ1Jib3o4U3EzVHkrekI1RjAzY0YwcjdGUE1oUG9OYUF5YmMrZEU9MTswMDsn\"", "id": "417d5115-9a7a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "4790", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O1VObzdYQXRjemhvbUpyQ2lSLzcxSjJEM1h1QXNmaHl1eXY0V1krU3d1SG89MTswMDsn\"", "id": "43a9a11e-9a7a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "4800", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O0pyQ2gzUmp6aFREczZsbklYbGRzS1JPSHlnS0FNbVpiVUhYVkpNSGIxVTg9MTswMDsn\"", "id": "d24a0c22-9d7a-eb11-b853-000d3a049031", "jobno": "P0000066", "taskno": "5100", "description": "RSM 206", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O0pSRzJjanV1V0lHVjQ0cTdYaWRoaDJMbWovSC92Q2J2MGExbjRZcXFwbmM9MTswMDsn\"", "id": "142c1afe-837a-eb11-b853-000d3a0e8d23", "jobno": "P0000066", "taskno": "2500", "description": "Fixed Assets", "preOrder": false, "requireComments": false, "externalTimeEntry": true, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O1F2bjFpWmZHNzloaFVPZDUzMVNkM2kvdkpHQ2ZycGtIdTJacUtHZ0ZKK1k9MTswMDsn\"", "id": "69e9a28c-917a-eb11-b853-000d3a0e8d23", "jobno": "P0000066", "taskno": "4100", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 }, { "@odata.etag": "W/\"JzQ0O2JTdXRwYXJVNC83aXlBVTc3QnoweUV0c0lYRWUwNytqREtKQXViR2VsTFE9MTswMDsn\"", "id": "88579809-927a-eb11-b853-000d3a0e8d23", "jobno": "P0000066", "taskno": "4200", "description": "", "preOrder": false, "requireComments": false, "externalTimeEntry": false, "integrationTaskName": "", "integrationTaskPK": 0 } ] }
POST External Tasks using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks
Sample Request Body:
{
"jobno": "P0000029",
"taskno": "36000",
"description": "HR Training / Tasks ",
"preOrder": false,
"requireComments": false,
"externalTimeEntry": true,
"integrationTaskName": "Employee Kudos",
"integrationTaskPK": 35703
}
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/externaltask/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/externaltasks/$entity",
"@odata.etag": "W/\"JzQ0O0dEZWxuVTc2R0FId0lSZEhybys5U3QxOFB4NExWN3FvbGpWMlhJSHJXNjg9MTswMDsn\"",
"id": "8e062dd0-2bb2-eb11-9b52-000d3a3c0018",
"jobno": "P0000029",
"taskno": "36000",
"description": "HR Training / Tasks ",
"preOrder": false,
"requireComments": false,
"externalTimeEntry": true,
"integrationTaskName": "Employee Kudos",
"integrationTaskPK": 35703
}
Integration Tasks
GET Integration Tasks using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationtask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationtasks
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationtask/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationtasks",
"value": [
{
"@odata.etag": "W/\"JzQ0O0hoVjdDd0JsQU5SSC9ib0cyTThKZUNJTGVzQS9oZXRxQUtYeTRvRmFCZDg9MTswMDsn\"",
"workItemId": 0,
"parentWorkItemId": "1a10e74f-13b9-4584-b68b-38a70de96b0c",
"title": "Test Integration Task"
},
{
"@odata.etag": "W/\"JzQ0O0hLYjVwdmVaak5CeW82UldGVUl0N3IwYXJGU2FDTXBYRkF1cFRDQXl2S2M9MTswMDsn\"",
"workItemId": 82,
"parentWorkItemId": "94919702-77d1-4e4e-9979-a699f183abde",
"title": "Skyline - Custom Invoice"
},
{
"@odata.etag": "W/\"JzQ0O2twUTRjQmtYRHM0WUFDbnJtdjNTbWpQNitta25pdlJGTldiLzJydVV6c289MTswMDsn\"",
"workItemId": 83,
"parentWorkItemId": "1a10e74f-13b9-4584-b68b-38a70de96b0c",
"title": "Test Integration Task-2"
}
]
}
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | workItemId | Integer Specifies the unique identifier of task in integration system. | i"workItemId": 82, |
2 | parentWorkItemId | Text[50] Specifies the parent project’s name in integration system. | "parentWorkItemId": "1a10e74f-13b9-4584-b68b-38a70de96b0c", |
3 | title | Text[255] Specifies the name/ description of the task in integration system. | "title": "Skyline - Custom Invoice" |
POST Integration Tasks using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationtask/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationtasks
Sample Request Body:
{
"workItemId": 100,
"parentWorkItemId": "1a10e74f-13b9-4584-b68b-38a70de96b0c",
"title": "Test Integration API"
}
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationtask/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationtasks/$entity",
"@odata.etag": "W/\"JzQ0O2hEMFFheEFVd3lTelJPdnRHcjNZcXNDMXRETEVWL3ZQM01ncDJpamF2SFU9MTswMDsn\"",
"workItemId": 100,
"parentWorkItemId": "1a10e74f-13b9-4584-b68b-38a70de96b0c",
"title": "Test Integration API"
}
Timecard
GET Timecards using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timecard/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timecards
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timecard/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timecards",
"value": [
{
"@odata.etag": "W/\"JzQ0OzZmcWI5TlgyUnFDQ2NaamZ6cm0rRVpHSnJ6ajJWcjZRY09pa3RJeTZUZW89MTswMDsn\"",
"id": "9285a63a-6182-eb11-b853-000d3a049031",
"projectNumber": "API00010",
"projectTaskCode": "1500",
"resourceCode": "R1480",
"workTypeCode": "HALFRATEL",
"quantity": 3,
"description": "",
"customerNumber": "30000",
"unitOfMeasure": "HOUR",
"resourceGroupNo": "",
"costType": "",
"periodStartDate": "2021-03-01",
"date": "2021-03-02",
"timesheetCurrencyCode": ""
},
{
"@odata.etag": "W/\"JzQ0O1cycEZKOG4vbjlPajZ2ZWdmZ25FRFVwMEhObTZ1RVVRRVRTYjk3dFFXczA9MTswMDsn\"",
"id": "9485a63a-6182-eb11-b853-000d3a049031",
"projectNumber": "API00010",
"projectTaskCode": "1500",
"resourceCode": "R1480",
"workTypeCode": "HALFRATEL",
"quantity": 5,
"description": "",
"customerNumber": "30000",
"unitOfMeasure": "HOUR",
"resourceGroupNo": "",
"costType": "",
"periodStartDate": "2021-03-01",
"date": "2021-03-04",
"timesheetCurrencyCode": ""
}
] }
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | projectNumber | Code[20] Specifies the project no. from the list of projects on which the resource has worked. | "projectNumber": "API00010", |
2 | projectTaskCode | Code[20] Specifies the task no. from the list of tasks for this project. | "projectTaskCode": "1500", |
3 | resourceCode | Code[20] Specifies the number of the resource whose timesheet is being entered. | "resourceCode": "R1480", |
4 | workTypeCode | Code[20] Code[10] Specifies a work type code from the list of available work types or leave blank. | "workTypeCode": "HALFRATEL", |
5 | quantity | Decimal Specifies the quantity in Unit of Measure Code for which resource has worked on this task. | "quantity": 5, |
6 | description | Text[100] Specifies the description that is contained in the details about the timesheet line. | "description": "", |
7 | customerNumber | Code[20] Specifies the number of the customer who pays for the project. | "customerNumber": "30000", |
8 | unitOfMeasure | Code[10] Specifies the unit of measure for the resource. | "unitOfMeasure": "HOUR", |
9 | resourceGroupNo | Code[20] Specifies the resource group for the resource. | "resourceGroupNo": "", |
10 | costType | Code[10] Specifies the cost type of the resource | "costType": "", |
11 | periodStartDate | Date Specifies the start date of the timesheet period. | "periodStartDate": "2021-03-01", |
12 | date | Date Specifies the date of timesheet/ billing. | "date": "2021-03-04", |
13 | timesheetCurrencyCode | Code[10] Specifies the currency code. | "timesheetCurrencyCode": "" |
POST Timecards using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timecard/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timecards
Sample Request Body:
{
"projectNumber": "API00010",
"projectTaskCode": "1500",
"resourceCode": "R1480",
"workTypeCode": "HALFRATEL",
"quantity": 4,
"description": "Testing API",
"customerNumber": "30000",
"unitOfMeasure": "HOUR",
"resourceGroupNo": "",
"costType": "",
"periodStartDate": "2021-03-01",
"date": "2021-03-05",
"timesheetCurrencyCode": ""
}
Sample Response:
`{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timecard/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timecards/$entity",
"@odata.etag": "W/\"JzQ0O0JPUFBhSkhVMERDanJheGRsbzltQU1UWGpCKzdjL2Z2Ly8vaWVGcGt3dFE9MTswMDsn\"",
"id": "e82d0b6e-45ae-eb11-9b4f-000d3a23f6ab",
"projectNumber": "API00010",
"projectTaskCode": "1500",
"resourceCode": "R1480",
"workTypeCode": "HALFRATEL",
"quantity": 4,
"description": "Testing API",
"customerNumber": "30000",
"unitOfMeasure": "HOUR",
"resourceGroupNo": "",
"costType": "",
"periodStartDate": "2021-03-01",
"date": "2021-03-05",
"timesheetCurrencyCode": ""
}
Timeperiods
GET List of Timecards using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timeperiod/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timeperiods
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timeperiod/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timeperiods",
"value": [
{
"@odata.etag": "W/\"JzQ0OzBjQ3phMExDa1U3TnVodm85WGN2aXBsRW9GUThQdzY3NzBlUUYwSzQ0K1E9MTswMDsn\"",
"id": "468a1b67-b381-eb11-b853-000d3a049031",
"startDate": "2020-01-01",
"resource": "R1480",
"type": "Month",
"endDate": "2020-01-31",
"description": "Month 12 - 01/31/20",
"detailLevel": "Day",
"open": true,
"timeEntryStatus": "Not Used Yet"
},
{
"@odata.etag": "W/\"JzQ0O0N6VlhyY2lYWUNyeHNrUFE3ekh3RHUyWDJsK3d4S0JxL2kweTNoRm5xdVk9MTswMDsn\"",
"id": "478a1b67-b381-eb11-b853-000d3a049031",
"startDate": "2020-02-01",
"resource": "R1480",
"type": "Month",
"endDate": "2020-02-29",
"description": "Month 13 - 02/29/20",
"detailLevel": "Day",
"open": true,
"timeEntryStatus": "Not Used Yet"
}
]
}
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | startDate | Code[20] Date Specifies the start date of the timeperiod. | "startDate": "2020-02-01", |
2 | resource | Code[20] Specifies the resource for whom timeperiod is created. | "resource": "R1480", |
3 | type | Specifies the type of timeperiod, applicable options are : Day,Week,Week2,Month,,,"Bi Weekly","Semi Monthly | "type": "Month", |
4 | endDate | Date Specifies the end date of the timeperiod. | "endDate": "2020-02-29", |
5 | description | Text[30] Specifies the description of the timeperiod | "description": "Month 13 - 02/29/20", |
6 | detailLevel | Option: Day, Week, Month Specifies the detail level of the timeperiod, it is option type field with option values as Day, Week and Month | "detailLevel": "Day", |
7 | open | Boolean True value specifies that the timeperiod is open. | "open": true, |
8 | timeEntryStatus | Option Not Used Yet, Open, Waiting PM Approval, Waiting LM Approval, Waiting PE Approval, Waiting Posting, Rejected, Posted. Specifies the current status of time entry. | "timeEntryStatus": "Not Used Yet" |
POST Timeperiods using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timeperiod/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timeperiods
Sample Request Body:
{
"startDate": "2022-01-01",
"resource": "R1490",
"type": "Month",
"endDate": "2022-01-31",
"description": "Month 1 - 01/31/22",
"detailLevel": "Day",
"open": true,
"timeEntryStatus": "Not Used Yet"
}
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/timeperiod/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/timeperiods/$entity",
"@odata.etag": "W/\"JzQ0O3YxcmtPWUxEK3JOMy9YSE5PNDBmc2FPTi9qLzJTc0ZEcVgyZmhydExyUWc9MTswMDsn\"",
"id": "79c5ec74-4eae-eb11-9b4f-000d3a23f6ab",
"startDate": "2022-01-01",
"resource": "R1490",
"type": "Month",
"endDate": "2022-01-31",
"description": "Month 1 - 01/31/22",
"detailLevel": "Day",
"open": true,
"timeEntryStatus": "Not Used Yet"
}
Integration Entry Log
GET Integration Entry Log
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationlog/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationlogs
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationlog/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationlogs",
"value": [
{
"@odata.etag": "W/\"JzQ0O3FNMjhQVGpHdjJCUmNIOWE2M2RoUzFSTEsxNkJBWHljb1RESGRNa29hU3c9MTswMDsn\"",
"entryNo": 118,
"jSONRequest": "",
"logCreatedOn": "2021-02-03T08:51:48.62Z",
"description": "Test",
"status": "Success",
"integrationTable": "Resources",
"flowName": "",
"retry": false
},
{
"@odata.etag": "W/\"JzQ0OzYyTHJpS29TNm0ybncxZDBqNUpjUWJ4UmJrcDJzV2tMNlpPVVZ4cVJWNjA9MTswMDsn\"",
"entryNo": 119,
"jSONRequest": "",
"logCreatedOn": "2021-02-03T08:51:49.327Z",
"description": "Test",
"status": "Success",
"integrationTable": "Resources",
"flowName": "",
"retry": false
}
]
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | entryNo | Integer Specifies the unique value of the entry number, which is auto incremented on insertion of data from integration system. | "entryNo": 119, |
2 | jSONRequest | Text[2048] Specifies the JSON request used in the API call by the integration system. | "jSONRequest": "", |
3 | logCreatedOn | DateTime Specifies the date and time of log creation. | "logCreatedOn": "2021-02-03T08:51:49.327Z", |
4 | description | Text[500] Specifies the description/ purpose/ explanation of log entry. | "description": "Test", |
5 | status | Option: Success, Failure Specifies the status of log entry, it is either success or failure. | "status": "Success", |
6 | integrationTable | Option : Projects, Project Tasks, Time Periods, Resources, Time Entry Specifies the table to which log entry is related, Options are projects, project tasks, time periods, resources, time entry. | "integrationTable": "Resources", |
7 | flowName | Text[250] Specifies the applicable flow name used in the power automation system. | "flowName": "", |
8 | retry | Boolean Specifies the records which are marked for retrying to resolve error. This is applicable only for records having status as failure. | "retry": false |
POST Integration Entry Log using API
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationlog/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationlogs
Sample Request Body:
{
"jSONRequest": "",
"logCreatedOn": "2021-02-03T08:51:48.62Z",
"description": "Test",
"status": "Success",
"integrationTable": "Resources",
"flowName": "",
"retry": false
}
Sample Response:
{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationlog/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationlogs/$entity",
"@odata.etag": "W/\"JzQ0O3dGZGpkZkFkNzFGMWhVUWtFeDVDWnJ4ZGtUdkpVMTdOaFZFZmR1R1dVQ009MTswMDsn\"",
"entryNo": 14061,
"jSONRequest": "",
"logCreatedOn": "2021-02-03T08:51:48.62Z",
"description": "Test",
"status": "Success",
"integrationTable": "Resources",
"flowName": "",
"retry": false
}
Integration Setup
This is a Business Central Setup table having one record only for configuration of Integration System and associated credentials.
GET Integration Setup using API
GET https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationsetup/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationsetup
Sample Response:
`{
"@odata.context": "https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationsetup/v1.0/$metadata#companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationsetup",
"value": [
{
"@odata.etag": "W/\"JzQ0O2JRMExpK2EydFdmMlAvbytOQXNzZ1kyZUtPQnVTTTRNSkxkWW5wYTU3RGM9MTswMDsn\"",
"primaryKey": "",
"enableIntegration": true,
"enableLog": true,
"integrationURL": "https://dev.azure.com",
"integrationType": "DevOps",
"organizationName": "velosio"
}
]
}
Sr. No. | Field/ Tag | Description | Example |
---|---|---|---|
1 | primaryKey | Text[50] Specifies the unique primary key of the table. Generally, this field is blank. | "primaryKey": "", |
2 | enableIntegration | Boolean Specifies whether to enable integration with external system or not. | "enableIntegration": true, |
3 | enableLog | Text[50] Specifies the unique primary key of the table. Generally, this field is blank. | "enableLog": true, |
4 | integrationURL | Text[250] Specifies the URL of the system with which integration is done | "integrationURL": "https://dev.azure.com", |
5 | integrationType | Enum [Option]: Jira, DevOps Specifies the system with which integration is done. | "integrationType": "DevOps", |
5 | organizationName | Text[50] Specifies the organization name in the external/ integration system. | "organizationName": "velosio" |
POST Integration Setup using API
POST: As per design, using APIs data can be read only from this table and insertion of data through API is not allowed. If we try to call POST function of the API user will get error.
POST https://api.businesscentral.dynamics.com/v1.0/7ff9c274-542c-4f17-9fe9-6a2aad51085c/sandbox/api/progressus/integrationsetup/v1.0/companies(6ff64c7a-b1fd-ea11-bc7d-00155df3a615)/integrationsetup
Sample Response:
{
"error": {
"code": "Application_DialogException",
"message": "You cannot insert data in Integration Setup table through API. CorrelationId: 961123e0-0c77-4687-96cb-ab23f3c1d08c."
}
}