ITM Platform's API
With the ITM Platform API, you can quickly and easily integrate your existing company applications, build your own, or synchronize data with your favorite data analysis tools such as MS Excel, Tableau, or Power BI.
ITM Platform’s API is built using the REST architecture, so you should be up and running swiftly if you are familiar with REST APIs. Responses are all returned in JSON, and potential errors include the HTTP error codes.
Note on version 2
This documentation includes resources and actions of version 2.Some resources of version 1 have been replaced, in which case you will notice a DEPRECATED tag, whose names are also marked with v1
. We strongly recommend using version 2 when available.
Host URL endpoints are as follows:
- Version 1 (v1):
https://api.itmplatform.com/companyURL
- Version 2 (v2):
https://api.itmplatform.com/v2/companyURL
If version 1 or no version is specified, use the version 1 host. For example https://api.itmplatform.com/MyCompany/projects
When version 2 is specified, use the version 2 host. For example https://api.itmplatform.com/v2/MyCompany/projects
⚠ All examples follow the v1 convention, unless otherwise specified. Please be aware that you must add /v2/
when using version 2 resources.
Authentication ¶
Authentication using API Key ¶
This method provides a session token that must be passed as an HTTP header on any subsequent call to the ITM Platform API.
The API Key can be found within the My Profile section of your ITM Platform account. Permissions granted on ITM Platform will apply to the API calls.
The generated token will expire 30 minutes after the last call to the API.
The API key does not expire, but we recommend changing it every two months.
Get AuthenticationGET/login/{APIKey}
Gets the sessions token based on the API Key
Example URI
- APIKey
string
(required) Example: 3140fcb4-3462-4cad-afcc-a75d266af47d
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Token": "552520150723161530268",
"UserID": "1686",
"Result": "1",
"ResultStatus": "Success"
}
400
Headers
Content-Type: application/json
Body
{
"Incorrect company or api key."
}
Limits ¶
The following quotas apply to the number of requests coming from the same IP address:
-
5 requests per second
-
100 requests per minute
-
4,000 requests per hour
-
10,000 requests per day
Filtering v1 ¶
When specified, you can use this filtering on GET requests, applying filter operators on the URL parameters.
Each request parameters will depend on the endpoint you are using, but all have filter operators and conjunction operators operators to build your request.
Filter Operators
-
gt
- “greater than” - returns items with the specified attribute that is greater than the defined value -
lt
- “less than” - returns items with the specified attribute that is less than the defined value -
eql
- “equal to” - returns items with the specified attribute that is equal to the defined value
Conjunction operators
-
AND
- returns items that meet all filter operators -
OR
- returns items that meet at least one filter operator
Example
Using the /clients
endpoint:
Filter, Page, Sort v2 ¶
On version-2 resources, you can use the following advanced options:
-
Pagination allows navigating trough the different pages of query results
-
Filtering the results to get a more accurate response
-
Sorting the results by any of its properties
-
Property selection to pick exactly the fields you need and improve performance
All these features are available using the path /search
after the resource that you want to retrieve records of.
Use /search
path right after the resource of which you want to format the response. For example /projects/search
You can use both GET and POST methods on any resource, although we recommend using POST whenever possible.
Because the GET doesn’t allow a body request payload, the request must be URL encoded following the specifications of each option. Take into account that the URL length limit is 2048 characters.
The POST method has no limitations in size.
Pagination
By default, the response of a paginated resource will be limited to 50 items. This is an extract of a response example:
{"total" : 1125,
"pagerId": "44b7fecc-2fe4-4faa-b82d-40a9033d5ecc",
"page": 1,
"pageSize": 50}
To access items exceeding the first 50, you need paging using the following parameters:
-
total
(read-only) Number of total items for the current request. -
pagerId
(read / write) (optional) A string of up to 36 characters that will identify the pagination for this query. You can provide your own, or let the resource generate it. For example, you can set thepagerid: 4
.
Please note that you can switch between multiple pages with the samepagerId
, but if you make changes to sorting, filtering or properties, thepagerId
has to change. -
page
(read / write) (optional) The page you are requesting. The first page is 1. -
pageSize
You can change the default page size. The maximum is set to 500 items.
You can calculate the number of pages dividing the total
items by the pageSize
Pagination applies to both GET and POST methods of paginated resources, either in the query parameters or the body request payload in POST methods.
Example URI
POST using the body request payload
"page": 3,
"pageSize": 10,
"pagerId": "0c3d0f0a-12c1-4546-9096-93c3b9df811i"
Filtering
Resources providing a list of items can be filtered to narrow down the results, which will lead to a more precise result and better performance.
You can filter by any item property (like Name
), using the filter
object in the body request payload if you are using POST or encoded in the query string in GET methods.
A simple payload example when using the POST method
{
"Filter": {
"Name": "Build the app"
}
}
The example above, using the GET method, would add the following query string to the URL
?filter=%7B%22Name%22%3A%20%22Build%20the%20app%22%7D
This is the URL decoded
?filter={"Name": "Build the app"}
You can also use operators to create more complex queries.
Example URI
Body payload
{
"Filter": {
"Name": { "$regex": "growth"},
"KindId": { "$in" : [2, 3] }
}
}
The example above can also work on a GET method, encoding the payload to send the string in the filter
parameter.
?filter=%7B%22Name%22%3A%7B%22%24regex%22%3A%22growth%22%7D%2C%22KindId%22%3A%7B%22%24in%22%3A%5B2%2C3%5D%7D%7D
The decoded version would look like this
?filter={"Name":{"$regex":"growth"},"KindId":{"$in":[2,3]}}
Operators
The following is a list of all available operators
Operator | Description | Example |
---|---|---|
[none] | Returns any items that match the specified value. It is also referred to as the equality comparator operator. | {“Name”:“App”} |
$ne | Returns any items that do not match the specified value. It is also referred to as the inequality comparator operator. | {“Duration”:{"$ne":3}} |
$in | Returns any items that match any of the specified values in the set. It is also referred to as the in comparison operator. Use only one data type in the specified values. | {“TypeId”:{"$in":[1,2,3,4,5]}} |
$nin | Returns any items that do not match any of the specified values in the set. It is also referred to as the not in comparison operator. | {“TypeId”:{"$nin":[1,2,3,4]}} |
$lt | Returns any items that have a value that is less than the specified value in the set. It is also referred to as the less than comparison operator. | {“Duration”:{"$lt":3}} |
$lte | Returns any items that have a value that is less than or equal to the specified value in the set. It is also referred to as the less than or equals comparison operator. | {“Duration”:{"$lte":3}} |
$gt | Returns any items that have a value that is greater than the specified value in the set. It is also referred to as the greater than comparison operator. | {“Duration”:{"$gt":3}} |
$gte | Returns any items that have a value that is greater than or equal to the specified value in the set. It is also referred to as the greater than or equals comparison operator. | {“Duration”:{"$gte":3}} |
$bt | Returns any items that have a value that is between two values provided in a set. It is also referred to as the between operator. | {“StartDate”: { “$bt”: [“2023-09-01”, “2023-11-30”] }} |
$regex | Returns any items that have an expression that matches a pattern of strings in the set. It is also referred to as the regular expression predicate. | {“name”:{"$regex":/^a.*/}} |
Sorting
You also can request a list sorted by any of the retrieved properties (fields).
Sorting can be specified in the body request payload for POST methods or as part of the query string of both GET and POST methods.
-
sortBy
specifies the property that will be used to sort the list -
sortOrder
accepts two values:asc
ordesc
Example URI
POST using the body request payload
"sortBy": "Name",
"sortOrder": "desc"
Property selection
The properties (fields) retrieved will follow the authenticated user’s preferences unless otherwise specified using the columns
parameter.
-
The default properties will be retrieved if the authenticated user has no specific columns defined within the ITM Platform’s application. These default properties differ from resource to resource and are visible when selecting ‘Default’ in the list column selector. Some mandatory properties (such as
Id
orName
) and custom fields will be retrieved along with these default properties. -
If the authenticated user has already defined preferred columns within the resource list in ITM Platform (for example, the project list), then those columns + mandatory columns + custom fields will be retrieved.
-
If you request specific properties, the resource will retrieve only those.
Request specific properties
Requesting columns is performed using the columns
parameter:
columns
Object containing an operator and the properties involved. The most common will be$in
Property selection applies to POST methods of resources accepting property selection.
Example URI
Body payload
{
"Columns": { "$in": ["Id", "Name"] }
}
The example above can also work on a GET method, encoding the payload to send the string in the filter
parameter.
?columns=%7B%22%24in%22%3A%5B%22Id%22%2C%22Name%22%5D%7D
The decoded version would look like this
?columns={"$in":["Id","Name"]}
All together
You can combine pagination, filtering, sorting and property selection.
Example URI
Body payload
{
"Filter": {
"Name": { "$regex": "growth"},
"KindId": { "$in" : [2, 3] }
}
,
"Columns": { "$in": ["Id", "Name"] }
}
Projects ¶
Projects ¶
The /projects
endpoint is available both for v1 and v2 versions.
-
v1: https://api.itmplatform.com/companyURL/projects (Only GET)
-
v2 : https://api.itmplatform.com/v2/companyURL/projects (Both GET and POST)
We recommend using v2.
Get Projects v1 v2GET/projects
Available both for v1 and v2 versions.
If you are using v2, this method accepts paging and sorting, as described in the section Filter, Page, Sort v2. If you need filter and property selection, use the POST
If you are using v1 This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
ProjectId
-
ProjectName
-
ProjectNo
-
ProjectType.ProjectTypeName
-
ProjectType.ProjectTypeId
-
ProjectStatus.ProjectStatusName
-
ProjectStatus.ProjectStatusId
-
ProjectApproval.ProjectApprovalName
-
ProjectApproval.ProjectApprovalId
-
ProjectPriority.ProjectPriorityName
-
ProjectPriority.ProjectPriorityId
-
Duration
-
ProjectStartDate
-
ProjectEndDate
-
Assessment.AssessmentName
-
Assessment.AssessmentId
-
ProjectProgressComplete
-
ProjectProgressDate
-
CompanyProjectCode
-
ProjectTeam.ProjectManagers.UserId
-
ProjectTeam.ProjectTeamMembers.UserId
-
BusinessGoal.BusinessGoalName
-
BusinessGoal.BusinessGoalId
-
BusinessGoalCategory.BusinessGoalCategoryName
-
BusinessGoalCategory.BusinessGoalCategoryId
-
Sponsor.SponsorName
-
Sponsor.SponsorId
-
InternalClient.InternalClientName
-
InternalClient.InternalClientId
-
ExternalClient.ExternalClientName
-
ExternalClient.ExternalClientId
-
MainProcessAffected.MainProcessAffectedName
-
MainProcessAffected.MainProcessAffectedId
-
DestinationResource.DestinationResourceName
-
DestinationResource.DestinationResourcesId
-
PerformingUnit.PerformingUnitName
-
PerformingUnit.PerformingUnitId
-
ProjectMethodTypeId
-
IsProjectManager
-
Program.ProgramName
-
Program.ProgramId
-
MemberName
Example URI
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ProjectId": 331,
"AccountId": 1142,
"ProjectName": "iPhone Mobile Application - 1",
"ProjectNo": "PR-1142-13100001",
"ProjectType": {
"ProjectTypeName": "category 3",
"ProjectTypeId": 15866,
"ProjectTypeIcon": null
},
"ProjectStatus": {
"ProjectStatusName": "Closed",
"ProjectStatusId": 12741,
"ProjectStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/lock.png"
},
"ProjectApproval": {
"ProjectApprovalName": "Rejected",
"ProjectApprovalId": 11433,
"ProjectApprovalIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/status-busy.png"
},
"ProjectPriority": {
"ProjectPriorityName": "High",
"ProjectPriorityId": 7890,
"ProjectPriorityIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/flag.png"
},
"Duration": 5239,
"ProjectStartDate": "2009-10-01T00:00:00Z",
"ProjectEndDate": "2029-10-30T00:00:00Z",
"Assessment": {
"AssessmentName": "test1",
"AssessmentId": 5314,
"AssessmentIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/icon_notepad.png"
},
"ProjectProgressComplete": 12,
"ProjectProgressDate": "2017-09-04T20:09:23Z",
"CompanyProjectCode": "IAPP1",
"ProjectTeam": {
"ProjectManagers": [
{
"UserId": 1689,
"EmailAddress": "torel@globalcorp360.com",
"DisplayName": "Travis Orellana"
},
{
"UserId": 179,
"EmailAddress": "major.wyman@globalcorp360.com",
"DisplayName": "Major Wyman"
}
],
"ProjectTeamMembers": [
{
"UserId": 1688,
"EmailAddress": "JohnDoe@globalcorp360.com1",
"DisplayName": "John Doe"
}
],
"ProjectGuests": []
},
"BusinessGoal": {
"BusinessGoalName": "My Goal",
"BusinessGoalId": 142
},
"BusinessGoalCategory": {
"BusinessGoalCategoryName": "1234",
"BusinessGoalCategoryId": 6922
},
"Sponsor": {
"SponsorName": "Android",
"SponsorId": 458
},
"InternalClient": {
"InternalClientName": "PHP",
"InternalClientId": 456
},
"ExternalClient": {
"ExternalClientName": "New Again Client",
"ExternalClientId": 95
},
"MainProcessAffected": {
"MainProcessAffectedName": "new Activity\\PRC1",
"MainProcessAffectedId": 115
},
"DestinationResource": {
"DestinationResourceName": "Asset1\\Test",
"DestinationResourcesId": 134
},
"PerformingUnit": {
"PerformingUnitName": "Android",
"PerformingUnitId": 458
},
"Active": true,
"ProjectMethodTypeId": 1,
"IsProjectManager": true,
"Program": null,
"AllCustomFields": {
"Test Text Field": "2017-10-04T00:00:00",
"Test New Field": "123"
}
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Please enter valid field name",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project v2 ¶
Get Projects v2POST/projects/search
Only available on v2, this method accepts paging, sorting, filtering and property selection as described in the section Filter, Page, Sort v2.
Example URI
Headers
Content-Type: application/json
Token: [token]
Body
{
"Filter": {
"Name": {
"$regex": "growth"
},
"KindId": {
"$in": [
2,
3
]
}
},
"Columns": {
"$in": [
"Id",
"Name"
]
}
}
200
Headers
Content-Type: application/json
Body
[
{
"ProjectId": 331,
"AccountId": 1142,
"ProjectName": "Mobile Application Growth",
"ProjectNo": "PR-1142-13100001",
"ProjectType": {
"ProjectTypeName": "category 3",
"ProjectTypeId": 15866,
"ProjectTypeIcon": null
},
"ProjectStatus": {
"ProjectStatusName": "Closed",
"ProjectStatusId": 12741,
"ProjectStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/lock.png"
},
"ProjectApproval": {
"ProjectApprovalName": "Rejected",
"ProjectApprovalId": 11433,
"ProjectApprovalIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/status-busy.png"
},
"ProjectPriority": {
"ProjectPriorityName": "High",
"ProjectPriorityId": 7890,
"ProjectPriorityIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/flag.png"
},
"Duration": 5239,
"ProjectStartDate": "2009-10-01T00:00:00Z",
"ProjectEndDate": "2029-10-30T00:00:00Z",
"Assessment": {
"AssessmentName": "test1",
"AssessmentId": 5314,
"AssessmentIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/icon_notepad.png"
},
"ProjectProgressComplete": 12,
"ProjectProgressDate": "2017-09-04T20:09:23Z",
"CompanyProjectCode": "IAPP1",
"ProjectTeam": {
"ProjectManagers": [
{
"UserId": 1689,
"EmailAddress": "torel@globalcorp360.com",
"DisplayName": "Travis Orellana"
},
{
"UserId": 179,
"EmailAddress": "major.wyman@globalcorp360.com",
"DisplayName": "Major Wyman"
}
],
"ProjectTeamMembers": [
{
"UserId": 1688,
"EmailAddress": "JohnDoe@globalcorp360.com1",
"DisplayName": "John Doe"
}
],
"ProjectGuests": []
},
"BusinessGoal": {
"BusinessGoalName": "My Goal",
"BusinessGoalId": 142
},
"BusinessGoalCategory": {
"BusinessGoalCategoryName": "1234",
"BusinessGoalCategoryId": 6922
},
"Sponsor": {
"SponsorName": "Android",
"SponsorId": 458
},
"InternalClient": {
"InternalClientName": "PHP",
"InternalClientId": 456
},
"ExternalClient": {
"ExternalClientName": "New Again Client",
"ExternalClientId": 95
},
"MainProcessAffected": {
"MainProcessAffectedName": "new Activity\\PRC1",
"MainProcessAffectedId": 115
},
"DestinationResource": {
"DestinationResourceName": "Asset1\\Test",
"DestinationResourcesId": 134
},
"PerformingUnit": {
"PerformingUnitName": "Android",
"PerformingUnitId": 458
},
"Active": true,
"ProjectMethodTypeId": 1,
"IsProjectManager": true,
"Program": null,
"AllCustomFields": {
"Test Text Field": "2017-10-04T00:00:00",
"Test New Field": "123"
}
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Please enter valid field name",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project v2 ¶
Get a project v2GET/projects/{?ProjectId}
Example URI
- ProjectId
int
(required) Example: 32005
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Id": 32005,
"No": "PR-2925-13080001",
"Name": "New product line",
"Code": "NP-0001",
"Description": "<h4 style=\"color: #262626; text-align: justify;\"><span style=\"font-weight: normal; font-size: 16px;\"><img alt=\"\" style=\"border-color: currentcolor; width: 24px; height: 24px; padding-right: 10px; vertical-align: middle;\" src=\"http://www.itmplatform.com/lib/uploads/UserInfo.png\" />Description of the project</span><br />\n<br />\n<span style=\"font-size: 13px;\"><span style=\"font-weight: normal;\">Use this section to share the <strong>general purpose</strong></span><span style=\"font-weight: normal;\"> of the project, which will be visible to all members.<br />\n<br />\n</span> <span style=\"font-weight: normal;\">The \"General\" section can be used to identity, classify and establish the basic project parameters, and may include <strong>customized fields</strong> corresponding to your information needs.<br />\n<br />\n</span>\n<div style=\"text-align: center;\"><span style=\"text-align: left; font-weight: normal;\">How to create projects swiftly</span></div>\n<div style=\"font-weight: normal; text-align: center;\"><a href=\"http://www.youtube.com/watch?v=bdpHRZHv4d8&dh=1\">http://www.youtube.com/watch?v=bdpHRZHv4d8&dh=1</a></div>\n<br />\n<br />\n<br />\n</span></h4>",
"InternalCode": "NP-0001",
"InternalCostCenter": "",
"StartDate": "2021-01-01T00:00:00Z",
"EndDate": "2022-08-15T00:00:00Z",
"Duration": 422,
"Expected": 57,
"MethodTypeId": 1,
"Type": {
"Id": 90329,
"Name": "New product of business process",
"Icon": "https://demo.itmplatform.com/revamping/UploadData/Iconlibrary/databases.png"
},
"Status": {
"Id": 93288,
"Name": "In Progress",
"Icon": "https://demo.itmplatform.com/revamping/UploadData/Iconlibrary/chart-up-color.png",
"IsCompleted": false
},
"Priority": {
"Id": 56970,
"Name": "Normal",
"Icon": "https://demo.itmplatform.com/revamping/UploadData/Iconlibrary/flag-green.png",
"IsSelected": true
},
"ApprovalStatus": {
"Id": 56940,
"Name": "Approved",
"Icon": "https://demo.itmplatform.com/revamping/UploadData/Iconlibrary/status.png",
"IsSelected": false
},
"PerformingUnit": {
"Id": 12221,
"Name": "Production"
},
"BusinessGoal": {
"Id": 9233,
"Name": "New product range launch"
},
"Category": {
"Id": 30419,
"IdByLanguage": 30419,
"BaseId": 30419,
"Name": "Business growth",
"NameByLanguage": "Business growth",
"LanguageId": 1,
"IsService": false
},
"BaseCurrencyId": 8325,
"ExpectedROI": {
"Amount": 540000,
"CurrencyId": 8325,
"ExchangeRate": 1,
"AppliedDate": "2021-10-26T15:10:02Z"
},
"BusinessBenefit": "<h4 style=\"color: #262626; font-weight: normal; text-align: justify;\"><span style=\"font-size: 16px;\"><img alt=\"\" style=\"border-color: currentcolor; width: 24px; height: 24px; padding-right: 10px; vertical-align: middle;\" src=\"http://www.itmplatform.com/lib/uploads/edition-view.png\" />Business Objectives<br />\n</span><br />\n<span style=\"font-size: 13px;\"><span style=\"text-align: justify; color: #262626; background-color: #ffffff;\">Assign objectives to your projects to maintain full alignment between the organization’s generic objectives and the specific objectives of each project.<br />\n</span>\n<h4 style=\"color: #262626; font-size: 16px; font-weight: normal; text-align: justify;\"><img alt=\"\" style=\"border-color: currentcolor; width: 24px; height: 24px; padding-right: 10px; vertical-align: middle;\" src=\"http://www.itmplatform.com/lib/uploads/finance-bag-dollar.png\" />Return on investment</h4>\n<span style=\"text-align: justify; color: #262626; background-color: #ffffff;\">Specify on this data sheet the key information about the return on the investment ensuring this is present at all times throughout project execution.</span><br />\n<br />\n</span>You may also read the article connected with the scope of objectives:<br />\n<a href=\"http://www.itmplatform.com/es/blog/2012/07/12/ejecutar-crecer-transformar-reducir-costes\">http://www.itmplatform.com/es/blog/2012/07/12/ejecutar-crecer-transformar-reducir-costes</a></h4>",
"ProcessAffected": {
"Id": 12571,
"Name": "Market analysis",
"BusinessActivityId": 0,
"Path": "Commercial\\Market analysis"
},
"Sponsor": {
"Id": 12220,
"Name": "R+D"
},
"InternalClient": {
"Id": 12222,
"Name": "Sales and Marketing"
},
"ExternalClient": {
"Id": 4098,
"Name": "Government"
},
"Asset": {
"Id": 14192,
"Name": "Flagship Product",
"Path": "Products\\Flagship Product"
},
"ProgressModelId": "DURATION",
"RevenueRecognitionModelId": "FIXED",
"RevenueModelId": "BASEDONTASKS",
"RevenueRecognitionPeriodTypeId": "MONTHLY",
"AllowManualProgress": true,
"AllowManualAmountInputRR": true,
"RevenueRecognitionFutureModelId": "USEREVENUERECOGNITION",
"AllCustomFields": {
"Exposure": {
"Text": "Alto",
"Color": "Red"
},
"ERP Code": 354.411,
"Client acceptance date": "2013-03-12T00:00:00Z",
"Area": null,
"Invoice paid": "Yes"
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a project v2POST/projects/
Pass IsKanbanProject property true in body for agile project and false for waterfall project.
Example URI
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "Test Project from API INSERT",
"Description": "Project description",
"TypeId": 8331,
"ExternalClientId": 0,
"PerformingUnitId": 0,
"PriorityId": 7891,
"StatusId": 12740,
"ApprovalId": 11430,
"StartDate": "2016-06-16T00:00:00Z",
"EndDate": "2016-06-16T00:00:00Z",
"BusinessGoalId": 0,
"CategoryId": 0,
"DestinationAssetId": 0,
"MainProcessAffectedId": 0,
"InternalClientId": 0,
"SponsorId": 0,
"InternalCode": "",
"InternalCostCenter:": "",
"DescriptionOfBenefit": "",
"ExpectedROI": 15.25,
"ExpectedROICurrencyId": 1113,
"IsKanbanProject": false,
"InternalCostCenter": "100"
}
201
Headers
Content-Type: application/json
Body
{
"ProjectId": 1234,
"StatusMessage": "Project inserted successfully.",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project name.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Project name already exists.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project status id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project status id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project type id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project type id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project approval id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project approval id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project priority id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project priority id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project start date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project end date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Project end date must be greater than or equal to project start date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid assest destination id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid main process affected id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid internal client id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid sponsor id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid external client id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid performing unit id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid category id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid business goal id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid Expected ROI currency id.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
{
"ProjectId":0,
"StatusMessage": "Due to license policy, you cannot create more projects",
"StatusCode": 403
}
Update a project v2PATCH/projects/{?ProjectId}
Example URI
- ProjectId
int
(required) Example: 12262
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"Name" : "Test Project from API INSERT ",
"Description" : "Project description",
"TypeId": 8331,
"ExternalClientId" : 0,
"PerformingUnitId" : 0,
"PriorityId" : 7891,
"StatusId" : 12740,
"ApprovalId" :11430,
"StartDate" : "2016-06-16T00:00:00Z",
"EndDate" : "2016-06-16T00:00:00Z",
"BusinessGoalId" :0,
"CategoryId" :0,
"DestinationAssetId" : 0,
"MainProcessAffectedId" : 0,
"InternalClientId" : 0,
"SponsorId" : 0,
"InternalCode" : "",
"InternalCostCenter:" : "",
"DescriptionOfBenefit" : "",
"ExpectedROI" : 15.25,
"ExpectedROICurrencyId" : 1113,
"InternalCostCenter":"100"
}
201
Headers
Content-Type: application/json
Body
{
"ProjectId": 12262,
"StatusMessage": "Project updated successfully.",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project name.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project status id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project status id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project type id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project type id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project approval id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project approval id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter project priority id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project priority id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project start date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid project end date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Project end date must be greater than or equal to project start date.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid assest destination id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid main process affected id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid internal client id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid sponsor id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid external client id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid performing unit id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid category id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid business goal id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid Expected ROI currency id.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid date range. Date range of projects must be the same as or later than date range of existing tasks.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Please enter valid date range. Time entry is outside date range.<br/>",
"StatusCode": 400
}
{
"ProjectId":0,
"StatusMessage": "Project name already exists.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Budget ¶
Get a project budgetGET/project/{ProjectId}/budget
Example URI
- ProjectId
int
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"TopDownBudget": {
"TopDownInternalTeamCost": 96,
"TopDownInternalTeamHours": "00:00",
"TopDownExternalTeamCost": 1000,
"TopDownExternalTeamHours": "00:00",
"TopDownUndefinedTeamCost": 0,
"TopDownUndefinedTeamHours": "00:00",
"TopDownPurchases": 0,
"TopDownRevenue": 2000,
"TopDownInternalTeamCostCurrencyId": 1113,
"TopDownInternalTeamCostExchangeRate": 1,
"TopDownInternalTeamCostChangeApplied": "2017-06-13T02:16:26Z",
"TopDownExternalTeamCostCurrencyId": 1113,
"TopDownExternalTeamCostExchangeRate": 1,
"TopDownExternalTeamCostChangeApplied": "2017-06-12T21:00:14Z",
"TopDownPurchasesCurrencyId": 1113,
"TopDownPurchasesBudgetExchangeRate": 1,
"TopDownPurchasesChangeApplied": "2017-06-13T02:16:26Z",
"TopDownUndefinedTeamCostCurrencyId": 1113,
"TopDownUndefinedTeamCostExchangeRate": 1,
"TopDownUndefinedTeamCostChangeApplied": "2017-06-13T02:16:26Z",
"TopDownRevenueCurrencyId": 1113,
"TopDownRevenueChangeApplied": "2017-06-12T15:31:16Z",
"TopDownRevenueExchangeRate": 1
},
"BottomUpBudget": {
"BottomUpInternalTeamCost": 40817.499951,
"BottomUpInternalTeamHours": "816:00",
"BottomUpExternalTeamCost": 9457.499957,
"BottomUpExternalTeamHours": "189:00",
"BottomUpUndefinedTeamCost": 500,
"BottomUpUndefinedTeamHours": "50:00",
"BottomUpPurchases": -119880,
"BottomUpRevenue": 500
},
"ActualValues": {
"ActualInternalTeamCost": 16870,
"ActualInternalTeamHours": "587:00",
"ActualExternalTeamCost": 30850,
"ActualExternalTeamHours": "617:00",
"ActualPurchases": 400,
"ActualRevenue": 100
},
"LastPECValues": {
"PECInternalTeamCost": 0,
"PECInternalTeamHours": "00:00",
"PECExternalTeamCost": 0,
"PECExternalTeamHours": "00:00",
"PECPurchases": 400,
"PECRevenue": 0
},
"GlobalStandardCost": {
"GlobalStandardGeneralCost": 10,
"GlobalStandardInternalCost": 8,
"GlobalStandardExternalCost": 1
}
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a project budgetPUT/project/{ProjectId}/budget
Example URI
- ProjectId
int
(required) Example: 12262
Headers
Content-Type: application/json
Token: [token]
Body
{
"TopDownInternalTeamCost": 0,
"TopDownInternalTeamHours": "1",
"TopDownExternalTeamCost": 0,
"TopDownExternalTeamHours": "2",
"TopDownUndefinedTeamCost": 0,
"TopDownUndefinedTeamHours": "3",
"TopDownPurchases": 0,
"TopDownRevenue": 2000,
"TopDownInternalTeamCostCurrencyId": 1113,
"TopDownInternalTeamCostExchangeRate": 1,
"TopDownInternalTeamCostChangeApplied": "2017-06-13T02:16:26Z",
"TopDownExternalTeamCostCurrencyId": 1113,
"TopDownExternalTeamCostExchangeRate": 1,
"TopDownExternalTeamCostChangeApplied": "2017-06-12T21:00:14Z",
"TopDownPurchasesCurrencyId": 1113,
"TopDownPurchasesBudgetExchangeRate": 1,
"TopDownPurchasesChangeApplied": "2017-06-13T02:16:26Z",
"TopDownUndefinedTeamCostCurrencyId": 1113,
"TopDownUndefinedTeamCostExchangeRate": 1,
"TopDownUndefinedTeamCostChangeApplied": "2017-06-13T02:16:26Z",
"TopDownRevenueCurrencyId": 1113,
"TopDownRevenueChangeApplied": "2017-06-12T15:31:16Z",
"TopDownRevenueExchangeRate": 1
}
201
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Budget updated successfully.",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Team ¶
Get a project teamGET/project/{ProjectId}/team
Example URI
- ProjectId
int
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"type": "team",
"version": "1.1",
"ProjectMethodTypeId": "1",
"MySelfAsPM": "New.User@globalcorp360.com",
"members": {
"2191": {
"intUserId": "2191",
"name": "Adolfo Gonzalez",
"category": "Default One",
"firstName": "Adolfo",
"lastName": "Gonzalez",
"holidays": "2014/01/02,2015/04/07,2015/04/08,2015/04/09,2015/12/25,2015/12/25,",
"position": "",
"haspmlicense": true,
"hastmlicense": true,
"department": "",
"provider": "Employee",
"projectrole": "TeamMember",
"photo": ""
}
},
"tasks": {
"T-1018-17030001": {
"intTaskId": "148962",
"name": "task 1",
"status": "To Do",
"type": "Documentation",
"priority": "High123",
"start": "2017-03-01",
"end": "2017-03-02",
"members": {
"2191": {
"intProjectUserId": 2529,
"intAvailableCapacity": 960,
"taskrole": "TaskMember"
}
}
}
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Swimlanes ¶
Get project swimlanesGET/project/{ProjectId}/swimlanes
Example URI
- ProjectId
int
(required) Example: 627
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"KanbanProjectSwimlaneId": 1,
"SwimlaneName": "Default",
"Description": "desc",
"ProjectId": 627,
"ColorCode": "#fabe3c",
"Order": 0
},
{
"KanbanProjectSwimlaneId": 23,
"SwimlaneName": "Swimlane 2",
"Description": "desc",
"ProjectId": 627,
"ColorCode": "#1e98d7",
"Order": 2
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Progress Report ¶
Get project progress reportGET/project/{ProjectId}/progress/
List of all progress of a particular project, including details. This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
ProjectProgressId
-
Assessment.AssessmentName
-
Assessment.AssesmentId
-
DetailDescription
-
ShortDescription
-
PercentageCompleted
-
ReportDate
Example URI
- ProjectId
string
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ProjectProgressId": 433,
"ProjectId": 331,
"Assessment": null,
"DetailDescription": "",
"ShortDescription": "Automatic follow-up",
"PercentageCompleted": 16,
"ReportDate": "2013-11-12T10:07:32.883Z",
"CreatedBy": {
"UserId": 1686,
"EmailAddress": "torel@globalcorp360.com",
"DisplayName": "Travis Orellana"
},
"AllCustomFields": {
"test ryg": {
"Text": "Steady",
"Color": "Yellow"
}
}
},
{
"ProjectProgressId": 434,
"ProjectId": 331,
"Assessment": {
"AssessmentName": "No Critical 2",
"AssessmentId": 3288,
"AssessmentIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/icon_notepad.png"
},
"DetailDescription": "asdfgh123",
"ShortDescription": "Description1 update",
"PercentageCompleted": 50,
"ReportDate": "2013-01-01T11:39:17Z",
"CreatedBy": {
"UserId": 1686,
"EmailAddress": "torel@globalcorp360.com",
"DisplayName": "Travis Orellana"
},
"AllCustomFields": {
"test ryg": {
"Text": "Steady",
"Color": "Yellow"
}
}
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a project progress reportPOST/project/{ProjectId}/progress/
Example URI
- ProjectId
int
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"AssessmentId" : 3011,
"DetailDescription" : "detailsdescription",
"ShortDescription": "des",
"PercentageCompleted" : 45,
"ReportDate" : "2017-06-15T00:00:00Z"
}
}
201
Headers
Content-Type: application/json
Body
{
{
"ProjectProgressId":67,
"StatusMessage": "Project progress inserted successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Project does not exists",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "An error occurred while inserting project follow-up, please try again later or contact ITM Administrator",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter assessment",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please short description",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "lease enter project report date",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter valid report date",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter valid assessment",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Percentage completed should be between 0 to 100",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a project progress reportPUT/project/{ProjectId}/progress/{?ProjectProgressId}
Example URI
- ProjectId
int
(required) Example: 331- ProjectProgressId
int
(required) Example: 456
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"AssessmentId" : 3011,
"DetailDescription" : "detailsdescription",
"ShortDescription": "des",
"PercentageCompleted" : 45,
"ReportDate" : "2017-06-15T00:00:00Z"
}
}
201
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"ProjectProgressId":456,
"StatusMessage": "Project progress updated successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Project does not exists",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Project progress does not exists",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "oops some error occurred while inserting project follow-up, please try again later or contact ITM Administrator",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter assessment",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please short description",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "lease enter project report date",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter valid report date",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Please enter valid assessment",
"StatusCode": 400
}
{
"ProjectProgressId":0,
"StatusMessage": "Percentage completed should be between 0 to 100",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete a project progress reportDELETE/project/{ProjectId}/progress/{?ProjectProgressId}
Example URI
- ProjectId
int
(required) Example: 331- ProjectProgressId
int
(required) Example: 2338
200
Headers
Content-Type: application/json
Body
{
{
"ProjectProgressId": 2338,
"StatusMessage": "Project progress deleted successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"ProjectProgressId": 0,
"StatusMessage": "Project progress id doesn't exist",
"StatusCode": 400
}
{
"ProjectProgressId": 0,
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Change History ¶
Change HistoryGET/Projects/{ProjectId}/changeHistory{?fromDate}
Only available on v2, it returns the Ids for all entities (namely ProjectGeneral, BudgetAccounts, Documents, ProgressReports, Users, Purchases, Tasks, Revenue, Risks, Issues, EstimatedAndAcceptedEffort) related to the project. You can specify a date to get only the changes after that date.
Example URI
- ProjectId
string
(required) Example: 60989The ID of the project.
- fromDate
string
(optional) Example: 2020-12-20T17:00:37The starting date from which to get the changes.
200
Headers
Content-Type: application/json
Body
{
"ProjectGeneral": [
60989
],
"BudgetAccounts": [
78958
],
"Documents": [
103117
],
"ProgressReports": [
174070,
174068
],
"Users": [
45405
],
"Tasks": [
1480488,
1480489
],
"Revenue": [
37388,
37389
],
"Risks": [
13131
],
"Issues": [
1609
],
"EstimatedAndAcceptedEffort": [
839436,
924229
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Sprints ¶
Get Project Sprint ¶
Get Project Sprint SearchPOST/Projects/{ProjectId}/Sprints/Search
Example URI
- ProjectId
int
(required) Example: 62573
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 2,
"pagerid": "254318a8-fee4-4099-bdf8-8309f4f97649",
"page": 0,
"pageSize": 2,
"list": [
{
"Id": "726b7bb0-2a43-40ba-bb1c-46fd4285b55d",
"Name": "Sprint 2",
"AccountId": 4019,
"ProjectId": 62573,
"LanguageId": 0,
"Description": "",
"Duration": "Week1",
"StartDate": "2022-12-16T00:00:00Z",
"EndDate": "2022-12-22T00:00:00Z",
"Type": 0,
"IsService": false,
"CreationDate": "2022-09-16T16:05:19Z",
"Creator": {
"UserId": 54680,
"AccountId": 4019,
"EmailAddress": "darshi.shah@internal.mail",
"DisplayName": "Darshi Shah",
"UserRoleId": 0,
"FirstName": "Darshi",
"LastName": "Shah",
"Photo": "UploadData\\PHOTO\\54680.png"
}
},
{
"Id": "83338240-51d4-4c0f-b764-c8a7876a156a",
"Name": "Sprint 1",
"AccountId": 4019,
"ProjectId": 62573,
"LanguageId": 0,
"Description": "Test Sprint",
"Duration": "Week1",
"StartDate": "2022-08-09T10:18:23Z",
"EndDate": "2022-08-12T10:18:23Z",
"Type": "Project",
"IsService": false,
"CreationDate": "2022-08-09T16:58:19Z",
"Creator": {
"UserId": 54680,
"AccountId": 4019,
"EmailAddress": "darshi.shah@internal.mail",
"DisplayName": "Darshi Shah",
"UserRoleId": 0,
"FirstName": "Darshi",
"LastName": "Shah",
"Photo": "UploadData\\PHOTO\\54680.png"
}
}
]
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
500
Headers
Content-Type: application/json
Body
{
"Id": 625731,
"StatusMessage": "Project 62573 does not exist",
"StatusCode": 500
}
{
"Id": 625731,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 500
}
Project Sprints ¶
Get Project SprintGET/Projects/{ProjectId}/Sprints/{SprintId}
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a
200
Headers
Content-Type: application/json
Body
{
"Id": "83338240-51d4-4c0f-b764-c8a7876a156a",
"Name": "Sprint 1",
"AccountId": 4019,
"ProjectId": 62573,
"Description": "Test Sprint",
"Duration": "Week1",
"StartDate": "2022-08-09T10:18:23Z",
"EndDate": "2022-08-12T10:18:23Z",
"Type": "Project",
"IsService": false,
"CreationDate": "2022-08-09T16:58:19Z",
"CreatorId": 54680,
"Creator": {
"UserId": 54680,
"AccountId": 4019,
"EmailAddress": "darshi.shah@internal.mail",
"DisplayName": "Darshi Shah",
"UserRoleId": 0,
"FirstName": "Darshi",
"LastName": "Shah",
"Photo": "UploadData\\PHOTO\\54680.png"
},
"AllocatedTasks": []
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
500
Headers
Content-Type: application/json
Body
{
"Id": 625731,
"StatusMessage": "Sprint 83338240-51d4-4c0f-b764-c8a7876a156a does not exist",
"StatusCode": 500
}
{
"Id": 625731,
"StatusMessage": "Project 62573 does not exist",
"StatusCode": 500
}
{
"Id": 625731,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 500
}
Insert Project SprintPOST/Projects/{ProjectId}/Sprints/
Example URI
- ProjectId
int
(required) Example: 62573
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "Sprint 2",
"Description": "Test Sprint 2",
"StartDate": "2022-08-09T10:18:23.072Z",
"EndDate": "2022-08-09T10:18:23.072Z",
"Type": "1",
"IsService": false
}
200
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint inserted successfully",
"StatusCode": 201,
"OtherDetails": {
"Id": "014eb417-2aab-444b-b4e2-a5eba73aae5d"
}
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Please enter sprint name.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Project 625732 does not exist",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update Project SprintPATCH/Projects/{ProjectId}/Sprints/{SprintId}
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "Sprint 1",
"Description": "Test Sprint",
"StartDate": "2022-08-09T10:18:23.072Z",
"EndDate": "2022-08-12T10:18:23.072Z",
"Type": "1",
"IsService": false
}
200
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint updated successfully",
"StatusCode": 200,
"OtherDetails": {
"Id": "83338240-51d4-4c0f-b764-c8a7876a156a"
}
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
500
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint 83338240-51d4-4c0f-b764-c8a7876a157a does not exist",
"StatusCode": 500
}
{
"Id": 0,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 500
}
{
"Id": 0,
"StatusMessage": "Project 62573 does not exist",
"StatusCode": 500
}
Delete Project SprintDELETE/Projects/{ProjectId}/Sprints/{SprintId}
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a
200
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint deleted successfully.",
"StatusCode": 200
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Allocate Task to Sprint ¶
Allocate Task to SprintPOST/Projects/{ProjectId}/Sprints/{SprintId}/Allocate/{TaskId}
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a- TaskId
int
(required) Example: 1540840
200
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint allocated successfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint 83338240-51d4-4c0f-b764-c8a7876a157a does not exists.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "An archived task cannot be allocated to a sprint.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Summary tasks and milestones cannot be allocated to a sprint.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Allocate Task to Sprint ¶
Bulk Allocate Task to SprintPOST/Projects/{ProjectId}/Sprints/{SprintId}/Allocate
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a
Headers
Content-Type: application/json
Token: [token]
Body
{
"TaskIds": [
1540840
]
}
200
Headers
Content-Type: application/json
Body
{
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint 83338240-51d4-4c0f-b764-c8a7876a157a does not exists.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "An archived task cannot be allocated to a sprint.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Summary tasks and milestones cannot be allocated to a sprint.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get Allocated Tasks For Sprint ¶
Get Allocated Tasks For SprintGET/Projects/{ProjectId}/AllocatedTasks/{SprintId}
Example URI
- ProjectId
int
(required) Example: 62573- SprintId
string
(required) Example: 83338240-51d4-4c0f-b764-c8a7876a156a
200
Headers
Content-Type: application/json
Body
{
"total": 2,
"pagerid": "94a01846-4955-4529-afe3-0b533e8d7267",
"page": 0,
"pageSize": 2,
"list": [
{
"Status": {
"Id": 140204,
"Name": "New subcolumn 0",
"KanbanId": 38818,
"Color": "#fabe3c",
"Order": 0,
"Date": "2022-07-25T11:23:38Z",
"Type": {
"Id": 1,
"Name": "In Progress",
"IsArchive": false,
"IsBacklog": false
},
"Default": false,
"LanguageId": 0,
"AutomaticProgress": false,
"ParentKanbanTaskStatusId": 0
},
"Swimlane": {
"Id": 7842,
"Name": "Default"
},
"Id": 1540839,
"JiraId": 0,
"ProjectId": 62573,
"No": "",
"Name": "pen",
"Details": "",
"KindId": 3,
"RevenueMilestone": false,
"Type": null,
"Priority": null,
"ParentTask": null,
"Duration": 0,
"StartDate": "2022-07-25T00:00:00Z",
"EndDate": "",
"DisplayInPortfolio": false,
"Sprint": null,
"FavouriteId": -1
},
{
"Status": {
"Id": 140204,
"Name": "New subcolumn 0",
"KanbanId": 38818,
"Color": "#fabe3c",
"Order": 0,
"Date": "2022-09-29T16:59:45Z",
"Type": {
"Id": 1,
"Name": "In Progress",
"IsArchive": false,
"IsBacklog": false
},
"Default": false,
"LanguageId": 0,
"AutomaticProgress": false,
"ParentKanbanTaskStatusId": 0
},
"Swimlane": {
"Id": 7842,
"Name": "Default"
},
"Id": 1540840,
"JiraId": 0,
"ProjectId": 62573,
"No": "",
"Name": "in prog",
"Details": "",
"KindId": 3,
"RevenueMilestone": false,
"Type": null,
"Priority": null,
"ParentTask": null,
"Duration": 0,
"StartDate": "2022-07-25T00:00:00Z",
"EndDate": "",
"DisplayInPortfolio": false,
"Sprint": null,
"FavouriteId": -1
}
]
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Sprint 83338240-51d4-4c0f-b764-c8a7876a157a does not exists.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Professional Categories v2 ¶
Project Professional Categories v2 ¶
Get Project Professional Categories v2GET/Projects/{ProjectId}/Categories
Example URI
- ProjectId
int
(required) Example: 55711
200
Headers
Content-Type: application/json
Body
[
{
"ProjectId": 8176,
"ProfessionalCategoryId": 19874,
"Category": {
"Id": 0,
"Name": "General",
"Type": "NoCategory"
},
"StandardBillRate": {
"Amount": 0,
"CurrencyId": 0,
"ExchangeRate": 0,
"AppliedDate": "",
"BaseAmount": 10
},
"ProjectProfessionalCategoryPriceId": 578,
"IsCategoryAssociatedWithTaskOrUser": true
},
{
"ProjectId": 8176,
"ProfessionalCategoryId": 19873,
"Category": {
"Id": 4681,
"Name": "Default",
"Type": "Employee"
},
"StandardBillRate": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "",
"BaseAmount": 40
},
"ProjectProfessionalCategoryPriceId": 0,
"IsCategoryAssociatedWithTaskOrUser": true
}
]
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Associate Professional Categories To Project v2PUT/Projects/{ProjectId}/Categories
Example URI
- ProjectId
int
(required) Example: 55711
200
Headers
Content-Type: application/json
Body
{
"Id": 55711,
"StatusMessage": "Categories Linked to Project sucessfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Associate Professional Category To Project ¶
Associate Professional Category To Project v2PATCH/Projects/{ProjectId}/Category
Example URI
- ProjectId
int
(required) Example: 55711
Headers
Content-Type: application/json
Token: [token]
Body
{
"CategoryId": 21687,
"CategoryType": 2
}
200
Headers
Content-Type: application/json
Body
{
"Id": 55711,
"StatusMessage": "Categories Linked to Project sucessfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Professional Category 0 is invalid.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Insert Professional Category And Price To Project v2POST/Projects/{ProjectId}/Category
Example URI
- ProjectId
int
(required) Example: 55711
Headers
Content-Type: application/json
Token: [token]
Body
{
"CategoryId": 19874,
"CategoryType": 2,
"PricePerHour": 300
}
200
Headers
Content-Type: application/json
Body
{
"Id": 55711,
"StatusMessage": "Categories Linked to Project sucessfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Professional Category 0 is invalid.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Professional Category Price v2 ¶
Update Professional Category Price v2PATCH/Projects/{ProjectId}/Categories/{ProfessionalCategoryId}/Price
Example URI
- ProjectId
int
(required) Example: 55711- ProfessionalCategoryId
int
(required) Example: 97999
Headers
Content-Type: application/json
Token: [token]
Body
{
"PricePerHour": 250
}
200
Headers
Content-Type: application/json
Body
{
"Id": 97999,
"StatusMessage": "Price Updated sucessfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Professional Category 0 is invalid.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete Professional Category Price v2DELETE/Projects/{ProjectId}/Categories/{ProfessionalCategoryId}/Price
Example URI
- ProjectId
int
(required) Example: 55711- ProfessionalCategoryId
int
(required) Example: 97999
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Id": 97999,
"StatusMessage": "Price Deleted sucessfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Professional Category 0 is invalid.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Account Professional Categories v2 ¶
GetAccount Professional Categories v2GET/ProfessionalCategories
Example URI
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Id": 19872,
"Name": "Default delete502"
},
{
"Id": 23474,
"Name": "Software Engineer"
}
]
400
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Professional Category 0 is invalid.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Resource Capacity ¶
Get Resource Capacity ¶
Get Resource CapacityGET/resourceCapacity/?StartDate={StartDate}&Interval={Interval}&NumberOfIntervals={NumberOfIntervals}
-
Interval: Possible values are - day, week, month, quarter. Default will be day, if not specified.
-
NumberOfIntervals: It could be a number from 1 to 15.
Example URI
- StartDate
string
(required) Example: 2022-08-29- Interval
string
(required) Example: day- NumberOfIntervals
int
(required) Example: 5
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Projects": [
{
"ProjectId": 53907,
"ProjectName": "Backend revamp",
"ProjectMethodType": 2,
"RedirectURL": "http://localhost/ITM.Web/itmrozas/UserPages/CapacityManagementUnit.aspx?IsRedirect=1&IsServices=0&ForProject=1&ProjectId=53907",
"Tasks": [
{
"TaskId": 1552998,
"TaskName": "17. Change on Tasks JSON structure for sprint. Backend",
"TaskKind": 3,
"ParentTaskId": 0,
"RedirectURL": "http://localhost/ITM.Web/itmrozas/UserPages/CapacityManagementUnit.aspx?IsRedirect=1&IsTask=1&ForProject=0&ProjectId=53907&TaskId=1552998&tk=3",
"Categories": [
{
"CategoryId": 15002,
"CategoryName": "Programmer",
"CategoryType": 3,
"TaskStartDate": "2022-08-29T00:00:00",
"TaskEndDate": "2022-09-02T00:00:00",
"Efforts": [
{
"IntervalIdentity": 1,
"Demand": 31,
"Allocated": 31
}
]
}
]
}
]
}
],
"Intervals": [
{
"IntervalIdentity": 1,
"IntervalName": "08/29/2022",
"StartDate": "2022-08-29T00:00:00",
"EndDate": "2022-08-29T23:59:59"
}
],
"Categories": [
{
"CategoryId": 15002,
"CategoryName": "Programmer",
"CategoryType": 3,
"Users": [
{
"UserId": 53498,
"UserName": "Darshi Shah",
"Designation": "Developer",
"UserImage": "",
"Capacity": [
{
"IntervalIdentity": 1,
"Capacity": 480,
"IsUserOnHoliday": false
}
],
"Projects": [
{
"ProjectId": 58050,
"ProjectName": "Backend Support ",
"ProjectMethodType": 2,
"RedirectURL": "http://localhost/ITM.Web/itmrozas/UserPages/CapacityManagementUnit.aspx?IsRedirect=1&IsServices=0&ForProject=1&ProjectId=58050",
"Tasks": [
{
"TaskId": 1556175,
"TaskName": "Zendesk 5087 - Task list slow the first time (high)",
"TaskKind": 3,
"ParentTaskId": 0,
"TaskStartDate": "2022-08-17T00:00:00",
"TaskEndDate": "2022-09-09T00:00:00",
"RedirectURL": "http://localhost/ITM.Web/itmrozas/UserPages/CapacityManagementUnit.aspx?IsRedirect=1&IsTask=1&ForProject=0&ProjectId=58050&TaskId=1556175&tk=3",
"Efforts": [
{
"IntervalIdentity": 1,
"Allocated": 11
}
]
}
]
}
]
}
]
}
]
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Tasks ¶
Get Tasks v2 ¶
Get Tasks v2POST/tasks/search
Example URI
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 7,
"pagerid": "7f2710ea-9ee7-405e-bae2-3552ebf52ed8",
"page": 1,
"pageSize": 2,
"list": [
{
"StartDate": "2020-07-30T00:00:00Z",
"EndDate": "2020-08-21T00:00:00Z",
"Id": 1181502,
"ProjectId": 52265,
"IdWithinEntity": 1,
"Name": "ST1",
"KindId": 2,
"Category": "Summary",
"Type": null,
"Status": {
"Name": "To Do"
},
"Priority": null,
"ParentTask": null,
"Duration": 20,
"Sprint": {
"Name": "Sprint 5"
},
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
},
{
"StartDate": "2020-08-07T00:00:00Z",
"EndDate": "2020-08-22T00:00:00Z",
"Id": 1181507,
"ProjectId": 52265,
"IdWithinEntity": 6,
"Name": "ST2",
"KindId": 2,
"Category": "Summary",
"Type": null,
"Status": {
"Name": "To Do"
},
"Priority": null,
"ParentTask": null,
"Duration": 14,
"Sprint": null,
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
}
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Tasks v2 ¶
Get project tasks v2GET/Projects/{ProjectId}/tasks
Example URI
- ProjectId
string
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 2,
"pagerid": "f4bf9f1f-b44c-4d3a-8beb-b40dac1a888a",
"page": 1,
"pageSize": 50,
"list": [
{
"StartDate": "",
"EndDate": "",
"Id": 1190311,
"ProjectId": 43407,
"IdWithinEntity": 25,
"Name": "testsummary",
"KindId": 2,
"Category": "Summary",
"Status": {
"Name": "To Do"
},
"CreationDate": "2021-05-11T16:48:36Z",
"Team": {
"TeamMembers": []
},
"Completed": 0,
"Sprint": {
"Name": "Sprint 5"
},
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
},
{
"StartDate": "2020-09-01T00:00:00Z",
"EndDate": "2021-09-04T00:00:00Z",
"Id": 1190323,
"ProjectId": 43407,
"IdWithinEntity": 27,
"Name": "Test order summary",
"KindId": 2,
"Category": "Summary",
"Status": {
"Name": "To Do"
},
"CreationDate": "2021-05-18T18:10:52Z",
"Team": {
"TeamMembers": []
},
"Completed": 25,
"Sprint": null,
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
}
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Task Search ¶
Get Project Tasks SearchPOST/Projects/{ProjectId}/Tasks/Search
Example URI
- ProjectId
string
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 7,
"pagerid": "7f2710ea-9ee7-405e-bae2-3552ebf52ed8",
"page": 1,
"pageSize": 2,
"list": [
{
"StartDate": "2020-07-30T00:00:00Z",
"EndDate": "2020-08-21T00:00:00Z",
"Id": 1181502,
"ProjectId": 52265,
"IdWithinEntity": 1,
"Name": "ST1",
"KindId": 2,
"Category": "Summary",
"Status": {
"Name": "To Do"
},
"CreationDate": "2020-08-07T16:06:46Z",
"Team": {
"TeamMembers": []
},
"Completed": 33,
"Sprint": {
"Name": "Sprint 5"
},
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
},
{
"StartDate": "2020-08-07T00:00:00Z",
"EndDate": "2020-08-22T00:00:00Z",
"Id": 1181507,
"ProjectId": 52265,
"IdWithinEntity": 6,
"Name": "ST2",
"KindId": 2,
"Category": "Summary",
"Status": {
"Name": "To Do"
},
"CreationDate": "2020-08-07T17:24:13Z",
"Team": {
"TeamMembers": []
},
"Completed": 45,
"Sprint": null,
"AllCustomFields": {
"Number Field 2": null,
"RYG list two 6": null,
"Cust HTML 5": null,
"Percentage field test": null,
"Date one 4": null,
"List One 8": null,
"List two 8": null,
"Text field 1": null,
"Dropdwon field 7": null,
"testing for Hide/Show 123": null,
"Tests date": null
}
}
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Gantt ¶
Get GanttGET/Projects/{ProjectId}/Tasks/Gantt
Example URI
- ProjectId
string
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"success": true,
"type": "sync",
"revision": 1,
"project": {
"calendar": "general",
"startDate": "2019-07-08",
"endDate": "2022-09-04",
"progressModel": "DURATION",
"percentDone": 26,
"hoursPerDay": 8,
"daysPerWeek": 5,
"daysPerMonth": 20,
"manuallyScheduled": false
},
"calendars": {
"rows": [
{
"id": "general",
"name": "General",
"hoursPerDay": 8,
"daysPerWeek": 5,
"daysPerMonth": 20,
"intervals": [
{
"recurrentStartDate": "on Sun at 8:00",
"recurrentEndDate": "on Mon at 8:00",
"isWorking": false
},
{
"recurrentStartDate": "on Mon at 16:00",
"recurrentEndDate": "on Tue at 8:00",
"isWorking": false
}
],
"expanded": true
}
]
},
"tasks": {
"rows": [
{
"id": 1190311,
"name": "testsummary",
"status": "To Do",
"duration": 0,
"sprint": "",
"percentDone": 0,
"calendar": "general",
"effort": 0,
"baselines": [
{
"startDate": "0001-01-01",
"endDate": "0001-01-01"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": false,
"constraintType": "",
"rollup": false
},
{
"id": 1190323,
"name": "Test order summary",
"status": "To Do",
"startDate": "2020-09-01",
"endDate": "2021-09-04",
"sprint": "Sprint 1",
"duration": 315,
"percentDone": 25,
"calendar": "general",
"effort": 0,
"baselines": [
{
"startDate": "2020-09-01",
"endDate": "2021-09-04"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": false,
"constraintType": "startnoearlierthan",
"constraintDate": "2020-09-01",
"rollup": false,
"children": [
{
"id": 1190324,
"name": "Test order task1",
"status": "To Do",
"startDate": "2020-09-01",
"endDate": "2021-09-04",
"sprint": "",
"duration": 315,
"percentDone": 0,
"calendar": "general",
"effort": 0,
"baselines": [
{
"startDate": "2020-09-01",
"endDate": "2021-09-04"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": false,
"constraintType": "",
"rollup": false
},
{
"id": 1190326,
"name": "test order task 3",
"status": "To Do",
"startDate": "2020-09-01",
"endDate": "2020-09-03",
"sprint": "",
"duration": 3,
"percentDone": 0,
"calendar": "general",
"effort": 0,
"baselines": [
{
"startDate": "2020-09-01",
"endDate": "2020-09-03"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": false,
"constraintType": "",
"rollup": false
},
{
"id": 1180467,
"name": "This Task",
"status": "Completed",
"startDate": "2020-09-01",
"endDate": "2020-09-04",
"sprint": "Sprint 2",
"duration": 4,
"percentDone": 70,
"lockStatus": "locked",
"calendar": "general",
"effort": 8,
"baselines": [
{
"startDate": "2020-09-01",
"endDate": "2020-09-04"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": true,
"constraintType": "",
"rollup": false
},
{
"id": 1190325,
"name": "Test order task2",
"status": "Completed",
"startDate": "2020-09-01",
"endDate": "2020-09-02",
"sprint": "",
"duration": 2,
"percentDone": 0,
"lockStatus": "locked",
"calendar": "general",
"effort": 0,
"baselines": [
{
"startDate": "2020-09-01",
"endDate": "2020-09-02"
}
],
"schedulingMode": "Normal",
"effortDriven": false,
"manuallyScheduled": true,
"constraintType": "",
"rollup": false
}
]
}
]
},
"dependencies": {
"rows": [
{
"id": 465629,
"fromTask": 1179393,
"toTask": 1031678,
"type": 2,
"lag": "0",
"lagUnit": "day"
},
{
"id": 460878,
"fromTask": 1180468,
"toTask": 1179392,
"type": 2,
"lag": "0",
"lagUnit": "d"
}
]
},
"resources": {
"rows": [
{
"id": 7489,
"name": "Girish Tank",
"image": "UploadData\\PHOTO\\32by32_7489.jpg",
"calendar": "general"
},
{
"id": 49842,
"name": "Darshi Shah",
"image": "",
"calendar": "general"
}
]
},
"assignments": {
"rows": [
{
"id": 640822,
"event": 1031678,
"resource": 7489,
"effort": 5,
"units": 100
},
{
"id": 645182,
"event": 1031678,
"resource": 47477,
"effort": 15,
"units": 100
}
]
},
"timeRanges": {
"rows": []
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update GanttPOST/Projects/{ProjectId}/Tasks/Gantt
Example URI
- ProjectId
string
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
Body
{
"type": "sync",
"requestId": 16097428391411,
"tasks": {
"removed": [
{
"id": 1179392
}
]
}
}
200
Headers
Content-Type: application/json
Body
{
"success": true,
"requestId": 16097428391411,
"type": "sync",
"revision": null,
"tasks": {
"rows": []
},
"dependencies": {
"rows": []
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"success": false,
"responseText": "1179392: Task doesn't exists. "
}
{
"success": false,
"responseText": "Project doesn't exist. "
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Gantt Progress ¶
Insert Automatic ProgressPOST/Projects/{ProjectId}/ganttprogress/{PercentDone}
Example URI
- ProjectId
string
(required) Example: 43407- PercentDone
string
(required) Example: 50
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"success": true
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update Task Statuses ¶
Bulk Update Task StatusPOST/Projects/{ProjectId}/UpdateTaskStatuses
Example URI
- ProjectId
string
(required) Example: 62573
Headers
Content-Type: application/json
Token: [token]
Body
{
"TaskIds": "1179390",
"SelectedStatus": 77653,
"ProjectMethodTypeId": "1"
}
200
Headers
Content-Type: application/json
Body
{
"Id": 1540838,
"StatusMessage": "Task status updated successfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a task v2 ¶
Add a task v2POST/Projects/{ProjectId}/Tasks
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "tests",
"Details": "test",
"DisplayInPortfolio": true,
"TypeName": "Bug",
"PriorityName": "Medium",
"StatusName": "Doing",
"ParentId": "",
"SwimlaneName": "Swimlane default",
"StartDate": "2019-07-11",
"EndDate": "2019-07-15",
"SprintId": "56b24ea4-30cb-4037-966c-9e5bf02f3f85"
}
200
Headers
Content-Type: application/json
Body
{
"Id": 1193461,
"StatusMessage": "Task inserted successfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task v2 ¶
Update a task v2PATCH/Projects/{ProjectId}/Tasks/{TaskId}
Example URI
- ProjectId
int
(required) Example: 43407- TaskId
int
(required) Example: 1193461
Headers
Content-Type: application/json
Token: [token]
Body
{
"Id": 1193461,
"ProjectId": 43407,
"Name": "Task 1 - Type task 123",
"Details": "test",
"DisplayInPortfolio": true,
"ParentId": "",
"KanbanId": "10701",
"SwimlaneName": "Swimlane default",
"StartDate": "2019-07-10",
"EndDate": "2019-07-11",
"SprintId": "123e4567-e89b-12d3-a456-426614174000"
"CustomField": [
{
"CustomFieldBaseId": 967,
"CustomFieldValue": "11",
"CustomFieldTypeName": "Number"
},
{
"CustomFieldBaseId": 4268,
"Options": [
{
"CustomFieldOptionId": 6590
}
],
"CustomFieldTypeName": "List"
}
]
}
200
Headers
Content-Type: application/json
Body
{
"Id": 1193461,
"StatusMessage": "Task updated successfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Bulk Delete tasks v2DELETE/Projects/{ProjectId}/Tasks/
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Task 1 - Type task 123: Task deleted successfully ",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a TaskPOST/Projects/{ProjectId}/Tasks/{TaskId}
Example URI
- ProjectId
int
(required) Example: 43407- TaskId
int
(required) Example: 1190324
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Id": 1190324,
"ProjectId": 43407,
"No": "T-43407-21050004",
"Name": "Test order task1",
"Details": "testset",
"KindId": 3,
"RevenueMilestone": false,
"Type": {
"Id": 116322,
"Name": "Generic",
"Default": true
},
"Status": {
"Id": 77652,
"Name": "To Do",
"KanbanId": 0,
"Color": null,
"Order": 0,
"Date": null,
"Type": {
"Id": 2,
"Name": null
},
"Default": true,
"LanguageId": 1
},
"Priority": {
"Id": 303157,
"Name": "Medium",
"Default": true
},
"ParentTask": {
"Id": 1190323,
"Name": "Test order summary"
},
"Duration": 315,
"StartDate": "2020-09-01T00:00:00Z",
"EndDate": "2021-09-04T00:00:00Z",
"DisplayInPortfolio": false,
"Swimlane": null,
"FavouriteId": -1
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Team ¶
Get a task teamGET/project/{ProjectId}/task/{TaskId}/team/
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 11334
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"SrNo": "1",
"UserId": 1686,
"UserName": "jucli@globalcorp360.com",
"LastName": "Julio",
"FirstName": "Cline",
"ServiceAlias": "Julio Cline",
"UserId1": 1686,
"TaskUserId": 1415,
"ProjectUserId": 706,
"UserRole": "Manager",
"DepartmentName": "",
"PositionName": ""
},
{
"SrNo": "2",
"UserId": 1693,
"UserName": "stakeholder@globalcorp360.com",
"LastName": "User",
"FirstName": "New",
"ServiceAlias": "New User",
"UserId1": 1693,
"TaskUserId": 1531,
"ProjectUserId": 720,
"UserRole": "Manager",
"DepartmentName": "Asp.Net\\MVC\\MVC 2",
"PositionName": "SE"
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete a task teamDELETE/project/{ProjectId}/task/{TaskId}/team/{?TaskUserId}/
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 123- TaskUserId
int
(required) Example: 2986
200
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Deleted Successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Cannot delete reference, Actual Effort Accepted is already entered",
"StatusCode": 400
}
{
"StatusMessage": "Cannot delete reference, already in time entry",
"StatusCode": 400
}
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Assign a task teamPOST/project/{ProjectId}/task/{TaskId}/team/{?ProjectUserIds}/{?TaskManager}
Assigns a task team.
TaskManager specifies that user is task manager or not.
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 123- ProjectUserIds
string
(required) Example: 2345,345- TaskManager
bool
(required) Example: false
200
Headers
Content-Type: application/json
Body
{
"StatusMessage": "User Assigned successfully.",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Agile Task Statuses v2 ¶
Get agile task statuses v2GET/Projects/{ProjectId}/GetKanbanTaskStatus
Example URI
- ProjectId
int
(required) Example: 55713
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Id": 140204,
"Name": "Pendiente",
"KanbanId": 16864,
"Color": "",
"Order": 1,
"Date": "",
"Type": {
"Id": 1
},
"Default": false,
"LanguageId": 0
},
{
"Id": 140205,
"Name": "En curso",
"KanbanId": 16865,
"Color": "",
"Order": 2,
"Date": "",
"Type": {
"Id": 2
},
"Default": false,
"LanguageId": 0
},
{
"Id": 140206,
"Name": "completado",
"KanbanId": 16866,
"Color": "",
"Order": 3,
"Date": "",
"Type": {
"Id": 3
},
"Default": false,
"LanguageId": 0
},
{
"Id": 763398,
"Name": "Backlog",
"KanbanId": 16867,
"Color": "",
"Order": 0,
"Date": "",
"Type": {
"Id": 0
},
"Default": false,
"LanguageId": 0
},
{
"Id": 763399,
"Name": "Archivo",
"KanbanId": 16868,
"Color": "",
"Order": 4,
"Date": "",
"Type": {
"Id": 4
},
"Default": false,
"LanguageId": 0
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get or Insert agile task statuses v2PATCH/Projects/{ProjectId}/GetKanbanTaskStatus
Example URI
- ProjectId
int
(required) Example: 55713
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "Pendiente"
}
200
Headers
Content-Type: application/json
Body
{
"Id": 140204,
"Name": "Pendiente",
"KanbanId": 16864,
"Color": "",
"Order": 1,
"Date": "",
"Type": {
"Id": 1
},
"Default": false,
"LanguageId": 0
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Progress Reports ¶
Get task progress reportsGET/project/{ProjectId}/task/{TaskId}/progress/
This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
TaskName
-
TaskProgressId
-
Assessment.AssessmentName
-
Assessment.AssesmentId
-
DetailDescription
-
ShortDescription
-
PercentageCompleted
-
ReportDate
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"TaskProgressId": 12891,
"TaskId": 20441,
"TaskName": "2.0 Capacitacion Manejo",
"ProjectId": 331,
"Assessment": {
"AssessmentName": "Crítico",
"AssessmentId": 3011,
"AssessmentIcon": "https://app.itmplatform.com/App_Themes/Default/Images/Red.png"
},
"DetailDescription": "",
"ShortDescription": "dfdsf",
"PercentageCompleted": 56,
"ReportDate": "2017-06-28T15:13:22Z",
"CreatedBy": "Major Wyman",
"TaskManagers": [
{
"UserId": 1686,
"EmailAddress": "major.wyman@globalcorp360.com",
"DisplayName": "Major Wyman"
},
{
"UserId": 1693,
"EmailAddress": "JohnDoe@globalcorp360.com1",
"DisplayName": "John Doe"
}
]
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Progress Report ¶
Get a task progress reportGET/project/{ProjectId}/task/{TaskId}/progress/{TaskProgressId}
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441- TaskProgressId
int
(required) Example: 12535
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"TaskProgressId": 12876,
"TaskId": 20441,
"TaskName": "2.0 Capacitacion Manejo",
"ProjectId": 331,
"ReportDate": "2017-06-02T12:00:12Z",
"CreatedBy": "Peter Yi",
"AssessmentName": "No Critical 2",
"AssessmentPath": "https://app.itmplatform.com/UploadData/Iconlibrary/icon_notepad.png",
"AssesmentId": 3288,
"DetailDescription": "",
"ShortDescription": "new follow up",
"PercentageCompleted": 56,
"TaskManager": "Major Wyman,John Doe"
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete a task progress reportDELETE/project/{ProjectId}/task/{TaskId}/progress/{TaskProgressId}
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441- TaskProgressId
int
(required) Example: 2338
200
Headers
Content-Type: application/json
Body
{
"TaskProgressId": 2338,
"StatusMessage": "Task progress deleted successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"TaskProgressId": 0,
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
{
"TaskProgressId": 0,
"StatusMessage": "Task doesn't exist",
"StatusCode": 400
}
{
"TaskProgressId": 0,
"StatusMessage": "Task progress id doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Progress Report v2 ¶
Add a task progress report v2POST/projects/{ProjectId}/tasks/{TaskId}/progress/
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
Body
{
"AssessmentId": 1234,
"Description": "detailsdescription",
"ShortDescription": "des",
"Percentage": 45,
"ReportDate": "2017-06-15T00:00:00Z"
}
201
Headers
Content-Type: application/json
Body
{
"Id": 707463,
"StatusMessage": "Task progress inserted successfully.",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Task does not exists.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter short description.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter assessment id greater than 0.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid assessment id.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter report date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid report date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter percentage completed.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Percentage completed should be between 0 to 100.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please provide details of Progress Report.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a task progress report v2PATCH/projects/{ProjectId}/tasks/{TaskId}/progress/{TaskProgressId}
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441- TaskProgressId
int
(required) Example: 456
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"AssessmentId" : 67,
"Description" : "detailsdescription",
"ShortDescription": "des",
"Percentage" : 45,
"ReportDate" : "2017-06-15T00:00:00Z"
}
}
201
Headers
Content-Type: application/json
Body
{
{
"Id": 456,
"StatusMessage": "Task progress updated successfully.",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Task does not exists.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Project does not exist.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter short description.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter assessment id greater than 0.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid assessment id.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter report date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid report date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter percentage completed.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Percentage completed should be between 0 to 100.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please provide details of Progress Report.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project task effort by professional category ¶
Get task effort by professional categoryGET/project/{ProjectId}/task/{TaskId}/effortbyprofessionalcategory
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Category": {
"MasterCategoryId": 403,
"CategoryId": 2895,
"CategoryName": "Software Engineer",
"CategoryTypeId": 3,
"CategoryTypeName": "External"
},
"IsAutomaticActualEffortAccepted": false,
"Efforts": {
"AssignedEffort": "20:00",
"UnAssignedEffort": "0:00",
"ActualEffortAccepted": "200:00",
"ActualEffortByTimeEntry": "0:00",
"TotalEstimatedEffort": "20:00"
},
"IsOverload": true,
"OverloadDate": "2012-12-10T00:00:00Z",
"IsDelete": true
},
{
"Category": {
"MasterCategoryId": 379,
"CategoryId": 2693,
"CategoryName": "Default One",
"CategoryTypeId": 2,
"CategoryTypeName": "Internal"
},
"IsAutomaticActualEffortAccepted": false,
"Efforts": {
"AssignedEffort": "20:00",
"UnAssignedEffort": "0:00",
"ActualEffortAccepted": "500:00",
"ActualEffortByTimeEntry": "476:00",
"TotalEstimatedEffort": "20:00"
},
"IsOverload": true,
"OverloadDate": "2012-12-10T00:00:00Z",
"IsDelete": true
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Effort by Team Member ¶
Get task effort work by team memberGET/project/{ProjectId}/task/{TaskId}/effortbyteammember
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Category": {
"MasterCategoryId": 379,
"CategoryId": 2693,
"CategoryName": "Default One",
"CategoryTypeId": 2,
"CategoryTypeName": "Internal"
},
"IsAutomaticActualEffortAccepted": false,
"Efforts": {
"ActualEffortAccepted": "500:00",
"ActualEffortByTimeEntry": "408:00",
"EstimatedEffort": "20:00"
},
"User": {
"UserId": 1686,
"EmailAddress": "major.wyman@globalcorp360.com",
"DisplayName": "Major Wyman"
},
"IsOverload": true,
"OverloadDate": "2012-12-28T00:00:00Z",
"TaskUserId": 1415,
"IsPECGeneratedByTask": false
},
{
"Category": {
"MasterCategoryId": 403,
"CategoryId": 2895,
"CategoryName": "Software Engineer",
"CategoryTypeId": 3,
"CategoryTypeName": "External"
},
"IsAutomaticActualEffortAccepted": false,
"Efforts": {
"ActualEffortAccepted": "200:00",
"ActualEffortByTimeEntry": "68:00",
"EstimatedEffort": "20:00"
},
"User": {
"UserId": 1693,
"EmailAddress": "JohnDoe@globalcorp360.com1",
"DisplayName": "John Doe"
},
"IsOverload": true,
"OverloadDate": "2012-12-10T00:00:00Z",
"TaskUserId": 1531,
"IsPECGeneratedByTask": false
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Effort Categories ¶
Add task effort categoriesPOST/project/{ProjectId}/task/{TaskId}/categories
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
Body
[
{
"CategoryId": 379,
"CategoryType": "2"
}
]
201
Headers
Content-Type: application/json
Body
{
{
"StatusMessage": "Categories Inserted Successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Error occurred while Inserting Categories",
"StatusCode": 400
}
{
"StatusMessage": "Category already inserted",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Effort Category ¶
Delete task effort categoryDELETE/project/{ProjectId}/task/{TaskId}/category/{CategoryId}
Example URI
- ProjectId
int
(required) Example: 331- TaskId
int
(required) Example: 20441- CategoryId
int
(required) Example: 379
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"CategoryId": 602,
"CategoryType": "2"
}
}
200
Headers
Content-Type: application/json
Body
{
{
"StatusMessage": "Deleted Successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Error occurred while Deleting",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Effort ¶
Update a task effortPUT/project/{ProjectId}/task/{TaskId}/effort
Updates a task Effort. Please note that you should use different syntaxes for waterfall and agile tasks.
Example URI
- ProjectId
int
(required) Example: 12262- TaskId
int
(required) Example: 20441
Headers
Content-Type: application/json
Token: [token]
Body
For waterfall Task
[
[
{
"TaskId": "22297",
"EstimatedHours": "0",
"EstimatedMins": 0
}
],
[
{
"TaskUserId": 1746,
"EstimatedHours": 0,
"EstimatedMins": 0,
"ActualEffortAcceptedHours": 20,
"ActualEffortAcceptedMins": 0,
"AutomaticActualEffortAccepted": false,
"TaskId": "22297"
},
{
"TaskUserId": 1747,
"EstimatedHours": 0,
"EstimatedMins": 0,
"ActualEffortAcceptedHours": 0,
"ActualEffortAcceptedMins": 0,
"AutomaticActualEffortAccepted": true,
"TaskId": "22297"
}
],
[{}],
[
{
"CategoryId": 403,
"CategoryType": 3,
"NonAssignedEffort": "0",
"NonAssignedEffortMins": 0,
"ActualEffortAcceptedHours": 0,
"ActualEffortAcceptedMins": 0,
"AutomaticActualEffortAccepted": true
}
]
]
For agile Task
[
[{}],
[
{
"TaskUserId": 7811,
"EstimatedHours": 200,
"EstimatedMins": 0,
"ActualEffortAcceptedHours": 100,
"ActualEffortAcceptedMins": 0,
"AutomaticActualEffortAccepted": false,
"TaskId": "146322"
},
{
"TaskUserId": 7812,
"EstimatedHours": 300,
"EstimatedMins": 0,
"ActualEffortAcceptedHours": 0,
"ActualEffortAcceptedMins": 0,
"AutomaticActualEffortAccepted": true,
"TaskId": "146322"
}
],
[
{
"TaskId": "146322",
"TaskEstHour": 500,
"TaskEstmin": 0
}
],
[{}]
]
200
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Updated Successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Dependencies ¶
Get task dependenciesGET/project/{ProjectId}/taskdependencies
Example URI
- ProjectId
int
(required) Example: 1070
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
<Links>
<Link>
<Id>42404</Id>
<From>153809</From>
<To>153811</To>
<Type>0</Type>
</Link>
<Link>
<Id>42405</Id>
<From>153810</From>
<To>153812</To>
<Type>0</Type>
</Link>
</Links>
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add task dependenciesPOST/project/{ProjectId}/taskdependencies
Example URI
- ProjectId
int
(required) Example: 1070
Headers
Content-Type: application/json
Token: [token]
Body
[
{
"FromTaskNo": null,
"ToTaskNo": null,
"From": 153809,
"To": 153811,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 0
},
{
"FromTaskNo": null,
"ToTaskNo": null,
"From": 153810,
"To": 153812,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 0
}
]
200
Headers
Content-Type: application/json
Body
[
{
"FromTaskNo": "",
"ToTaskNo": "",
"From": 153809,
"To": 153811,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 42402
},
{
"FromTaskNo": "",
"ToTaskNo": "",
"From": 153810,
"To": 153812,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 42403
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete task dependenciesDELETE/project/{ProjectId}/taskdependencies
Example URI
- ProjectId
int
(required) Example: 1070
Headers
Content-Type: application/json
Token: [token]
Body
[
{
"FromTaskNo": null,
"ToTaskNo": null,
"From": 153809,
"To": 153811,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 0
},
{
"FromTaskNo": null,
"ToTaskNo": null,
"From": 153810,
"To": 153812,
"Type": 0,
"Lag": "0",
"Cls": "",
"LagUnit": "d",
"Id": 0
}
]
200
Headers
Content-Type: application/json
Body
{
'success': true
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Baseline ¶
Add task baselinePOST/project/{ProjectId}/baseline
Example URI
- ProjectId
int
(required) Example: 1070
Headers
Content-Type: application/json
Token: [token]
Body
"
<ROOT>
<TaskBaseLine>
<intTaskId>153809</intTaskId>
<dtsBaselineStartDate>8/5/2017 0:0:0</dtsBaselineStartDate>
<dtsBaselineEndDate>9/5/2017 0:0:0</dtsBaselineEndDate>
</TaskBaseLine>
<TaskBaseLine>
<intTaskId>153811</intTaskId>
<dtsBaselineStartDate>8/5/2017 0:0:0</dtsBaselineStartDate>
<dtsBaselineEndDate>9/5/2017 0:0:0</dtsBaselineEndDate>
</TaskBaseLine>
<TaskBaseLine>
<intTaskId>153810</intTaskId>
<dtsBaselineStartDate>8/5/2017 0:0:0</dtsBaselineStartDate>
<dtsBaselineEndDate>9/5/2017 0:0:0</dtsBaselineEndDate>
</TaskBaseLine>
<TaskBaseLine>
<intTaskId>153812</intTaskId>
<dtsBaselineStartDate>8/5/2017 0:0:0</dtsBaselineStartDate>
<dtsBaselineEndDate>9/5/2017 0:0:0</dtsBaselineEndDate>
</TaskBaseLine>
</ROOT>
"
200
Headers
Content-Type: application/json
Body
{
"IsSuccess": true
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Baselines ¶
Get Project Baselines ¶
Get Project BaselinesGET/project/{ProjectId}/baselines
Example URI
- ProjectId
int
(required) Example: 53907
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ProjectId": 0,
"ProjectName": null,
"ProjectNo": null,
"ProjectStartDate": "2021-02-16T00:00:00Z",
"ProjectEndDate": "2023-09-08T00:00:00Z",
"ProjectDuration": 669,
"BaselineId": 5387,
"BaselineName": "My Baseline 1",
"BaselineAuthor": "Daniel Piret",
"BaselineStartDate": "2021-02-16T00:00:00Z",
"BaselineEndDate": "2022-12-31T00:00:00Z",
"ProjectBaselineDuration": 489,
"BaselineTimeStamp": "2022-08-09T06:27:59Z",
"IsActive": false,
"BaselineTopDownDetail": {
"TopDownInternalHours": "00:00",
"TopDownInternalCost": 0,
"TopDownExternalHours": "00:00",
"TopDownExternalCost": 0,
"TopDownUndefinedHours": "00:00",
"TopDownUndefinedCost": 0,
"TopDownTotalWorkforceHours": "00:00",
"TopDownTotalWorkforceCost": 0,
"TopDownPurchasesCost": 0,
"TopDownTotalCost": 0,
"TopDownMargin": 0,
"TopDownRevenue": 0
},
"BaselineBottomUpDetail": {
"BottomUpInternalHours": "00:00",
"BottomUpInternalCost": 0,
"BottomUpExternalHours": "1071:15",
"BottomUpExternalCost": 10712.5,
"BottomUpUndefinedHours": "00:00",
"BottomUpUndefinedCost": 0,
"BottomUpTotalWorkforceHours": "1071:15",
"BottomUpTotalWorkforceCost": 10712.5,
"BottomUpPurchasesCost": 0,
"BottomUpTotalCost": 10712.5,
"BottomUpMargin": -10712.5,
"BottomUpRevenue": 0,
"BottomUpPurchasesBlended": 0
}
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get Active Baseline ¶
Get Project Active Baseline DetailsGET/project/{ProjectId}/activebaseline
Example URI
- ProjectId
int
(required) Example: 53907
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"ProjectName": "Backend revamp",
"ProjectNo": "PR-15-21010001",
"ProjectStartDate": "2021-02-16T00:00:00Z",
"ProjectEndDate": "2023-09-08T00:00:00Z",
"ProjectDuration": 489,
"BaselineId": 5388,
"BaselineName": "Your baseline",
"BaselineAuthor": "Daniel Piret",
"BaselineStartDate": "2021-02-16T00:00:00Z",
"BaselineEndDate": "2022-12-31T00:00:00Z",
"ProjectBaselineDuration": 0,
"BaselineTimeStamp": "2022-08-09T06:28:23Z",
"IsActive": true,
"BaselineTopDownDetail": {
"TopDownInternalHours": "00:00",
"TopDownInternalCost": 0,
"TopDownExternalHours": "00:00",
"TopDownExternalCost": 0,
"TopDownUndefinedHours": "00:00",
"TopDownUndefinedCost": 0,
"TopDownTotalWorkforceHours": "00:00",
"TopDownTotalWorkforceCost": 0,
"TopDownPurchasesCost": 0,
"TopDownTotalCost": 0,
"TopDownMargin": 0,
"TopDownRevenue": 0
},
"BaselineBottomUpDetail": {
"BottomUpInternalHours": "00:00",
"BottomUpInternalCost": 0,
"BottomUpExternalHours": "1071:15",
"BottomUpExternalCost": 10712.5,
"BottomUpUndefinedHours": "00:00",
"BottomUpUndefinedCost": 0,
"BottomUpTotalWorkforceHours": "1071:15",
"BottomUpTotalWorkforceCost": 10712.5,
"BottomUpPurchasesCost": 0,
"BottomUpTotalCost": 10712.5,
"BottomUpMargin": -10712.5,
"BottomUpRevenue": 0
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Baseline Detail ¶
Get Project Baseline DetailsGET/project/{ProjectId}/baseline/{BaselineId}
Example URI
- ProjectId
int
(required) Example: 53907- BaselineId
int
(required) Example: 5387
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"ProjectName": "Backend revamp",
"ProjectNo": "PR-15-21010001",
"ProjectStartDate": "2021-02-16T00:00:00Z",
"ProjectEndDate": "2023-09-08T00:00:00Z",
"ProjectDuration": 489,
"BaselineId": 5387,
"BaselineName": "My Baseline 1",
"BaselineAuthor": "Daniel Piret",
"BaselineStartDate": "2021-02-16T00:00:00Z",
"BaselineEndDate": "2022-12-31T00:00:00Z",
"ProjectBaselineDuration": 0,
"BaselineTimeStamp": "2022-08-09T06:27:59Z",
"IsActive": false,
"BaselineTopDownDetail": {
"TopDownInternalHours": "00:00",
"TopDownInternalCost": 0,
"TopDownExternalHours": "00:00",
"TopDownExternalCost": 0,
"TopDownUndefinedHours": "00:00",
"TopDownUndefinedCost": 0,
"TopDownTotalWorkforceHours": "00:00",
"TopDownTotalWorkforceCost": 0,
"TopDownPurchasesCost": 0,
"TopDownTotalCost": 0,
"TopDownMargin": 0,
"TopDownRevenue": 0
},
"BaselineBottomUpDetail": {
"BottomUpInternalHours": "00:00",
"BottomUpInternalCost": 0,
"BottomUpExternalHours": "1071:15",
"BottomUpExternalCost": 10712.5,
"BottomUpUndefinedHours": "00:00",
"BottomUpUndefinedCost": 0,
"BottomUpTotalWorkforceHours": "1071:15",
"BottomUpTotalWorkforceCost": 10712.5,
"BottomUpPurchasesCost": 0,
"BottomUpTotalCost": 10712.5,
"BottomUpMargin": -10712.5,
"BottomUpRevenue": 0,
"BottomUpPurchasesBlended": 0
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete Project Baseline DetailsDELETE/project/{ProjectId}/baseline/{BaselineId}
Example URI
- ProjectId
int
(required) Example: 53907- BaselineId
int
(required) Example: 5387
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"BaselineId": 5388,
"StatusMessage": "Baseline deleted",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get Baseline Detail ¶
Active/Inactive Project BaselinePUT/project/{ProjectId}/baseline/{BaselineId}/{IsActive}
Example URI
- ProjectId
int
(required) Example: 53907- BaselineId
int
(required) Example: 5387- IsActive
bit
(required) Example: true
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"BaselineId": 5387,
"StatusMessage": "Baseline activated",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Rename Baseline ¶
Rename BaselinePUT/Project/{ProjectId}/renamebaseline
Example URI
- ProjectId
int
(required) Example: 53907
Headers
Content-Type: application/json
Token: [token]
Body
{
"BaselineId": 5387,
"BaselineName": "My Baseline"
}
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"BaselineId": 5387,
"StatusMessage": "Baseline name updated",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Insert Baseline ¶
Insert BaselinePOST/Project/{ProjectId}/projectbaseline
Example URI
- ProjectId
int
(required) Example: 53907
Headers
Content-Type: application/json
Token: [token]
Body
{
"BaselineId": 5387,
"BaselineName": "My Baseline 2",
"BaselineAuthor": "Daniel Piret",
"BaselineStartDate": "2021-02-16T00:00:00Z",
"BaselineEndDate": "2022-12-31T00:00:00Z",
"ProjectBaselineDuration": 0,
"BaselineTimeStamp": "2022-08-09T06:27:59Z",
"IsActive": false
}
200
Headers
Content-Type: application/json
Body
{
"ProjectId": 53907,
"BaselineId": 6160,
"StatusMessage": "Baseline created",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Purchases ¶
Get Purchases ¶
Get PurchasesPOST/purchases/search
This endpoint accepts Group Filtering v2. The parameters this filter accepts are:
-
Name
-
Description
-
StatusName
-
StatusId
-
StatusDate
-
BudgetAccountName
-
TypeName
-
TypeId
-
DueDate
-
ProviderId
-
ProviderName
-
No
-
ProjectId
-
ActualAmount
-
ActualAmount.CurrencyId
-
ActualAmount.ExchangeRate
-
ActualAmount.AppliedDate
-
ActualAmount.BaseAmount
-
ProjectedAmount
-
ProjectedAmount.CurrencyId
-
ProjectedAmount.ExchangeRate
-
ProjectedAmount.AppliedDate
-
ProjectedAmount.BaseAmount
-
IsConsiderAsActualValue
-
IsDependOnTask
-
DependingOnTaskName
-
DependingOnTaskId
Example URI
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 8989,
"pagerid": "1cefead5-96f6-4d25-8486-0dacd358b27a",
"page": 1,
"pageSize": 10,
"list": [
{
"Amount": 0,
"StatusDate": "2021-09-29T15:41:20Z",
"FirstRecurrenceDate": "",
"DueDate": "2021-04-13T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1192786
},
{
"Amount": 0,
"StatusDate": "2019-11-07T09:47:38Z",
"FirstRecurrenceDate": "",
"DueDate": "2026-12-02T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Amount": 0,
"StatusDate": "2019-11-07T09:47:38Z",
"FirstRecurrenceDate": "",
"DueDate": "2027-01-01T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Amount": 0,
"StatusDate": "2021-08-30T00:00:00Z",
"FirstRecurrenceDate": "",
"DueDate": "2021-01-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1192304
},
{
"Amount": 0,
"StatusDate": "2021-05-30T00:00:00Z",
"FirstRecurrenceDate": "",
"DueDate": "2021-01-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1192776
},
{
"Amount": 0,
"StatusDate": "2021-09-24T18:36:11Z",
"FirstRecurrenceDate": "",
"DueDate": "2021-04-13T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1192599
},
{
"Amount": 0,
"StatusDate": "2020-04-27T18:12:26Z",
"FirstRecurrenceDate": "",
"DueDate": "2022-03-29T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1177194
},
{
"Amount": 0,
"StatusDate": "2021-01-09T00:00:00Z",
"FirstRecurrenceDate": "",
"DueDate": "2021-01-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 1192739
},
{
"Amount": 0,
"StatusDate": "2017-12-23T00:00:00Z",
"FirstRecurrenceDate": "",
"DueDate": "2018-08-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 599433
},
{
"Amount": 0,
"StatusDate": "2019-05-23T00:00:00Z",
"FirstRecurrenceDate": "",
"DueDate": "2020-01-12T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": 599433
}
]
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Purchases ¶
Get project purchasesGET/project/{ProjectId}/purchases
This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
PurchaseName
-
Description
-
PurchaseStatus.PurchaseStatusName
-
PurchaseStatus.PurchaseStatusId
-
PurchaseStatus.StatusDate
-
BudgetAccount.BudgetAccountName
-
BudgetAccount.BudgetAccountId
-
PurchaseType.PurchaseTypeName
-
PurchaseType.PurchaseTypeId
-
DueDate
-
Provider.ProviderId
-
Provider.ProviderName
-
InvoiceNo
-
ProjectId
-
ActualAmountDetail.ActualAmount
-
ActualAmountDetail.ActualAmountCurrencyId
-
ActualAmountDetail.ActualAmountExchangeRate
-
ActualAmountDetail.ActualAmountChangeApplied
-
ActualAmountDetail.ActualAmountBase
-
ActualAmountDetail.ActualAmountCurrencySymbol
-
ActualAmountDetail.ActualAmountCurrencyAlphabeticCode
-
ProjectedAmountDetail.ProjectedAmount
-
ProjectedAmountDetail.ProjectedAmountCurrencyId
-
ProjectedAmountDetail.ProjectedAmountExchangeRate
-
ProjectedAmountDetail.ProjectedAmountChangeApplied
-
ProjectedAmountDetail.ProjectedAmountBase
-
ProjectedAmountDetail.ProjectedAmountCurrencyAlphabeticCode
-
DependingOnTask.DependingOnTaskName
-
DependingOnTask.DependingOnTaskId
Example URI
- ProjectId
string
(required) Example: 2338
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"PurchaseId": 2338,
"AccountId": 1142,
"ProjectId": 331,
"PurchaseName": "ProjectPurchase",
"Description": "",
"PurchaseStatus": {
"PurchaseStatusName": "Not Approved",
"PurchaseStatusId": 7,
"PurchaseStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/flag--exclamation.png",
"StatusDate": "2017-03-21T00:00:00Z"
},
"BudgetAccount": {
"BudgetAccountName": " Account 1",
"BudgetAccountId": 461
},
"PurchaseType": {
"PurchaseTypeName": "Others",
"PurchaseTypeId": 3273,
"PurchaseTypeIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/question.png"
},
"DueDate": "2009-10-01T00:00:00Z",
"Provider": {
"ProviderId": 97,
"ProviderName": "Google"
},
"InvoiceNo": "123",
"DependingOnTask": {
"DependingOnTaskName": "2.0 Capacitacion Manejo",
"DependingOnTaskId": 20441
},
"ActualAmountDetail": {
"ActualAmount": 0,
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 1,
"ActualAmountChangeApplied": "2017-07-05T10:01:42.950Z",
"ActualAmountBase": 0,
"ActualAmountCurrencySymbol": "$",
"ActualAmountCurrencyAlphabeticCode": "USD"
},
"ProjectedAmountDetail": {
"ProjectedAmount": 110,
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 1,
"ProjectedAmountChangeApplied": "2017-07-05T10:01:42.950Z",
"ProjectedAmountBase": 110,
"ProjectedAmountCurrencySymbol": "$",
"ProjectedAmountCurrencyAlphabeticCode": "USD"
},
"IsDocumentAttached": false
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service purchases ¶
Get service purchasesGET/service/{ServiceId}/purchases
Retrieves service purchases.
This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
PurchaseName
-
Description
-
PurchaseStatus.PurchaseStatusName
-
PurchaseStatus.PurchaseStatusId
-
PurchaseStatus.StatusDate
-
BudgetAccount.BudgetAccountName
-
BudgetAccount.BudgetAccountId
-
PurchaseType.PurchaseTypeName
-
PurchaseType.PurchaseTypeId
-
DueDate
-
Provider.ProviderId
-
Provider.ProviderName
-
InvoiceNo
-
ServiceId:(int)
-
ActualAmountDetail.ActualAmount
-
ActualAmountDetail.ActualAmountCurrencyId
-
ActualAmountDetail.ActualAmountExchangeRate
-
ActualAmountDetail.ActualAmountChangeApplied
-
ActualAmountDetail.ActualAmountBase
-
ActualAmountDetail.ActualAmountCurrencySymbol
-
ActualAmountDetail.ActualAmountCurrencyAlphabeticCode
-
ProjectedAmountDetail.ProjectedAmount
-
ProjectedAmountDetail.ProjectedAmountCurrencyId
-
ProjectedAmountDetail.ProjectedAmountExchangeRate
-
ProjectedAmountDetail.ProjectedAmountChangeApplied
-
ProjectedAmountDetail.ProjectedAmountBase
-
ProjectedAmountDetail.ProjectedAmountCurrencyAlphabeticCode
-
DependingOnActivity.DependingOnActivityName
-
DependingOnActivity.DependingOnActivityId
Example URI
- ServiceId
string
(required) Example: 2338
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"PurchaseId": 2459,
"AccountId": 1142,
"ServiceId": 339,
"PurchaseName": "new purchase",
"Description": "",
"PurchaseStatus": {
"PurchaseStatusName": "Pending",
"PurchaseStatusId": 1,
"PurchaseStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/flag-yellow.png",
"StatusDate": "2017-06-19T00:00:00Z"
},
"BudgetAccount": {
"BudgetAccountName": "Test",
"BudgetAccountId": 315
},
"PurchaseType": {
"PurchaseTypeName": "Others",
"PurchaseTypeId": 3273,
"PurchaseTypeIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/question.png"
},
"DueDate": "2017-06-19T00:00:00Z",
"Provider": null,
"InvoiceNo": "",
"DependingOnActivity": null,
"ActualAmountDetail": {
"ActualAmount": 0,
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 1,
"ActualAmountChangeApplied": "2017-07-05T10:03:40.310Z",
"ActualAmountBase": 0,
"ActualAmountCurrencySymbol": "$",
"ActualAmountCurrencyAlphabeticCode": "USD"
},
"ProjectedAmountDetail": {
"ProjectedAmount": 0,
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 1,
"ProjectedAmountChangeApplied": "2017-07-05T10:03:40.310Z",
"ProjectedAmountBase": 0,
"ProjectedAmountCurrencySymbol": "$",
"ProjectedAmountCurrencyAlphabeticCode": "USD"
},
"IsDocumentAttached": false
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add Project Purchase v2 ¶
Add project purchase v2POST/projects/{ProjectId}/purchases
Adds single or recurring project purchase.
Example URI
- ProjectId
int
(required) Example: 55614
Headers
Content-Type: application/json
Token: [token]
Body
"For single purchase"
{
{
"Name": "Test",
"Description": "123",
"StatusId": 47131,
"StatusDate": "2021-12-31T00:00:00Z",
"TypeId": 29083,
"DueDate" : "2021-12-31T00:00:00Z",
"ProviderId": 5146,
"No": "T12",
"ProjectCostId": 60003,
"ActualAmount": 100.00,
"ActualAmountCurrencyId": 4145,
"ProjectedAmount": 100.00,
"ProjectedAmountCurrencyId": 4145,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"DependingOnTaskId": 0
}
}
"For recurring purchases"
{
{
"Name": "Test",
"Description": "description",
"StatusId": 1,
"StatusDate": "2021-12-31T00:00:00Z",
"TypeId": 0,
"ProviderId": 0,
"ProjectCostId": 235,
"ActualAmount": 100.00,
"ActualAmountCurrencyId": 1113,
"ProjectedAmount": 100.00,
"ProjectedAmountCurrencyId": 1113,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"DependingOnTaskId": 0,
"IsRecurrence": true,
"DueDateAfter": 1,
"FirstPurchaseDate": "2021-12-31T00:00:00Z",
"RepeatsOn": 2,
"RepeatsOnValue": 1,
"NumberOfRecurrences": 2
}
}
201
Headers
Content-Type: application/json
Body
{
{
"Id": 159665,
"StatusMessage": "Purchase inserted successfully",
"StatusCode": 201
}
{
"PurchaseId": [
"2935",
"2936"
],
"StatusMessage": "Purchase(s) inserted successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Project 5561224 does not exist",
"StatusCode": 500
}
{
"Id": 0,
"StatusMessage": "Please enter purchase name.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid status date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter budget account id greater than 0.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter status id greater than 0.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid status id.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid provider id.<br/>",
"StatusCode": 400
}
{
"Id": 159665,
"StatusMessage": "Please enter valid depending task id.<br/>",
"StatusCode": 400
}
"For single purchase"
{
"Id": 0,
"StatusMessage": "Please enter valid status date.<br/>",
"StatusCode": 400
}
{
"Id": 0,
"StatusMessage": "Please enter valid due date.<br/>",
"StatusCode": 400
}
"For recurring purchases"
{
"Id": 159665,
"StatusMessage": "Please enter First purchase date.<br/>",
"StatusCode": 400
}
{
"Id": 159665,
"StatusMessage": "Please enter Repeat type.<br/>",
"StatusCode": 400
}
{
"Id": 159665,
"StatusMessage": "Please enter Number of recurrences.<br/>",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Purchase v2 ¶
Update a project purchase v2PATCH/projects/{ProjectId}/purchases/{PurchaseId}
Example URI
- ProjectId
int
(required) Example: 55614- PurchaseId
int
(required) Example: 159665
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"Name": "Test update",
"Description": "description",
"StatusId": 47132,
"StatusDate": "2021-12-31T00:00:00Z",
"TypeId": 29084,
"ProviderId": 5145,
"No": "T123",
"BudgetAccountId": 417,
"ActualAmount": 100.00,
"ActualAmountCurrencyId": 4145,
"ProjectedAmount": 100.00,
"ProjectedAmountCurrencyId": 4145,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"DependingOnTaskId": 0
}
}
200
Headers
Content-Type: application/json
Body
{
{
"Id": 159665,
"StatusMessage": "Purchase updated successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
500
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Purchase 159665 does not exist",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid status date.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter budget account id greater than 0.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid status id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid budget account id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid status id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid provider id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid status date.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid due date.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid projected amount currency id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid actual amount currency id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter valid depending task id.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter First purchase date.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter Repeat type.<br/>",
"StatusCode": 500
}
{
"Id": 159665,
"StatusMessage": "Please enter Number of recurrences.<br/>",
"StatusCode": 500
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete a project purchaseDELETE/projects/{ProjectId}/purchases/{PurchaseId}
Example URI
- ProjectId
int
(required) Example: 55614- PurchaseId
int
(required) Example: 159665
200
Headers
Content-Type: application/json
Body
[
{
"Id": 159665,
"StatusMessage": "Purchase deleted successfully",
"StatusCode": 200
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Purchase ids doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a project purchase v2POST/projects/{ProjectId}/purchases/{PurchaseId}
Example URI
- ProjectId
int
(required) Example: 55614- PurchaseId
int
(required) Example: 159662
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
{
"Id": 159662,
"AccountId": 4019,
"ProjectId": 55614,
"Name": "Test 123",
"Description": "testse",
"StatusName": "Planificado",
"StatusId": 47131,
"StatusDate": "2022-01-02T00:00:00Z",
"ProjectCostId": 60003,
"BudgetAccountName": "Teste",
"TypeId": 29087,
"TypeName": "Goods",
"ProviderName": "Manpower Inc.",
"ProviderId": 5146,
"No": "test12",
"ActualAmount": {
"Amount": 0.000000000000,
"CurrencyId": 4145,
"ExchangeRate": 1.000000,
"AppliedDate": "2022-01-02T15:20:31Z",
"BaseAmount": 0.000000
},
"ProjectedAmount": {
"Amount": 200.000000000000,
"CurrencyId": 4145,
"ExchangeRate": 1.000000,
"AppliedDate": "2022-01-02T09:50:04Z",
"BaseAmount": 200.000000
},
"IsConsiderAsActualValue": false,
"DependingOnTaskName": "",
"DependingOnTaskPercentCompleted": 0.0,
"IsDependUponTaskStartDate": false,
"TaskDateGap": 0,
"TaskDue": "",
"TaskStart": "",
"DueDate": "2022-01-02T00:00:00Z",
"DependingOnTaskId": null
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Bulk Update ¶
Bulk update purchasesPATCH/Projects/{ProjectId}/Purchases
Example URI
- ProjectId
int
(required) Example: 55614
Headers
Content-Type: application/json
Token: [token]
Body
{
"PurchaseIds": "159662,159668",
"StatusId": "47134"
}
200
Headers
Content-Type: application/json
Body
[
{
"StatusCode": 200
}
]
500
Headers
Content-Type: application/json
Body
{
"Id": 0,
"StatusMessage": "Purchase 159662 does not exist",
"StatusCode": 500
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Bulk Delete ¶
Bulk delete purchasesDELETE/Projects/{ProjectId}/BulkDeletePurchases
Example URI
- ProjectId
int
(required) Example: 55614
Headers
Content-Type: application/json
Token: [token]
Body
{
"PurchaseIds": "159662,159668",
"StatusId": "47134"
}
200
Headers
Content-Type: application/json
Body
[
{
"Id": 159662,
"StatusMessage": "Purchase deleted successfully",
"StatusCode": 200
}
]
400
Headers
Content-Type: application/json
Body
[
{
"Id": 0,
"StatusMessage": "Project doesn't exist.",
"StatusCode": 400
}
]
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Task Purchases ¶
Get Task PurchasesGET/Projects/{ProjectId}/TaskPurchases/{TaskId}
Example URI
- ProjectId
int
(required) Example: 55614- TaskId
int
(required) Example: 121620
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Id": 2852,
"Amount": 0,
"AccountId": 0,
"ProjectId": 0,
"LanguageId": 0,
"Name": "",
"Description": "",
"StatusName": "",
"StatusId": 0,
"StatusDate": "",
"ProjectCostId": 0,
"BudgetAccountName": "",
"TypeId": 0,
"TypeName": "",
"ProviderName": "",
"No": "",
"ActualAmount": {
"Amount": 0,
"CurrencyId": 0,
"ExchangeRate": 0,
"AppliedDate": "",
"BaseAmount": 0
},
"ProjectedAmount": {
"Amount": 0,
"CurrencyId": 0,
"ExchangeRate": 0,
"AppliedDate": "",
"BaseAmount": 250
},
"IsConsiderAsActualValue": false,
"IsFromTaskPurchases": false,
"IsDependOnTask": false,
"DependingOnTaskName": "",
"DependingOnTaskPercentCompleted": 0,
"IsDependUponTaskStartDate": false,
"TaskDateGap": 0,
"UserId": 0,
"TaskDue": "",
"TaskStart": "",
"BaselineDueDate": "",
"BaselineBlendedProjectedAmount": 0,
"BaselineBlendedDate": "",
"BaselineProjectedAmount": 0,
"IsDocumentAttached": false,
"AllCustomFields": {},
"FirstRecurrenceDate": "",
"DueDate": "",
"DependOnTaskDate": "",
"IsTaskAssociated": false
},
{
"Id": 71758,
"Amount": 0,
"AccountId": 0,
"ProjectId": 0,
"LanguageId": 0,
"Name": "",
"Description": "",
"StatusName": "",
"StatusId": 0,
"StatusDate": "",
"ProjectCostId": 0,
"BudgetAccountName": "",
"TypeId": 0,
"TypeName": "",
"ProviderName": "",
"No": "",
"ActualAmount": {
"Amount": 0,
"CurrencyId": 0,
"ExchangeRate": 0,
"AppliedDate": "",
"BaseAmount": 0
},
"ProjectedAmount": {
"Amount": 0,
"CurrencyId": 0,
"ExchangeRate": 0,
"AppliedDate": "",
"BaseAmount": 0
},
"IsConsiderAsActualValue": false,
"IsFromTaskPurchases": false,
"IsDependOnTask": false,
"DependingOnTaskName": "",
"DependingOnTaskPercentCompleted": 0,
"IsDependUponTaskStartDate": false,
"TaskDateGap": 0,
"UserId": 0,
"TaskDue": "",
"TaskStart": "",
"BaselineDueDate": "",
"BaselineBlendedProjectedAmount": 0,
"BaselineBlendedDate": "",
"BaselineProjectedAmount": 0,
"IsDocumentAttached": false,
"AllCustomFields": {},
"FirstRecurrenceDate": "",
"DueDate": "",
"DependOnTaskDate": "",
"IsTaskAssociated": false
}
]
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service purchase ¶
Add service purchasePOST/service/{ServiceId}/purchase/
Adds single or recurring service purchase. Please note that you should use different syntaxes for single and recurring purchases.
Example URI
- ServiceId
int
(required) Example: 339
Headers
Content-Type: application/json
Token: [token]
Body
"For single purchase"
{
{
"PurchaseName":"NEwTest",
"Description":"123",
"PurchaseStatusId":1,
"StatusDate": "2017-07-05T00:00:00Z",
"PurchaseTypeId":0,
"DueDate" :"2017-07-05T00:00:00Z",
"ProviderId":0,
"InvoiceNo":"",
"BudgetAccountId":235,
"ActualAmount":100.00,
"ActualAmountCurrencyId":1113,
"ProjectedAmount":100.00,
"ProjectedAmountCurrencyId":1113,
"ActivityDateGap":0,
"IsDependUponActivityStartDate":false,
"DependingOnActivityId":0
}
}
"For recurring purchases"
{
{
"PurchaseName":"NEwTest",
"Description":"description",
"PurchaseStatusId":1,
"StatusDate": "2017-07-05T00:00:00Z",
"PurchaseTypeId":0,
"ProviderId":0,
"InvoiceNo":"",
"BudgetAccountId":235,
"ActualAmount":100.00,
"ActualAmountCurrencyId":1113,
"ProjectedAmount":100.00,
"ProjectedAmountCurrencyId":1113,
"ActivityDateGap":0,
"IsDependUponActivityStartDate":false,
"DependingOnActivityId":0,
"IsRecurrence":true,
"DueDateAfter":1,
"FirstPurchaseDate":"2017-07-05T00:00:00Z",
"RepeatsOn":2,
"RepeatsOnValue":1,
"NumberOfRecurrences":2
}
}
201
Headers
Content-Type: application/json
Body
{
{
"PurchaseId":1234,
"StatusMessage": "Purchase inserted successfully",
"StatusCode": 201
}
{
"PurchaseId": [
"2935",
"2936"
],
"StatusMessage": "Purchase(s) inserted successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase name",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase status date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter budget account id greater than 0",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase status id greater than 0",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid budget account id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase status id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid provider id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase type id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid actual amount",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid projected amount",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid projected amount currency id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid actual amount currency id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid depending on task id",
"StatusCode": 400
}
"For single purchase"
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase status date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid due date",
"StatusCode": 400
}
"For recurring purchases"
{
"PurchaseId":null,
"StatusMessage": "Please enter First purchase date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter Repeat type",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter Number of recurrences",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a service purchasePUT/service/{ServiceId}/purchase/{PurchaseId}
Example URI
- ServiceId
int
(required) Example: 339- PurchaseId
int
(required) Example: 345
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"PurchaseName":"NEwTest update",
"Description":"description",
"PurchaseStatusId":1,
"StatusDate": "2017-07-05T00:00:00Z",
"PurchaseTypeId":0,
"ProviderId":0,
"InvoiceNo":"",
"BudgetAccountId":417,
"ActualAmount":100.00,
"ActualAmountCurrencyId":1113,
"ProjectedAmount":100.00,
"ProjectedAmountCurrencyId":1113,
"ActivityDateGap":0,
"IsDependUponActivityStartDate":false,
"DependingOnActivityId":0
}
}
201
Headers
Content-Type: application/json
Body
{
{
"PurchaseId":345,
"StatusMessage": "Purchase updated successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase name",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase status date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter budget account id greater than 0",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter purchase status id greater than 0",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid budget account id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase status id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid provider id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase type id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid purchase status date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid due date",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid actual amount",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid projected amount",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid projected amount currency id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid actual amount currency id",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Please enter valid depending on task id",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a service purchaseGET/service/{ServiceId}/purchase/{PurchaseId}
Example URI
- ServiceId
int
(required) Example: 339- PurchaseId
int
(required) Example: 2939
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
{
"PurchaseId": 2939,
"PurchaseName": "NEwTest",
"Description": "description",
"PurchaseStatusName": "Pending",
"PurchaseStatusId": 1,
"StatusDate": "2017-07-05T00:00:00Z",
"BudgetAccountName": "Test",
"PurchaseTypeName": null,
"PurchaseTypeId": 0,
"DueDate": "2017-07-06T00:00:00Z",
"ProviderName": null,
"ProviderId": 0,
"InvoiceNo": "",
"AccountId": 1142,
"ServiceId": 339,
"BudgetAccountId": 315,
"ActualAmount": 100,
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 0,
"ActualAmountChangeApplied": "2017-07-05T17:35:46.190Z",
"ProjectedAmount": 100,
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 0,
"ProjectedAmountChangeApplied": "2017-07-05T17:35:46.190Z",
"PurchaseStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/flag-yellow.png",
"PurchaseTypeIcon": null,
"DependingOnActivityName": "",
"IsDocumentAttached": false,
"IsConsiderActualValue": false,
"DependingOnActivityId": 0,
"IsDependUponActivityStartDate": false,
"ActivityDateGap": 0,
"ActivityPath": null
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Delete a service purchaseDELETE/service/{ServiceId}/purchase/{PurchaseId}
Example URI
- ServiceId
int
(required) Example: 331- PurchaseId
int
(required) Example: 2940
200
Headers
Content-Type: application/json
Body
{
{
"PurchaseId":null,
"StatusMessage": "Purchase deleted successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"PurchaseId":null,
"StatusMessage": "Purchase ids doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get project purchases budgets ¶
Get project purchases budgetsGET/project/{ProjectId}/purchases/budgets
Example URI
- ProjectId
int
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ProjectId": 331,
"BudgetAccount": {
"BudgetAccountName": "My Purchase Budget",
"BudgetAccountId": 235,
"BudgetAccountCurrencyId": 1113,
"BudgetAccountExcahngeRate": 1,
"BudgetAccountChangeApplied": "2017-04-17T10:16:14.293Z"
},
"Description": "Description",
"Estimated": 700,
"ProjectedAmount": 4036,
"ActualAmount": 17425,
"LastPECValues": 0,
"CurrencyDetail": {
"CurrencySymbol": "$",
"CurrencyAlphabeticCode": "USD",
"CurrencySymbolPEC": "$",
"CurrencyAlphabeticCodePEC": "USD"
},
"Percentage": 2489.2857,
"PercentagePEC": 0,
"Provider": null
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project purchases budget ¶
Delete a project purchases budgetDELETE/project/{ProjectId}/purchases/budget/{BudgetAccountId}
Example URI
- ProjectId
int
(required) Example: 331- BudgetAccountId
int
(required) Example: 431
200
Headers
Content-Type: application/json
Body
{
{
"BudgetAccountId": 431,
"StatusMessage": "Record deleted successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Cannot delete reference, already in use",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Budget account detailsdoesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a project purchases budgetGET/project/{ProjectId}/purchases/budget/{BudgetAccountId}
Example URI
- ProjectId
int
(required) Example: 331- BudgetAccountId
int
(required) Example: 235
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
{
"ProjectId": 331,
"BudgetAccountId": 235,
"BudgetAccountName": "My Purchase Budget",
"BudgetAccountCurrencyId": 1113,
"BudgetAccountExcahngeRate": 1,
"BudgetAccountChangeApplied": "2017-04-17T10:16:14.293Z",
"Description": "Description",
"Estimated": 700,
"ProjectedAmount": 0,
"ActualAmount": 0,
"LastPECValues": 0,
"ProviderId": 0,
"ProviderName": ""
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a project purchases budgetPOST/project/{ProjectId}/purchases/budget/
Example URI
- ProjectId
int
(required) Example: 331
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"BudgetAccountName":"New Account",
"Description":"",
"Estimated":300,
"BudgetAccountCurrencyId":1113
}
}
201
Headers
Content-Type: application/json
Body
{
"BudgetAccountId": 321,
"StatusMessage": "Project purchase budget account inserted successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Project doesn't exist",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter budget account name",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid estimated amount",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid currency id",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Record already exists",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a project purchases budgetPUT/project/{ProjectId}/purchases/budget/{BudgetAccountId}
Example URI
- ProjectId
int
(required) Example: 331- BudgetAccountId
int
(required) Example: 321
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"BudgetAccountName":"New Account update",
"Description":"",
"Estimated":300,
"BudgetAccountCurrencyId":1113
}
201
Headers
Content-Type: application/json
Body
{
"BudgetAccountId": 321,
"StatusMessage": "Project purchase budget account updated successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Budget account detailsdoesn't exist",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter budget account name",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid estimated amount",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid currency id",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Record already exists",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service purchases budgets ¶
Get service purchases budgetsGET/service/{ServiceId}/purchases/budgets
Example URI
- ServiceId
int
(required) Example: 339
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ServiceId": 339,
"BudgetAccount": {
"BudgetAccountName": "Test",
"BudgetAccountId": 315,
"BudgetAccountCurrencyId": 1176,
"BudgetAccountExcahngeRate": 0.08,
"BudgetAccountChangeApplied": "2017-07-05T10:03:42.550Z"
},
"Description": "",
"Estimated": 5500,
"ProjectedAmount": 99,
"ActualAmount": 0,
"LastPECValues": 0,
"CurrencyDetail": {
"CurrencySymbol": "$",
"CurrencyAlphabeticCode": "LRD",
"CurrencySymbolPEC": "$",
"CurrencyAlphabeticCodePEC": "LRD"
},
"Percentage": 0,
"PercentagePEC": 0,
"Provider": null
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service purchase budget ¶
Delete a service purchase budgetDELETE/service/{ServiceId}/purchases/budget/{BudgetAccountId}
Example URI
- ServiceId
int
(required) Example: 339- BudgetAccountId
int
(required) Example: 431
200
Headers
Content-Type: application/json
Body
{
{
"BudgetAccountId": 431,
"StatusMessage": "Record deleted successfully",
"StatusCode": 200
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 431,
"StatusMessage": "Cannot delete reference, already in use",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Budget account details doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a service purchases budgetGET/service/{ServiceId}/purchases/budget/{BudgetAccountId}
Example URI
- ServiceId
int
(required) Example: 331- BudgetAccountId
int
(required) Example: 315
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
{
"ServiceId": 339,
"BudgetAccountId": 315,
"BudgetAccountName": "Test",
"BudgetAccountCurrencyId": 1176,
"BudgetAccountExcahngeRate": 0.08,
"BudgetAccountChangeApplied": "2017-07-05T10:03:42.550Z",
"Description": "",
"Estimated": 68750,
"ProjectedAmount": 0,
"ActualAmount": 0,
"LastPECValues": 0,
"ProviderId": 0,
"ProviderName": ""
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a service purchases budgetPOST/service/{ServiceId}/purchases/budget/
Example URI
- ServiceId
int
(required) Example: 339
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"BudgetAccountName":"New Account",
"Description":"",
"Estimated":300,
"BudgetAccountCurrencyId":1113
}
}
201
Headers
Content-Type: application/json
Body
{
"BudgetAccountId": 557,
"StatusMessage": "Service purchase budget account inserted successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter budget account name",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid estimated amount",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid currency id",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Record already exists",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a service purchases budgetPUT/service/{ServiceId}/purchases/budget/{BudgetAccountId}
Example URI
- ServiceId
int
(required) Example: 339- BudgetAccountId
int
(required) Example: 557
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"BudgetAccountName":"New Account update",
"Description":"",
"Estimated":300,
"BudgetAccountCurrencyId":1113
}
}
201
Headers
Content-Type: application/json
Body
{
"BudgetAccountId": 557,
"StatusMessage": "Service purchase budget account updated successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Budget account details doesn't exist",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter budget account name",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid estimated amount",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Please enter valid currency id",
"StatusCode": 400
}
{
"BudgetAccountId": 0,
"StatusMessage": "Record already exists",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Revenues ¶
Get Revenues ¶
Get RevenuesPOST/revenues/search
Example URI
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 1709,
"pagerid": "8dca3d53-076b-4652-abfc-52e3ffad2063",
"page": 1,
"pageSize": 10,
"list": [
{
"Id": 24447,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2026-08-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 24448,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2026-09-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 24449,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2026-10-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 24450,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2026-11-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 24451,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2026-12-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 24452,
"Name": "Test Prj Revenue",
"StatusDate": "2019-11-07T09:47:51Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "",
"AllCustomFields": {
"ryg": null,
"test no": 0,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2027-01-25T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 29498,
"Name": "Revenue 1",
"StatusDate": "2021-04-27T00:00:00Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "Task 1",
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2021-02-10T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 29499,
"Name": "Revenue 1",
"StatusDate": "2021-04-27T00:00:00Z",
"ProjectedAmount": {
"BaseAmount": 0
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "Task 5",
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": [],
"Hello World": []
},
"FirstRecurrenceDate": "",
"DueDate": "2021-04-27T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 29566,
"Name": "Revenue 2",
"StatusDate": "2021-12-15T00:00:00Z",
"ProjectedAmount": {
"BaseAmount": 500
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "Revenue Task",
"AllCustomFields": {
"ryg": {
"Text": "2",
"Color": "Yellow"
},
"test no": 123,
"te01": [
{
"Id": 4156,
"Value": "te"
}
],
"Hello World": [
{
"Id": 4159,
"Value": "Hello"
},
{
"Id": 4165,
"Value": "dfgdfsd"
}
]
},
"FirstRecurrenceDate": "",
"DueDate": "2021-12-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
},
{
"Id": 29639,
"Name": "revenue 1 (changed) 1",
"StatusDate": "2021-12-16T00:00:00Z",
"ProjectedAmount": {
"BaseAmount": 40
},
"ActualAmount": {
"BaseAmount": 0
},
"DependingOnTaskName": "Task 13 - task type (v2)",
"AllCustomFields": {
"ryg": {
"Text": "2",
"Color": "Yellow"
},
"test no": 2342,
"te01": [
{
"Id": 6845,
"Value": "te 1"
}
],
"Hello World": [
{
"Id": 4162,
"Value": "fgbfkgbdfgbfdgkjdfgd"
}
]
},
"FirstRecurrenceDate": "",
"DueDate": "2022-07-04T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false,
"DependingOnTaskId": null
}
]
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project revenues v2 ¶
Get project revenues v2GET/Projects/{ProjectId}/Revenues
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 19,
"pagerid": "33c9207d-179a-4a9c-9723-90c69ca10a3d",
"page": 1,
"pageSize": 50,
"list": [
{
"Id": 29501,
"No": "",
"Name": "testse",
"Description": "",
"DueDate": "2021-05-06T00:00:00Z",
"FirstRevenueDate": "",
"RepeatsOnId": 0,
"RepeatsOnValue": 0,
"StatusId": 47131,
"StatusName": "Planned",
"StatusDate": "2021-05-06T00:00:00Z",
"IsConsiderActualValue": false,
"ProjectedAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-06T04:04:28Z"
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-06T09:35:25Z"
},
"IsDependOnTask": false,
"DependingOnTaskId": 0,
"DependingOnTaskName": "",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"IsRevenueTaskAssociated": false,
"DependOnTaskDate": "",
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": null,
"Hello World": null
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "",
"BaselineBlendedProjectedAmount": 0,
"BaselineBlendedDate": "",
"BaselineProjectedAmount": 0
}
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Bulk Update RevenuesPATCH/Projects/{ProjectId}/Revenues
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
Body
{
"RevenueIds": "29514,29515",
"StatusId": "47133"
}
200
Headers
Content-Type: application/json
Body
{
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Bulk Delete RevenuesDELETE/Projects/{ProjectId}/Revenues
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
Body
{
"RevenueIds": "29514,29515",
"StatusId": "47133"
}
200
Headers
Content-Type: application/json
Body
{
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add project revenue v2POST/Projects/{ProjectId}/Revenues
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
Body
"For single revenue"
{
"Name": "Test 1",
"StatusId": 22,
"ProjectedAmount": 100,
"ActualAmount": 0,
"Description": "",
"StatusDate": "2017-03-14T00:00:00Z",
"DueDate": "2017-03-14T00:00:00Z",
"TaskDateGap": 0,
"IsDependOnTask": false,
"DependOnTaskDate": "",
"No": "",
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountChangeApplied": "2017-03-14T00:00:00Z",
"ActualAmountCurrencyId": 1113,
"ActualAmountChangeApplied": "2017-03-14T00:00:00Z",
"IsDependUponTaskStartDate": true,
"IsConsiderActualValue": false,
"DependingOnTaskId": 0
}
"For recurring revenue"
{
"Name": "Recurring revenue",
"Description": "description",
"StatusId": 22,
"StatusDate": "2017-07-05T00:00:00Z",,
"No": "1234",
"ActualAmount": 100,
"ActualAmountCurrencyId": 1113,
"ActualAmountChangeApplied": "2017-07-05T08:43:23.076Z",
"ProjectedAmount": 100,
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountChangeApplied": "2017-07-05T08:43:23.076Z",
"DependingOnTaskId": 0,
"IsRecurrence": true,
"DueDateAfter": 1,
"FirstRevenueDate": "2017-07-05T00:00:00Z",
"RepeatsOn": 2,
"NumberOfRecurrences": 2
}
201
Headers
Content-Type: application/json
Token: [token]
Body
{
"RevenueId": 29544,
"StatusMessage": "Revenue inserted successfully",
"StatusCode": 201
}
{
"RevenueId": [
"29545","29546"
],
"StatusMessage": "Revenue(s) inserted successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Project 43407 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter revenue name.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid due date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter status id greater than 0.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid projected amount currency id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid total amount currency id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid depending task id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter First revenue date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter Repeat type.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter Number of recurrences.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project Revenue Search ¶
Get Project RevenuesPOST/Projects/{ProjectId}/Revenues/Search
Example URI
- ProjectId
int
(required) Example: 43407
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"total": 16,
"pagerid": "368ec2cf-acdf-4353-9ad2-ff75a71e39e5",
"page": 1,
"pageSize": 5,
"list": [
{
"Id": 24986,
"No": "",
"Name": "Rr1",
"Description": "",
"RepeatsOnId": 0,
"StatusId": 47131,
"StatusName": "Planned",
"StatusIcon": "http://localhost/ITM.Web/UploadData/Iconlibrary/calendar-insert.png",
"StatusDate": "2019-12-12T00:00:00Z",
"ProjectedAmount": {
"Amount": 100,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2019-11-11T04:45:20Z",
"BaseAmount": 0
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2019-11-11T04:45:20Z",
"BaseAmount": 0
},
"IsDependOnTask": false,
"DependingOnTaskName": "Task 1",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": [],
"Hello World": []
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "2020-06-14T00:00:00Z",
"BaselineBlendedProjectedAmount": 0,
"BaselineBlendedDate": "2020-06-14T00:00:00Z",
"BaselineProjectedAmount": 0,
"FirstRecurrenceDate": "",
"DueDate": "2020-06-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false
},
{
"Id": 29493,
"No": "",
"Name": "Revenuw 3",
"Description": "",
"RepeatsOnId": 0,
"StatusId": 47131,
"StatusName": "Planned",
"StatusIcon": "http://localhost/ITM.Web/UploadData/Iconlibrary/calendar-insert.png",
"StatusDate": "2021-04-21T00:00:00Z",
"ProjectedAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-04-21T18:28:46Z",
"BaseAmount": 0
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-04-21T18:28:46Z",
"BaseAmount": 0
},
"IsDependOnTask": false,
"DependingOnTaskName": "Task 1",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": [],
"Hello World": []
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "2020-05-14T00:00:00Z",
"BaselineBlendedProjectedAmount": 0,
"BaselineBlendedDate": "2020-05-14T00:00:00Z",
"BaselineProjectedAmount": 0,
"FirstRecurrenceDate": "",
"DueDate": "2020-05-14T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false
},
{
"Id": 24985,
"No": "",
"Name": "Rr1",
"Description": "",
"RepeatsOnId": 0,
"StatusId": 47131,
"StatusName": "Planned",
"StatusIcon": "http://localhost/ITM.Web/UploadData/Iconlibrary/calendar-insert.png",
"StatusDate": "2019-11-12T00:00:00Z",
"ProjectedAmount": {
"Amount": 630,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2020-05-14T23:54:04Z",
"BaseAmount": 630
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-04-21T18:26:58Z",
"BaseAmount": 0
},
"IsDependOnTask": false,
"DependingOnTaskName": "Task 2",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"AllCustomFields": {
"ryg": null,
"test no": null,
"te01": [],
"Hello World": []
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "2019-07-08T00:00:00Z",
"BaselineBlendedProjectedAmount": 630,
"BaselineBlendedDate": "2019-07-08T00:00:00Z",
"BaselineProjectedAmount": 630,
"FirstRecurrenceDate": "",
"DueDate": "2019-07-08T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false
},
{
"Id": 29495,
"No": "Revenue No. 1",
"Name": "Test Darshi Revenue",
"Description": "",
"RepeatsOnId": 0,
"StatusId": 47132,
"StatusName": "Billed",
"StatusIcon": "http://localhost/ITM.Web/UploadData/Iconlibrary/clipboard--pencil.png",
"StatusDate": "2021-04-27T00:00:00Z",
"ProjectedAmount": {
"Amount": 50,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-06T13:33:14Z",
"BaseAmount": 50
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-07T10:37:48Z",
"BaseAmount": 0
},
"IsDependOnTask": false,
"DependingOnTaskName": "",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"AllCustomFields": {
"ryg": {
"Text": "1",
"Color": "Red"
},
"test no": null,
"te01": [
{
"Id": 4156,
"Value": "te"
}
],
"Hello World": [
{
"Id": 4162,
"Value": "fgbfkgbdfgbfdgkjdfgd"
}
]
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "2021-04-27T00:00:00Z",
"BaselineBlendedProjectedAmount": 50,
"BaselineBlendedDate": "2021-04-27T00:00:00Z",
"BaselineProjectedAmount": 50,
"FirstRecurrenceDate": "",
"DueDate": "2021-04-27T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false
},
{
"Id": 29507,
"No": "",
"Name": "test recurring",
"Description": "",
"RepeatsOnId": 0,
"StatusId": 47132,
"StatusName": "Billed",
"StatusIcon": "http://localhost/ITM.Web/UploadData/Iconlibrary/clipboard--pencil.png",
"StatusDate": "2021-05-07T00:00:00Z",
"ProjectedAmount": {
"Amount": 500,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-07T17:28:10Z",
"BaseAmount": 500
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-07T17:28:41Z",
"BaseAmount": 0
},
"IsDependOnTask": false,
"DependingOnTaskName": "",
"IsStartDate": false,
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"AllCustomFields": {
"ryg": {
"Text": "1",
"Color": "Red"
},
"test no": 5564,
"te01": [
{
"Id": 6848,
"Value": "te 2"
}
],
"Hello World": [
{
"Id": 4162,
"Value": "fgbfkgbdfgbfdgkjdfgd"
}
]
},
"IsConsiderAsActualValue": false,
"IsDocumentAttached": false,
"BaselineDueDate": "2021-05-19T00:00:00Z",
"BaselineBlendedProjectedAmount": 500,
"BaselineBlendedDate": "2021-05-19T00:00:00Z",
"BaselineProjectedAmount": 500,
"FirstRecurrenceDate": "",
"DueDate": "2021-05-19T00:00:00Z",
"DependOnTaskDate": "",
"IsTaskAssociated": false
}
]
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Project revenue v2 ¶
Delete a project revenue v2DELETE/Projects/{ProjectId}/Revenues/{RevenueId}
Example URI
- ProjectId
int
(required) Example: 43407- RevenueId
int
(required) Example: 29501
200
Headers
Content-Type: application/json
Body
{
"Id": 29501,
"StatusMessage": "Revenue deleted successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 29501,
"StatusMessage": "Project 43407 does not exist",
"StatusCode": 400
}
{
"RevenueId": 29501,
"StatusMessage": "Revenue 29501 does not exist",
"StatusCode": 400
}
{
"RevenueId": 29501,
"StatusMessage": "Account 4019 does not exist",
"StatusCode":400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a project revenue v2GET/Projects/{ProjectId}/Revenues/{RevenueId}
Example URI
- ProjectId
int
(required) Example: 43407- RevenueId
int
(required) Example: 29514
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"Id": 29514,
"No": "",
"Name": "test21052021",
"Description": "sdgsdgsdgsd",
"DueDate": "2021-05-21T00:00:00Z",
"StatusId": 47131,
"StatusDate": "2021-05-21T00:00:00Z",
"ProjectedAmount": {
"Amount": 100,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-21T05:50:17Z"
},
"ActualAmount": {
"Amount": 0,
"CurrencyId": 4145,
"ExchangeRate": 1,
"AppliedDate": "2021-05-21T11:20:56Z"
},
"DependingOnTaskId": 0,
"DependingOnTaskName": "",
"TaskDateGap": 0,
"IsDependUponTaskStartDate": false,
"Period": null
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a project revenue v2PATCH/Projects/{ProjectId}/Revenues/{RevenueId}
Example URI
- ProjectId
int
(required) Example: 43407- RevenueId
int
(required) Example: 29515
Headers
Content-Type: application/json
Token: [token]
Body
{
"Name": "Test Update",
"StatusId": 22,
"ProjectedAmount": 100,
"ActualAmount": 0,
"Description": "",
"StatusDate": "2017-03-14T00:00:00Z",
"DueDate": "2017-03-14T00:00:00Z",
"TaskDateGap": 0,
"IsDependOnTask": false,
"IsStartDate": "",
"No": "",
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountChangeApplied": "2017-03-14T00:00:00Z",
"ActualAmountCurrencyId": 1113,
"ActualAmountChangeApplied": "2017-03-14T00:00:00Z",
"IsDependUponTaskStartDate": true,
"IsConsiderActualValue": false,
"DependingOnTaskId": 0
}
200
Headers
Content-Type: application/json
Body
{
"RevenueId": 29515,
"StatusMessage": "Revenue updated successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Revenue 29515 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Project 43407 does not exist",
"StatusCode": 400
}
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Project 43407 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Account 4019 does not exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter revenue name.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid due date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter status id greater than 0.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid projected amount currency id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid total amount currency id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid depending task id.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter First revenue date.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter Repeat type.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter Number of recurrences.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Associated Tasks With Revenue ¶
Get Associated Tasks With RevenueGET/Projects/{ProjectId}/Revenues/{RevenueId}/Periods/{MonthPeriod}
Example URI
- ProjectId
int
(required) Example: 43407- RevenueId
int
(required) Example: 29493- MonthPeriod
int
(required) Example: 202005
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"Id": 1031678,
"Name": "Task 1",
"Price": 2000,
"Status": null,
"IsSelected": false,
"IsAlreadyAssociated": false
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service revenues ¶
Get service revenuesGET/service/{ServiceId}/revenues
Retrieves a list of all revenues of a particular service, including their details.
This endpoint accepts Group Filtering v1. The parameters this filter accepts are:
-
RevenueId
-
RevenueName
-
RevenueStatus.RevenueStatusName
-
RevenueStatus.RevenueStatusId
-
RevenueStatus.StatusDate
-
ProjectedAmountDetail.ProjectedAmount
-
ProjectedAmountDetail.ProjectedAmountCurrencyId
-
ProjectedAmountDetail.ProjectedAmountExchangeRate
-
ProjectedAmountDetail.ProjectedAmountChangeApplied
-
ProjectedAmountDetail.ProjectedAmountCurrencySymbol
-
ProjectedAmountDetail.ProjectedAmountCurrencyAlphabeticCode
-
ActualAmountDetail.ActualAmount
-
ActualAmountDetail.ActualAmountCurrencyId
-
ActualAmountDetail.ActualAmountExchangeRate
-
ActualAmountDetail.ActualAmountChangeApplied
-
ActualAmountDetail.ActualAmountCurrencySymbol
-
ActualAmountDetail.ActualAmountCurrencyAlphabeticCode
-
Description
-
DueDate
-
DependingOnActivity.DependingOnActivityId
-
DependingOnActivity.DependingOnActivityName
-
ActivityDateGap
-
IsDependOnActivity
-
IsStartDate
-
RevenueNo
-
IsDocumentAttached
Example URI
- ServiceId
int
(required) Example: 542
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"ServiceId": 542,
"RevenueId": 2947,
"RevenueName": "test revenue",
"RevenueStatus": {
"RevenueStatusName": "Busy",
"RevenueStatusId": 13,
"RevenueStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/pencil--arrow.png",
"StatusDate": "2017-07-25T00:00:00Z"
},
"Description": "revenue description",
"DueDate": "2017-07-25T00:00:00Z",
"DependingOnActivity": {
"DependingOnActivityName": "test activity",
"DependingOnActivityId": 175313
},
"ActivityDateGap": 0,
"IsDependOnActivity": true,
"IsStartDate": false,
"RevenueNo": "rev123",
"ActualAmountDetail": {
"ActualAmount": 0,
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 1,
"ActualAmountChangeApplied": "2017-09-07T11:44:09Z",
"ActualAmountCurrencySymbol": "$",
"ActualAmountCurrencyAlphabeticCode": "USD"
},
"ProjectedAmountDetail": {
"ProjectedAmount": 123,
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 1,
"ProjectedAmountChangeApplied": "2017-09-07T11:44:09Z",
"ProjectedAmountCurrencySymbol": "$",
"ProjectedAmountCurrencyAlphabeticCode": "USD"
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"StatusMessage": "Please enter valid field name",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service revenue status ¶
Get service revenue statusGET/service/{ServiceId}/revenuestatuses
Example URI
- ServiceId
int
(required) Example: 542
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
[
{
"RevenueStatusName": "Available",
"RevenueStatusBaseId": 22,
"IsConsiderAsActualValue": false,
"IconPath": "~/UploadData/Iconlibrary/plus.png",
"IsDefault": true
},
{
"RevenueStatusName": "Away",
"RevenueStatusBaseId": 16,
"IsConsiderAsActualValue": false,
"IconPath": "~/UploadData/Iconlibrary/application--plus.png",
"IsDefault": false
},
{
"RevenueStatusName": "Busy",
"RevenueStatusBaseId": 13,
"IsConsiderAsActualValue": false,
"IconPath": "~/UploadData/Iconlibrary/pencil--arrow.png",
"IsDefault": false
}
]
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Service revenue ¶
Delete a service revenueDELETE/service/{ServiceId}/revenue/{RevenueId}
Example URI
- ServiceId
int
(required) Example: 542- RevenueId
int
(required) Example: 2951
200
Headers
Content-Type: application/json
Body
{
"RevenueId": null,
"StatusMessage": "Revenue deleted successfully",
"StatusCode": 200
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Revenue id/s doesn't exist",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Get a service revenueGET/service/{ServiceId}/revenue/{RevenueId}
Example URI
- ServiceId
int
(required) Example: 542- RevenueId
int
(required) Example: 2947
Headers
Content-Type: application/json
Token: [token]
200
Headers
Content-Type: application/json
Body
{
"ServiceId": 542,
"RevenueId": 2947,
"RevenueName": "test revenue",
"RevenueStatusName": "Busy",
"RevenueStatusId": 13,
"RevenueStatusIcon": "https://app.itmplatform.com/UploadData/Iconlibrary/pencil--arrow.png",
"StatusDate": "2017-07-25T00:00:00Z",
"ProjectedAmount": 123,
"ActualAmount": 0,
"Description": "test re",
"DueDate": "2017-07-25T00:00:00Z",
"DependingOnActivityName": "test activity",
"DependingOnActivityId": 175313,
"ActivityDateGap": 0,
"IsDependOnActivity": false,
"IsStartDate": false,
"RevenueNo": "rev123",
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 1,
"ProjectedAmountChangeApplied": "2017-09-07T11:44:09Z",
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 1,
"ActualAmountChangeApplied": "2017-09-07T11:44:09Z",
"IsConsiderActualValue": false,
"IsDependUponActivityStartDate": true,
"ActivityPath": "test activity"
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Add a service revenuePOST/service/{ServiceId}/revenue/
Example URI
- ServiceId
int
(required) Example: 542
Headers
Content-Type: application/json
Token: [token]
Body
"For single revenue"
{
"RevenueName":"Revenue Insert",
"RevenueStatusId":13,
"ProjectedAmount":100,
"ActualAmount":0,
"Description":"",
"StatusDate":"2017-03-14T00:00:00Z",
"DueDate":"2017-03-14T00:00:00Z",
"ActivityDateGap":0,
"IsDependOnActivity":false,
"IsStartDate":"",
"RevenueNo":"",
"ProjectedAmountCurrencyId":1113,
"ProjectedAmountExchangeRate":1,
"ProjectedAmountChangeApplied":"2017-03-14T00:00:00Z",
"ActualAmountCurrencyId":1113,
"ActualAmountExchangeRate":1,
"ActualAmountChangeApplied":"2017-03-14T00:00:00Z",
"IsDependUponTaskStartDate":true,
"IsConsiderActualValue":false,
"DependingOnActivityId" :0
}
"For recurring revenue"
{
"RevenueName":"Recurring revenue",
"Description":"description",
"RevenueStatusId":22,
"StatusDate": "2017-07-05T00:00:00Z",,
"RevenueNo":"1234",
"ActualAmount":100,
"ActualAmountCurrencyId":1113,
"ProjectedAmountExchangeRate":1,
"ActualAmountChangeApplied":"2017-07-05T08:43:23.076Z",
"ProjectedAmount":100,
"ProjectedAmountCurrencyId":1113,
"ProjectedAmountExchangeRate":1,
"ProjectedAmountChangeApplied":"2017-07-05T08:43:23.076Z",
"DependingOnTaskId":0,
"IsRecurrence":true,
"DueDateAfter":1,
"FirstRevenueDate":"2017-07-05T00:00:00Z",
"RepeatsOn":2,
"RepeatsOnValue":1,
"NumberOfRecurrences":2
}
201
Headers
Content-Type: application/json
Token: [token]
Body
{
{
"RevenueId":3014,
"StatusMessage": "Revenue inserted successfully",
"StatusCode": 201
}
}
{
{
"RevenueId": [
"3015",
"3016"
],
"StatusMessage": "Revenue(s) inserted successfully",
"StatusCode": 201
}
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Service doesn't exist",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter revenue name",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter status date",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status id",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid status date",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid due date",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid Projected amount",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid actual amount",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid projected amount currency id",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid total amount currency id",
"StatusCode": 400
}
{
"RevenueId": 0,
"StatusMessage": "Please enter valid depending activity id",
"StatusCode": 400
}
401
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Invalid Token.",
"StatusCode": 401
}
403
Headers
Content-Type: application/json
Body
{
"StatusMessage": "You need additional privileges to complete this action.",
"StatusCode": 403
}
Update a service revenuePUT/service/{ServiceId}/revenue/{RevenueId}
Example URI
- ServiceId
int
(required) Example: 542- RevenueId
int
(required) Example: 3014
Headers
Content-Type: application/json
Token: [token]
Body
{
"RevenueName": "Update Revenue",
"RevenueStatusId": 13,
"ProjectedAmount": 100,
"ActualAmount": 0,
"Description": "",
"StatusDate": "2017-03-14T00:00:00Z",
"DueDate": "2017-03-14T00:00:00Z",
"ActivityDateGap": 0,
"IsDependOnActivity": false,
"IsStartDate": "",
"RevenueNo": "",
"ProjectedAmountCurrencyId": 1113,
"ProjectedAmountExchangeRate": 1,
"ProjectedAmountChangeApplied": "2017-03-14T00:00:00Z",
"ActualAmountCurrencyId": 1113,
"ActualAmountExchangeRate": 1,
"ActualAmountChangeApplied": "2017-03-14T00:00:00Z",
"IsDependUponTaskStartDate": true,
"IsConsiderActualValue": false,
"DependingOnActivityId": 0
}
201
Headers
Content-Type: application/json
Body
{
"RevenueId": 3014,
"StatusMessage": "Revenue updated successfully",
"StatusCode": 201
}
400
Headers
Content-Type: application/json
Body
{
"StatusMessage": "Token expired. Please generate a new token.",
"StatusCode": 400
}
{
"RevenueId":