System Integration API
Reference Manual
Contents
- Response Formats
- Session
- Division
- Payment Terms
- Labor
- Vendor
- Customer
- Customer Invoice.
- Customer Invoice Export Document
- Customer Receipt
- Customer Receipt Export Document
- Project
- Timesheet Entry
- Timesheet Transaction Export Document
- Vendor Invoice
- Vendor Invoice Payment
- Vendor Invoice Export Document
- Purchase Order
- Purchase Order Receipt
- JSON Types
1. Response Formats
Response Status Code | Comments |
200 | When doing any type of request a response of 200 indicates success |
400 | This is generally a validation warning or a business rule failure. Code may be provided to deal with special situations but can generally be ignored. { “Error”: { “Code”: “”, “Message”: { “Value”: “For Rest Api Vendor, the property ‘Name’ is required.” } } } |
404 | Returned in conjunction with a GET Detail request or an update request where the requested entity is no longer available |
500 | An unexpected situation occurred. A notification will be sent to 4castplus support for resolution. { “Error”: { “Code”: null, “Message”: { “Value”: “There was an internal server error. Administrator has been notified.” } } } |
503 | Server down for maintenance |
September
- Defect fix re: The Actual Cost values should include Project Cost Taxes in the Custom Templated WBS(Cost) report. (Sept 4)
- Defect fix re: Whoops alert when running the Global Templated Report for All Procurement Items when using “AS OF.” (Sept 4)
- Added Fields to All Procurement Item data sets (Project & Global) (Sept 4)
- Buyer (RFQ)
- Engineer (RFQ)
- RFQ Bidders
2. Session
Information | Detail |
Login | POST https://base/api/login |
Logoff | POST https://base/api/logoff |
Sample Login Request
{
“Account”: “yourcompaniesname”,
“UserName”: “youremail”,
“Password”: “yourpassword”
}
Sample Login Response
{
“SessionId”: “SESSIONID”,
“Account”: “ACCOUNT NAME”,
“UserName”: “USERNAME”,
“ExpiresOn”: “WHENSESSIONEXPIRES”
}
Each subsequent request must contain the above sessionId either as a url parameter, or a cookie.
Base/api/action?_s=sessionId
Cookie _ACCOUNT_SESSION_ID_
3. Division
Information | Detail |
List | |
|
|
Field | Type | Comments |
Id | Integer |
|
Name | Text(256) | Required |
Code | Text(50) | Required |
BusinessIdentifier | Text(50) |
|
Active | Bool |
|
4. Payment Terms
Information | Detail |
List | |
|
|
Field | Type | Comments |
Id | Integer |
|
Name | Text(50) | Required |
Code | Text(50) |
|
Active | Bool |
|
5. Labor
Information | Detail |
Detail | |
List | |
| For the List Operation a filter can be supplied for ModifiedOn and CreatedOn labor?$filter=ModifiedOn gt 2010-01-01T00:00:00 |
Field | Type | Comments |
Id | Integer |
|
EmployeeId | Text(40) | Required |
Text(255) |
| |
FirstName | Text(300) | Required |
LastName | Text(50) | Required |
PreferredName | Text(100) |
|
CostCode | Text(50) |
|
ResourceCode | Text(50) |
|
AddressLine1 | Text(255) |
|
AddressLine2 | Text(255) |
|
City | Text(120) |
|
Province | Text(120) |
|
PostalCode | Text(50) |
|
Country | Text(120) |
|
PhoneNumber | Text(50) |
|
HiredOn | Date | Required |
IsContractor | Bool |
|
DepartmentName | Text(100) |
|
IncludeInPayroll | Bool |
|
LicenseProfile | Text(50) | Required |
TerminatedOn | Date |
|
IsActive | Bool |
|
InactiveOn | DateTime |
|
SupervisorName | Labor.Supervisor | Required |
Supervisor.EmployeeId | Text(40) | Required |
Supervisor.FirstName | Text(50) | Required |
Supervisor.LastName | Text(300) | Required |
Supervisor.CostCode | Text(50) |
|
OvertimeCalculation | Text(50) |
|
MinimumRequiredHoursPerWeek | Decimal |
|
MinimumRequiredHoursPerMonday | Decimal |
|
MinimumRequiredHoursPerTuesday | Decimal |
|
MinimumRequiredHoursPerWednesday | Decimal |
|
MinimumRequiredHoursPerThursday | Decimal |
|
MinimumRequiredHoursPerFriday | Decimal |
|
MinimumRequiredHoursPerSaturday | Decimal |
|
MinimumRequiredHoursPerSunday | Decimal |
|
VacationAccrualFrequency | Text(50) |
|
ModifiedOn | DateTime |
|
CreatedOn | DateTime |
|
VacationAccrual | Labor.VacationAccrual |
|
VacationAccrual.EffectiveFrom | Date |
|
VacationAccrual.DaysPerFrequency | Decimal |
|
CostClasses | Labor.CostClass |
|
CostClass.Name | Text(350) |
|
CostClass.CostCode | Text(100) |
|
Properties | Labor.Property |
|
Property.PropertyName | Text(50) |
|
Property.PropertyValue | Text(800) |
|
6. Vendor
Information | Detail |
Detail | |
List | |
For the List Operation a filter can be supplied for VendorCode vendors?$filter=VendorCode eq ‘ABCDE’ | |
Create | |
Update | |
Delete |
Field | Type | Comments |
Id | Integer | |
Name | Text(100) | Required |
VendorCode | Text(50) | Required |
PaymentTerms | Text(50) | DEPRECATED => PaymentTermsName |
PaymentTermsName | Text(50) | |
PaymentTermsCode | Text(50) | |
Class | Text(50) | |
DefaultResourceType | Text(50) | |
Location | Text(40) | |
PhoneNumber | Text(50) | |
FaxNumber | Text(50) | |
Text(60) | ||
Website | Text(60) | |
Rating | Integer | |
Approved | Bool | Y or N |
Contractor | Bool | One of Contractor or Supplier is |
Supplier | Bool | |
Active | Bool | |
Description | Text(255) | |
Divisions | Division | |
Division.Id | Integer | |
Division.Name | Text(256) | Required |
Division.Code | Text(50) | Required |
Addresses | Address | |
Address.Id | Integer | Required on update |
Address.AddressLine1 | Text(255) | |
Address.City | Text(50) | |
Address.Province | Text(50) | |
Address.Country | Text(50) | |
Address.PostalCode | Text(50) | |
Address.Primary | Bool | Y or N |
Labors | Labor | |
Labor.Id | Integer | Required |
Labor.FirstName | Text(100) | Required |
Labor.LastName | Text(50) | Required |
Labor.IsSubcontractor | Boolean | |
Labor.Role | Text(50) | |
Labor.Email | Text(60) | |
Labor.PhoneNumber | Text(50) | |
Labor.FaxNumber | Text(50) | |
Labor.PrimaryContact | Bool | |
Labor.Procurement | Bool | Required |
Labor.Active | Bool | |
Labor.Addresses | Address | |
Labor.Address.Id | Integer | Required on update |
Labor.Address.AddressLine1 | Text(255) | |
Labor.Address.City | Text(50) | |
Labor.Address.Province | Text(50) | |
Labor.Address.Country | Text(50) | |
Labor.Address.PostalCode | Text(50) |
Labor.Address.Primary | Bool |
Create / Update can be done with same format as detail response
Sample Detail Response
{
“Id”: 6,
“Name”: “Vendor 123”,
“VendorCode”: “CODE123”,
“Class”: “Material Classes”,
“DefaultResourceType”: “”,
“Location”: “Location”,
“PhoneNumber”: “123456789”,
“FaxNumber”: “123456789”,
“Email”: “john.doe@smith.com”,
“Website”: null,
“Rating”: 0,
“Approved”: true,
“Contractor”: false,
“Supplier”: true,
“Active”: true,
“Description”: null,
“Divisions”: [],
“Addresses”: [
{
“Id”: -1,
“AddressLine1”: “Address”,
“City”: “City”,
“Province”: “Province”,
“Country”: “Country”,
“PostalCode”: “123456”,
“Primary”: true
}
],
“Labors”: [
{
“Id”: 429,
“FirstName”: “FirstName “,
“LastName”: “LastName”,
“IsSubcontractor”: false,
“Role”: null,
“Email”: “jane.doe@smith.com”,
“PhoneNumber”: “123456789”,
“FaxNumber”: “123456789”,
“PrimaryContact”: true,
“Procurement”: true,
“Active”: true,
“Addresses”: [
{
“Id”: 227,
“AddressLine1”: “AddressLine1”,
“City”: “City “,
“Province”: “Province “,
“Country”: “Country”,
“PostalCode”: “123456”,
“Primary”: true
}
]
}
]
}
7. Customer
Information | Detail |
Detail | |
List | |
| For the List Operation a filter can be supplied for CustomerCode customers?$filter=CustomerCode eq ‘ABCDE’ |
Create | |
Update | |
Delete |
Field | Type | Comments |
Id | Integer |
|
Name | Text(60) | Required |
CustomerCode | Text(50) | Required |
PaymentTermsId | Integer |
|
PaymentTermsName | Text(50) |
|
PhoneNumber | Text(50) |
|
Active | Bool | Y or N |
Description | Text(255) |
|
Divisions | Division |
|
Division.Id | Integer |
|
Division.Name | Text(256) | Required |
Division.Code | Text(50) | Required |
Addresses | Address |
|
Address.Id | Integer | Required on update |
Address.ContactName | Text(120) |
|
Address.AddressCode | Text(50) |
|
Address.PhoneNumber | Text(50) |
|
Address.Email | Text(60) |
|
Address.AddressLine1 | Text(255) |
|
Address.AddressLine2 | Text(255) |
|
Address.City | Text(50) |
|
Address.Province | Text(50) |
|
Address.Country | Text(50) |
|
Address.PostalCode | Text(50) |
|
Address.RemiteTo | Bool |
|
Address.ShipTo | Bool |
|
Address.Active | Bool |
|
Address.Primary | Bool |
|
Create / Update can be done with same format as detail response
Sample Detail Response
{
“Id”: 1011,
“Name”: “Customer123”,
“CustomerCode”: “CODE123”,
“PaymentTermsId”: 6,
“PaymentTermsName”: “Payment 30 Days”,
“PhoneNumber”: “123456789”,
“Active”: true,
“Description”: “”,
“Divisions”: [
{
“Id”: 1,
“Name”: “Division”,
“DivisionCode”: “DC”
}
],
“Addresses”: [
{
“Id”: 1,
“ContactName”: “Contact 1”, “AddressCode”: null,
“PhoneNumber”: “123456789”,
“Email”: “”,
“AddressLine1”: “Address”,
“City”: “City”,
“Province”: “Province”,
“Country”: “Country”,
“PostalCode”: “123456”,
“RemitTo”: false,
“ShipTo”: false, “Active”: true,
“Primary”: false
},
{
“Id”: 64,
“ContactName”: “Contact 2”,
“AddressCode”: null,
“PhoneNumber”: “123456789”,
“Email”: “”,
“AddressLine1”: “Address”,
“City”: “City”,
“Province”: “Province”, “Country”: “Country”,
“PostalCode”: “123456”,
“RemitTo”: false,
“ShipTo”: false,
“Active”: false,
“Primary”: true
}
]
}
8. Customer Invoice
Information | Detail |
Detail | |
List | |
For the List Operation a filter can be supplied for ModifiedOn,CreatedOn,Approved,InvoiceNumber customerInvoices?$filter=CreatedOn gt yyyy-MM-ddTHH:mm:ss and Approved eq true customerInvoices?$filter=CreatedOn gt 2019-10-27T12:44:45 and Approved eq true DateTimes are always in UTC |
Field | Type | Comments |
Id | Integer | |
DivisionName | Text(50) | |
DivisionCode | Text(255) | |
CustomerCode | Text(50) | |
ProjectCode | Text(50) | |
ProjectAfePO | Text(100) | |
FixedPriceBillingMethod | Text(50) | |
InvoiceNumber | Text(50) | Required |
ReferenceCode | Text(50) | |
InvoiceDescription | Text(2048) | |
ExportDocumentDate | Date | |
ExportReferenceNumber | Text(50) | |
CurrencyCode | Text(50) | |
InvoiceDate | Date | “YYYY-MM-DD” |
InvoiceDueDate | Date | “YYYY-MM-DD” |
PaymentTerms | Integer | |
PreTaxAdjustmentAmount | Decimal | |
InvoiceAmount | Decimal | |
QuantityDiscountAmount | Decimal | |
TotalDiscountAmount | Decimal | |
PreTaxInvoiceAmount | Decimal | |
TaxAmount | Decimal | |
PostTaxAdjustmentAmount | Decimal | |
TotalInvoiceAmount | Decimal | |
Exported | Bool | |
Approved | Bool | |
ApprovedBy | Text(350) | |
ApprovedOn | DateTime | |
ModifiedOn | DateTime | |
CreatedOn | DateTime | |
Project | InvoiceProject | |
InvoiceProject.Id | Integer | |
InvoiceProject.ProjectCode | Text(50) | |
InvoiceProject.Properties | InvoiceProjectProperty | |
InvoiceProjectProperty.PropertyCode | Text(50) | |
InvoiceProjectProperty.PropertyName | Text(50) | |
InvoiceProjectProperty.PropertyValue | Text(800) | |
QuantityDiscounts | InvoiceDiscount | |
InvoiceDiscount.Name | Text(50) | |
InvoiceDiscount.Code | Text(50) | |
InvoiceDiscount.Amount | Decimal | |
Lines | InvoiceLine | |
InvoiceLine.Id | Integer | |
InvoiceLine.ProjectCode | Text(50) | |
InvoiceLine.BillingType | Text(50) | |
InvoiceLine.Quantity | Decimal | |
InvoiceLine.GrossAmount | Decimal | |
InvoiceLine.DiscountAmount | Decimal | |
InvoiceLine.TaxAmount | Decimal | |
InvoiceLine.Total | Decimal | |
InvoiceLine.AccountingCode | Text(50) | |
InvoiceLine.BillingCodes | InvoiceBillingCode | |
InvoiceBillingCode.Name | Text(50) | |
InvoiceBillingCode.Value | Text(120) | |
InvoiceLine.Discounts | InvoiceDiscount | |
InvoiceDiscount.Name | Text(50) | |
InvoiceDiscount.Code | Text(50) | |
InvoiceDiscount.Amount | Decimal | |
InvoiceLine.Taxes | InvoiceLineTax | |
InvoiceLineTax.TaxCode | Text(50) | |
InvoiceLineTax.TaxAccountingCode | Text(50) | |
InvoiceLineTax.TaxPercentage | Decimal | |
InvoiceLineTax.TaxAmount | Decimal | |
ProgressLines | ProgressInvoiceLine | |
ProgressInvoiceLine.Id | Integer | |
ProgressInvoiceLine.ProjectCode | Text(50) | |
ProgressInvoiceLine.Wbs | Text(50) | |
ProgressInvoiceLine.BillingType | Text(50) | |
ProgressInvoiceLine.GrossAmount | Decimal | |
ProgressInvoiceLine.DiscountAmount | Decimal | |
ProgressInvoiceLine.TaxAmount | Decimal | |
ProgressInvoiceLine.Total | Decimal | |
ProgressInvoiceLine.BillingCodes | InvoiceBillingCode | |
ProgressInvoiceLine.Name | Text(50) | |
ProgressInvoiceLine.Value | Text(120) | |
ProgressInvoiceLine.Discounts | InvoiceDiscount | |
InvoiceDiscount.Name | Text(50) | |
InvoiceDiscount.Code | Text(50) | |
InvoiceDiscount.Amount | Decimal | |
ProgressInvoiceLine.Taxes | ProgressInvoiceLineTax | |
ProgressInvoiceLineTax.TaxCode | Text(50) | |
ProgressInvoiceLineTax.TaxAccountingCode | Text(50) | |
ProgressInvoiceLineTax.TaxPercentage | Decimal | |
ProgressInvoiceLineTax.TaxAmount | Decimal |
Sample Detail Response
{
“Id”: 5,
“CustomerCode”: “Customer123”,
“ProjectCode”: “ProjectCode”,
“InvoiceNumber”: “20190918-001”,
“CurrencyCode”: “CAD”,
“InvoiceDate”: “2019-09-18”,
“InvoiceDescription”: “NOTES”,
“ReferenceCode”: “ReferenceCode”, “ExportReferenceNumber”: “ASDF”,
“PreTaxInvoiceAmount”: 9185.0000,
“TotalInvoiceAmount”: 10379.0500,
“Exported”: true,
“Approved”: false,
“ProgressLines”: [],
“Lines”: [
{
“Id”: 146,
“Quantity”: 4.0000,
“TaxAmount”: 36.4000,
“Total”: 280.0000,
“Taxes”: [
{
“TaxCode”: “TCC”,
“TaxAmount”: 36.4000
}
] }, …
{
“Id”: 3082,
“Quantity”: 3.5000,
“TaxAmount”: 31.8500,
“Total”: 245.0000,
“Taxes”: [
{
“TaxCode”: “TCC”,
“TaxAmount”: 31.8500
}
]
}
]
}
Sample Progress Detail Response
{
“Id”: 5,
“CustomerCode”: “Customer123”,
“ProjectCode”: “ProjectCode”,
“InvoiceNumber”: “20190918-001”,
“CurrencyCode”: “CAD”,
“InvoiceDate”: “2019-09-18”,
“InvoiceDescription”: “NOTES”,
“ReferenceCode”: “ReferenceCode”, “ExportReferenceNumber”: “ASDF”,
“PreTaxInvoiceAmount”: 9185.0000,
“TotalInvoiceAmount”: 10379.0500,
“Exported”: true,
“Approved”: false,
“ProgressLines”: [
{
“Id”: 146,
“Wbs”: “1.1.1”,
“TaxAmount”: 36.4000,
“Total”: 280.0000,
“Taxes”: [
{
“TaxCode”: “TCC”,
“TaxAmount”: 36.4000
}
] }, …
{
“Id”: 3082,
“Wbs”: “1.1.2”,
“TaxAmount”: 31.8500,
“Total”: 245.0000,
“Taxes”: [
{
“TaxCode”: “TCC”,
“TaxAmount”: 31.8500
}
]
}
],
“Lines”: []
}
9. Customer Invoice Export Document
Information | Detail |
Detail | GET https://base/api/customerInvoiceExportDocuments(documentId) |
List | |
Create |
Field | Type | Comments |
Id | Integer | |
DocumentDate | Date | |
DocumentNumber | Text(100) | |
ExportReferenceNumber | Text(50) | |
Invoices | DocumentInvoice | |
DocumentInvoice.Id | Integer | Required |
DocumentInvoice.CustomerCode | Text(50) | |
DocumentInvoice.ProjectCode | Text(50) | |
DocumentInvoice.InvoiceNumber | Text(50) | |
DocumentInvoice.ExportReferenceNumber | Text(50) | |
DocumentInvoice.IntegrationInvoiceTotal | Decimal | |
DocumentInvoice.IntegrationTaxAmount | Decimal | |
DocumentInvoice.IntegrationInvoiceBillingAmount | Decimal | |
DocumentInvoice.IntegrationDiscountAmount | Decimal | |
DocumentInvoice.IntegrationSurchargeAmount | Decimal |
Sample Create Request
{
“ExportReferenceNumber”: “ABC”,
“Invoices”: [
{
“Id”: 1,
“ExportReferenceNumber”: “DEF”
},
{
“Id”: 2,
“ExportReferenceNumber”: “DEF2”
},
{
“Id”: 3,
“ExportReferenceNumber”: “DEF3”
},
{
“Id”: 4
},
{
“Id”: 5,
“ExportReferenceNumber”: “DEF5”
}
]
}
10. Customer Receipt
Information | Detail |
Detail | |
List | |
Create | |
Update | |
Delete |
Detail / List Fields | Type | Comments |
Id | Integer | |
ProjectCode | Text(50) | |
CustomerCode | Text(50) | |
ReceiptNumber | Text(50) | |
ReceiptAmount | Decimal | |
ReceiptDate | Date | |
ReceiptNotes | Text(1000) | |
ImportReferenceId | Text(50) | |
ExportReferenceNumber | Text(50) | |
Submitted | Bool | |
Exported | Bool | |
ModifiedOn | DateTime | |
CreatedOn | DateTime | |
Items | CustomerReceiptItem | |
CustomerReceiptItem.InvoiceId | Integer | |
CustomerReceiptItem.Amount | Decimal |
Create / Update Fields | Type | Comments |
ProjectCode | Text(50) | Required |
CustomerCode | Text(50) | Required |
ReceiptNumber | Text(50) | Required |
ReceiptDate | Date | Required |
ReceiptNotes | Text(1000) | |
ImportReferenceId | Text(50) | |
Submitted | Bool | |
Items | CustomerReceiptItem | |
CustomerReceiptItem.InvoiceId | Integer | Required |
CustomerReceiptItem.Amount | Decimal | (Provide one of Amount or IntegrationAmount) |
CustomerReceiptItem.IntegrationAmount | Decimal | Only provide if different from Amount |
Sample Create Request
{
“ProjectCode”: “PROJECT_CODE”,
“CustomerCode”: “CUSTOMER_CODE”,
“ReceiptNumber”: “RECEIPT_NUMBER”,
“ReceiptDate”: “2020-06-24”,
“ReceiptNotes”: null,
“ImportReferenceId”: null, “Submitted”: false, “Items”: [
{
“InvoiceId”: 123,
“Amount”: 500
}
]
}
11. Customer Receipt Export Document
Information | Detail |
Detail | GET https://base/api/customerReceiptExportDocuments(documentId) |
List | |
Create |
Detail / List Fields | Type | Comments |
Id | Integer | |
DocumentNumber | Text(100) | |
ExportReferenceNumber | Text(50) | |
Receipts | DocumentReceipt | |
DocumentReceipt.Id | Integer | Required |
DocumentReceipt.CustomerCode | Text(50) | |
DocumentReceipt.ProjectCode | Text(50) | |
DocumentReceipt.ReceiptNumber | Text(50) | |
DocumentReceipt.ExportReferenceNumber | Text(50) |
Create Fields | Type | Comments |
ExportReferenceNumber | Text(50) | |
Receipts | DocumentReceipt | |
DocumentReceipt.Id | Integer | Required |
DocumentReceipt.ExportReferenceNumber | Text(50) |
Sample Create Request
{
“ExportReferenceNumber”: “ABC”,
“Receipts”: [
{
“Id”: 1,
“ExportReferenceNumber”: “DEF”
},
{
“Id”: 2,
“ExportReferenceNumber”: “DEF2”
},
{
“Id”: 3,
“ExportReferenceNumber”: “DEF3”
},
{
“Id”: 4
},
{
“Id”: 5,
“ExportReferenceNumber”: “DEF5”
}
]
}
12. Project
Information | Detail |
Detail | |
List | |
For the List Operation a filter can be supplied for ModifiedOn,CreatedOn projects?$filter=CreatedOn gt yyyy-MM-ddTHH:mm:ss projects?$filter=CreatedOn gt 2019-10-27T12:44:45 DateTimes are always in UTC |
Query Fields | Type | Comments |
Id | Integer | |
CompanyCode | Text(50) | |
DivisionCode | Text(50) | |
ProjectCode | Text(50) | |
ProjectName | Text(255) | |
ProjectManagerName | Text(350) | |
SupervisorName | Text(350) | |
Location | Text(40) | |
CustomerCode | Text(50) | |
CustomerName | Text(60) | |
ProjectBillingType | Text(50) | |
BusinessDimensionCode | Text(50) | |
BusinessDimensionName | Text(50) | |
ProjectType | Text(50) | |
ProjectSpendingType | Text(50) | |
ProjectGeography | Text(50) | |
ProjectStatus | Text(50) | |
CurrencyCode | Text(50) | |
ProjectStartDate | Date | |
ProjectEndDate | Date | |
AfePurchaseOrderNumber | Text(100) | |
Active | Bool | |
ModifiedOn | DateTime | |
CreatedOn | DateTime |
Sample Detail Response
{
“Id”: 123,
“CompanyCode”: “COMPANY_CODE”,
“DivisionCode”: “DIVISION_CODE”,
“ProjectCode”: “PROJECT_CODE”,
“ProjectName”: “PROJECT_NAME”,
“ProjectManagerName”: “PROJECT_MANAGER_NAME”,
“SupervisorName”: “SUPERVISOR_NAME”,
“Location”: “LOCATION”,
“CustomerCode”: “CUSTOMER_CODE”,
“CustomerName”: “CUSTOMER_NAME”,
“ProjectBillingType”: “Cost”,
“BusinessDimensionCode”: null,
“BusinessDimensionName”: null,
“ProjectType”: null,
“ProjectSpendingType”: null,
“ProjectGeography”: null,
“ProjectStatus”: “InProgress”,
“CurrencyCode”: “CAD”,
“ProjectStartDate”: “2017-08-24”,
“ProjectEndDate”: “2025-09-22”,
“AfePurchaseOrderNumber”: null,
“Active”: true,
“ModifiedOn”: “2020-02-25T17:52:31”,
“CreatedOn”: “2017-08-24T16:32:53” }
13. Timesheet Entry
Information | Detail |
Detail | |
List | |
Create |
Query Fields | Type | Comments |
Id | Integer | |
EntryType | Text(50) | |
OriginOfEntry | Text(50) | |
ProjectName | Text(255) | |
ProjectCode | Text(50) | |
ProjectManagerName | Text(350) | |
ProjectGeography | Text(50) | |
CustomerName | Text(60) | |
CustomerCode | Text(50) | |
WorkpackageWbs | Text(50) | |
WorkpackageName | Text(120) | |
WorkpackageCostCode | Text(120) | |
WorkpackagePhaseName | Text(120) | |
WorkpackagePhaseCostCode | Text(120) | |
ResourceName | Text(350) | |
ResourceCostCode | Text(50) | |
ResourceTagNumber | Text(40) | |
ResourceType | Text(50) | |
LaborName | Text(350) | |
LaborIsContractor | Bool | |
LaborEmployeeId | Text(40) | |
LaborUnionId | Text(50) | |
LaborUnionLocal | Text(50) | |
LaborUnionClass | Text(50) | |
LaborDepartmentName | Text(100) | |
ResourceClassName | Text(350) | |
ResourceClassCostCode | Text(50) | |
ResourceClassCategoryName | Text(50) | |
ResourceClassCategoryCostCode | Text(50) | |
JobsiteNumber | Text(100) | |
SiteForemanName | Text(350) | |
ExpenseDescription | Text(400) | |
WorkDate | Date | |
RateTypeName | Text(40) | |
RateTypeCode | Text(10) | |
Quantity | Decimal | |
Approved | Bool | |
Submitted | Bool | |
AccountingCode | Text(MAX) | |
ModifiedOn | DateTime | |
CreatedOn | DateTime | |
CostCodes | CostCode | |
CostCode.Name | Text(50) | |
CostCode.Value | Text(120) | |
AccountingCodes | AccountingCode | |
AccountingCode.Name | Text(50) | |
AccountingCode.Value | Text(100) | |
Transactions | TimesheetTransaction | |
Transaction.Id | Integer | |
Transaction.TransactionType | Text(50) | |
Transaction.RateTypeName | Text(40) | |
Transaction.RateTypeCode | Text(10) | |
Transaction.Quantity | Decimal | |
Transaction.Rate | Decimal | |
Transaction.Total | Decimal | |
Transaction.ExportReferenceNumber | Text(50) | |
Transaction.Exported | Bool | |
Transaction.ModifiedOn | DateTime | |
Transaction.CreatedOn | DateTime |
Create Fields | Type | Comments |
ProjectCode | Text(50) | Required |
WorkpackageWbs | Text(50) | Required |
ResourceType | Text(50) | Required (Labor, Equipment, Material, LaborExpense) |
ResourceName | Text(350) | Required |
ResourceCostCode | Text(50) | |
ResourceTagNumber | Text(40) | |
ResourceClassName | Text(350) | Required |
ResourceClassCostCode | Text(50) | |
ExpenseLaborName | Text(350) | Required For ResourceType = LaborExpense |
ExpenseLaborCostCode | Text(50) | |
ExpenseLaborEmployeeId | Text(40) | |
ExpenseDescription | Text(400) | |
ExpenseCost | Decimal | When ResourceType = LaborExpense |
WorkDate | Date | Required |
RateTypeName | Text(40) | Required |
Quantity | Decimal | |
InternalComments | Text(1000) | |
ExternalComments | Text(1000) |
Sample Create Request
[
{
“ResourceType”: “Labor”,
“ProjectCode”: “PROJECT_ABC”,
“WorkpackageWbs”: “1.3.5”,
“ResourceName”: “John Doe”,
“ResourceCostCode”: “GLB01”,
“ResourceTagNumber”: “1234”,
“ResourceClassName”: “Electrical Tradesman”,
“WorkDate”: “2020-01-15”,
“RateTypeName”: “Regular Hour”,
“Quantity”: 8
},
{
“ResourceType”: “Equipment”,
“ProjectCode”: “PROJECT_ABC”,
“WorkpackageWbs”: “1.3.6”,
“ResourceName”: “Generic Fire Alarm Equipment”,
“ResourceCostCode”: “”,
“ResourceTagNumber”: “”,
“ResourceClassName”: “CABLE INSTALLATION EQUIPMENT”,
“WorkDate”: “2020-01-15”,
“RateTypeName”: “Lot”,
“Quantity”: 15.2
},
{
“ResourceType”: “Material”,
“ProjectCode”: “PROJECT_ABC”,
“WorkpackageWbs”: “1.3.1”,
“ResourceName”: “CABLE – INSTRUMENT, CONTROL, DATA & F/O”,
“ResourceCostCode”: “”,
“ResourceTagNumber”: “”,
“ResourceClassName”: “CABLE – INSTRUMENT, CONTROL, DATA & F/O”,
“WorkDate”: “2020-01-15”,
“RateTypeName”: “Unit”,
“Quantity”: 12345
},
{
“ResourceType”: “LaborExpense”,
“ProjectCode”: “1.302060080”, “WorkpackageWbs”: “1.1.4”, “ResourceName”: “Driving”,
“ResourceCostCode”: “”,
“ResourceTagNumber”: “”,
“ResourceClassName”: “Driving”,
“ExpenseLaborName”: “John Doe”,
“ExpenseLaborEmployeeId”: “1234”,
“ExpenseDescription”: “ABCDEF”,
“WorkDate”: “2020-01-15”,
“RateTypeName”: “Kilometer”,
“ExpenseCost”: 123,
“Quantity”: 5
}
]
14. Timesheet Transaction Export Document
Information | Detail |
Detail | GET https://base/api/timesheetTransactionExportDocuments(documentId) |
List | |
Create |
Field | Type | Comments |
Id | Integer | |
DocumentNumber | Text(100) | |
ExportReferenceNumber | Text(50) | |
TimesheetTransactions | TimesheetTransaction | |
TimesheetTransaction.Id | Integer | Required for Create |
TimesheetTransaction.TransactionType | Text(50) | |
TimesheetTransaction.EntryType | Text(50) | |
TimesheetTransaction.OriginOfEntry | Text(50) | |
TimesheetTransaction.ProjectName | Text(255) | |
TimesheetTransaction.ProjectCode | Text(50) | |
TimesheetTransaction.ProjectManagerName | Text(350) | |
TimesheetTransaction.ProjectGeography | Text(50) | |
TimesheetTransaction.CustomerName | Text(60) | |
TimesheetTransaction.CustomerCode | Text(50) | |
TimesheetTransaction.WorkpackageName | Text(120) | |
TimesheetTransaction.WorkpackageCostCode | Text(120) | |
TimesheetTransaction.WorkpackagePhaseName | Text(120) | |
TimesheetTransaction.WorkpackagePhaseCostCode | Text(120) | |
TimesheetTransaction.WorkpackageAreaName | Text(120) | |
TimesheetTransaction.WorkpackageAreaCostCode | Text(120) | |
TimesheetTransaction.ResourceName | Text(350) | |
TimesheetTransaction.ResourceType | Text(50) | |
TimesheetTransaction.LaborFirstName | Text(300) | |
TimesheetTransaction.LaborLastName | Text(50) | |
TimesheetTransaction.LaborIsContractor | Bool | |
TimesheetTransaction.LaborEmployeeId | Text(40) | |
TimesheetTransaction.LaborUnionId | Text(50) | |
TimesheetTransaction.LaborUnionLocal | Text(50) | |
TimesheetTransaction.LaborUnionClass | Text(50) | |
TimesheetTransaction.LaborDepartmentName | Text(100) | |
TimesheetTransaction.ResourceClassName | Text(350) | |
TimesheetTransaction.ResourceClassCostCode | Text(50) | |
TimesheetTransaction.ResourceClassCategoryName | Text(50) | |
TimesheetTransaction.ResourceClassCategoryCostCode | Text(50) | |
TimesheetTransaction.JobsiteNumber | Text(100) | |
TimesheetTransaction.SiteForemanName | Text(350) | |
TimesheetTransaction.WorkDate | Date | yyyy-MM-dd |
TimesheetTransaction.RateTypeName | Text(40) | |
TimesheetTransaction.RateTypeCode | Text(10) | |
TimesheetTransaction.Quantity | Decimal | |
TimesheetTransaction.Rate | Decimal | |
TimesheetTransaction.Total | Decimal | |
TimesheetTransaction.ExportReferenceNumber | Text(50) | Optional for Create |
TimesheetTransaction.AccountingCode | Text(MAX) | |
AccountingCodes | AccountingCode | |
AccountingCode.Name | Text(50) | |
AccountingCode.Value | Text(100) |
Sample Create Request
{
“ExportReferenceNumber”: “ABC”,
“TimesheetTransactions”: [
{
“Id”: 1,
“ExportReferenceNumber”: “DEF”
},
{
“Id”: 2,
“ExportReferenceNumber”: “DEF2”
},
{
“Id”: 3,
“ExportReferenceNumber”: “DEF3”
},
{
“Id”: 4
},
{
“Id”: 5,
“ExportReferenceNumber”: “DEF5”
}
]
}
15. Vendor Invoice
Information | Detail |
Detail | |
List | |
For the List Operation a filter can be supplied for ModifiedOn,CreatedOn,Approved,VendorCode,Properties(“PropertyCode”) vendorInvoices?$filter=CreatedOn gt yyyy-MM-ddTHH:mm:ss vendorInvoices?$filter=CreatedOn gt 2019-10-27T12:44:45 DateTimes are always in UTC |
Field | Type | Comments |
Id | Integer | |
VendorInvoiceType | Text(50) | |
VendorCode | Text(50) | |
ProjectCode | Text(50) | |
ProjectTypeName | Text(50) | |
InvoiceNumber | Text(255) | |
ExportDocumentDate | Date | |
ExportReferenceNumber | Text(50) | |
InvoiceDescription | Text(512) | |
CurrencyCode | Text(50) | |
InvoiceDate | Date | “YYYY-MM-DD” |
PaymentDueDate | Date | “YYYY-MM-DD” |
PaymentTermsCode | Text(50) | |
TotalInvoiceAmount | Decimal | |
Exported | Bool | |
Approved | Bool | |
ApprovedOn | DateTime | |
ModifiedOn | DateTime | |
CreatedOn | DateTime | |
Properties | VendorInvoice.Propert | |
Property.PropertyName | Text(50) | |
Property.PropertyValue | Text(800) | |
Lines | VendorInvoiceLine | |
VendorInvoiceLine.Id | Text(50) | |
VendorInvoiceLine.ProjectCode | Text(50) | |
VendorInvoiceLine.WorkpackageBillingType | Text(50) | |
VendorInvoiceLine.ResourceType | Text(50) | |
VendorInvoiceLine.EmployeeId | Text(40) | |
VendorInvoiceLine.CustomerCode | Text(50) | |
VendorInvoiceLine.AttestedQuantity | Decimal | |
VendorInvoiceLine.AttestedCost | Decimal | DEPRECATED => VendorInvoiceLine.VendorInvoiceAmount |
VendorInvoiceLine.VendorInvoiceAmount | Decimal | |
VendorInvoiceLine.ResourceClassCostCode | Text(50) | |
VendorInvoiceLine.ExpenseDescription | Text | |
VendorInvoiceLine.PurchaseOrderItemDescription | Text(350) | |
VendorInvoiceLine.PurchaseOrderVendorItemDescription | Text(350) | |
VendorInvoiceLine.AdvancePaymentCost | Decimal | DEPRECATED |
VendorInvoiceLine.RetainageCost | Decimal | |
VendorInvoiceLine.AccountingCode | Text(MAX) | DEPRECATED => ResourceAccountingCode |
VendorInvoiceLine.AccountingCodes | AccountingCode | DEPRECATED => ResourceAccountingCodes |
AccountingCode.Name | Text(50) | DEPRECATED => ResourceAccountingCodes |
AccountingCode.Value | Text(100) | DEPRECATED => ResourceAccountingCodes |
VendorInvoiceLine.DivisionName | Text(256) | |
VendorInvoiceLine.DivisionCode | Text(50) | |
VendorInvoiceLine.ResourceAccountingCode | Text(MAX) | |
VendorInvoiceLine.ResourceAccountingCodes | AccountingCode | |
AccountingCode.Name | Text(50) | |
AccountingCode.Value | Text(100) | |
VendorInvoiceLine.RetainageAccountingCode | Text(MAX) | |
VendorInvoiceLine.RetainageAccountingCodes | AccountingCode | |
AccountingCode.Name | Text(50) | |
AccountingCode.Value | Text(100) | |
VendorInvoiceLine.PurchaseOrder | PurchaseOrderReferen | |
PurchaseOrderReference.PurchaseOrderId | Integer | |
PurchaseOrderReference.PurchaseOrderNumber | Text(90) | |
VendorInvoiceLine.TaxCost | Decimal | |
VendorInvoiceLine.Taxes | VendorInvoiceLineTax | |
VendorInvoiceLineTax.TaxName | Text(50) | |
VendorInvoiceLineTax.TaxPercent | Decimal | |
VendorInvoiceLineTax.TaxCost | Decimal | |
VendorInvoiceLineTax.AccountingCode | Text(100) |
Sample Detail Response
{
“Id”: 9,
“VendorCode”: “VENDOR_CODE”,
“ProjectCode”: “PROJECT_CODE”,
“InvoiceNumber”: “INVOICE NUMBER 123456”,
“ExportReferenceNumber”: null,
“InvoiceDescription”: “”,
“CurrencyCode”: “USD”,
“InvoiceDate”: “2017-11-06”,
“TotalInvoiceAmount”: 16330.2613,
“Exported”: false,
“Approved”: false,
“Lines”: [
{
“Id”: “247.2.9”,
“AttestedQuantity”: 0.7514,
“AttestedCost”: 7712.4733,
“PurchaseOrder”: {
“PurchaseOrderId”: 5,
“links”: {
“self”: {
“href”: “/api/purchaseOrders(5)”
}
}
}
},
{
“Id”: “248.2.9”,
“AttestedQuantity”: 0.7982,
“AttestedCost”: 8617.7880,
“PurchaseOrder”: {
“PurchaseOrderId”: 5,
“links”: {
“self”: {
“href”: “/api/purchaseOrders(5)”
}
}
}
}
] }
16. Vendor Invoice Payment
Information | Detail |
Detail | |
List | |
Create | |
Update | |
Delete |
Field | Type | Comments |
PaymentId | Integer | Required |
PaymentType | Text(50) | VendorInvoice, AdvancePayment, |
PaymentNumber | Text(250) | |
PaymentDate | Date | “YYYY-MM-DD” |
PaymentTotal | Decimal | |
Submitted | Bool | |
Notes | Text(1000) | |
Items | PaymentItem | |
PaymentItem.PaymentItemId | Integer | |
PaymentItem.VendorInvoiceId | Integer | Required |
PaymentItem.VendorInvoiceExportReferenceNumber | Text(50) | |
PaymentItem.VendorInvoiceNumber | Text(50) | |
PaymentItem.PaymentAmount | Decimal | Required |
Sample Detail Response
{
“PaymentId”: 45,
“PaymentType”: “VendorInvoice”,
“PaymentNumber”: “123”,
“PaymentDate”: “2018-01-31”,
“PaymentTotal”: 2200.0000,
“Submitted”: true,
“Notes”: “”,
“Items”: [
{
“PaymentItemId”: 72,
“VendorInvoiceId”: 51,
“VendorInvoiceNumber”: “1072”,
“PaymentAmount”: 2200.0000
}
]
}
Sample Create Request
{
“PaymentType”: “VendorInvoice”,
“PaymentDate”: “2018-01-31”,
“PaymentTotal”: 147.7136,
“Submitted”: true,
“Notes”: “”,
“Items”: [
{
“VendorInvoiceId”: 6871,
“PaymentAmount”: 147.7136
}
]
}
Sample Update Request
{
“PaymentDate”: “2019-09-30” }
17. Vendor Invoice Export Document
Information | Detail |
Detail | GET https://base/api/vendorInvoiceExportDocuments(documentId) |
List | |
Create |
Field | Type | Comments |
Id | Integer | |
DocumentDate | Date | |
DocumentNumber | Text(100) | |
ExportReferenceNumber | Text(50) | |
Invoices | DocumentInvoice | |
DocumentInvoice.Id | Integer | Required |
DocumentInvoice.VendorCode | Text(50) | |
DocumentInvoice.ProjectCode | Text(50) | |
DocumentInvoice.InvoiceNumber | Text(255) | |
DocumentInvoice.ExportReferenceNumber | Text(50) |
Sample Create Request
{
“ExportReferenceNumber”: “ABC”,
“Invoices”: [
{
“Id”: 1,
“ExportReferenceNumber”: “DEF”
},
{
“Id”: 2,
“ExportReferenceNumber”: “DEF2”
},
{
“Id”: 3,
“ExportReferenceNumber”: “DEF3”
},
{
“Id”: 4
},
{
“Id”: 5,
“ExportReferenceNumber”: “DEF5”
}
]
}
18. Purchase Order
Information | Detail |
Detail (All Revisions) | |
Detail (For Revision) | GET https://base/api/purchaseOrders(purchaseOrderId.revisionNumber) |
List | |
Field | Type | Comments |
Id | Integer | |
VendorCode | Text(50) | |
CustomerCode | Text(50) | |
ProjectCode | Text(50) | |
CurrencyCode | Text(50) | |
PurchaseOrderNumber | Text(90) | |
PurchaseOrderDate | Date | “YYYY-MM-DD” |
Revisions | PurchaseOrderRevision | |
PurchaseOrderRevision.RevisionNumber | Integer | |
PurchaseOrderRevision.RevisionDate | Date | “YYYY-MM-DD” |
PurchaseOrderRevision.TotalCost | Decimal | |
PurchaseOrderRevision.AdvancePaymentPercent | Decimal | |
PurchaseOrderRevision.AdvancePaymentAmount | Decimal | |
PurchaseOrderRevision.Taxes | TaxReference | |
TaxReference.Id | Integer | |
TaxReference.TaxName | Text(50) | |
TaxReference.TaxCode | Text(50) | |
TaxReference.TaxRate | Decimal | |
PurchaseOrderRevision.Details | PurchaseOrderRevisionDetail | |
PurchaseOrderRevisionDetail.LineNumber | Integer | |
PurchaseOrderRevisionDetail.ResourceName | Text(350) | |
PurchaseOrderRevisionDetail.ResourceCode | Text(50) | |
PurchaseOrderRevisionDetail.ItemDescription | Text(350) | |
PurchaseOrderRevisionDetail.ResourceClassName | Text(350) | |
PurchaseOrderRevisionDetail.ResourceClassCategoryName | Text(50) | |
PurchaseOrderRevisionDetail.CostCode | Text(350) | |
PurchaseOrderRevisionDetail.AccountingCode | Text(150) | |
PurchaseOrderRevisionDetail.Quantity | Decimal | |
PurchaseOrderRevisionDetail.TotalCost | Decimal |
Sample Detail Response
{
“PurchaseOrderId”: 133,
“VendorCode”: “VENDOR_CODE”,
“CustomerCode”: “CUSTOMER_CODE”,
“ProjectCode”: “PROJECT_CODE”,
“CurrencyCode”: “USD”,
“PurchaseOrderNumber”: “136”,
“PurchaseOrderDate”: “2018-04-13”,
“Revisions”: [
{
“RevisionNumber”: 0,
“RevisionDate”: “2018-04-13”,
“Taxes”: [
{
“Id”: 1,
“TaxName”: “GST”,
“TaxCode”: “GST”,
“TaxRate”: 0.05000
}
]
}
] }
19. Purchase Order Receipt
Information | Detail |
Detail | GET https://base/api/purchaseOrderReceipts(purchaseOrderReceiptId) |
List | |
For the List Operation a filter can be supplied for $filter=Submitted eq True $filter=Exported eq True |
Field | Type | Comments |
Id | Integer | |
ProjectID | Integer | |
ProjectCode | Text(50) | |
ReceiptNumber | Text(255) | |
ReceiptDate | Date | “YYYY-MM-DD” |
VendorCode | Text(100) | |
VendorName | Text(100) | |
Submitted | Bool | |
SubmittedOn | DateTime | “YYYY-MM-ddTHH:mm:ss” |
Exported | Bool | |
ExportedOn | DateTime | “YYYY-MM-ddTHH:mm:ss” |
Items | PurchaseOrderReceiptItem | |
Item.LineNumber | Integer | |
Item.PurchaseOrderNumber | Text(90) | |
Item.ResourceCode | Text(50) | |
Item.ResourceName | Text(350) | |
Item.ItemDescription | Text(350) | |
Item.ResourceClassName | Text(350) | |
Item.ResourceClassCategoryName | Text(50) | |
Item.CostCode | Text(350) | |
Item.AccountingCode | Text (150) | |
Item.Quantity | Decimal | |
Item.TotalCost | Decimal | |
Item.Holdback | Bool | |
Item.HoldbackAmount | Decimal | |
Item.HoldbackPercent | Decimal | |
Item.CustomFields | CustomField | |
CustomField.FieldCode | Text(50) | PurchaseOrderRevision.RevisionDate |
CustomField.FieldName | Text(50) | |
CustomField.FieldValue | Text(800) | |
Sample Detail Response
{
“Id”: 1621,
“ReceiptNumber”: “Receipt 3.28”,
“ReceiptDate”: “2021-11-18”,
“Submitted”: null,
“SubmittedOn”: null,
“Exported”: null,
“ExportedOn”: null,
“Items”: [
{
“LineNUmber”: 1,
“PurchaseOrderNumber”: “PO 3.28 with Closed Lines”,
“ResourceCode”: null,
“ResourceName”: “001 Service Resource Bilable ( No AC Override)”,
“Quantity”: 0.0,
“AmountReceived”: 0.0,
“CustomFields”: []
},
{
“LineNUmber”: 2,
“PurchaseOrderNumber”: “PO 3.28 with Closed Lines”,
“ResourceCode”: null,
“ResourceName”: “001 Service Resource Bilable ( No AC Override)”,
“Quantity”: 10.00000,
“AmountReceived”: 2000.0000,
“CustomFields”: [
{
“FieldCode”: “”,
“FieldName”: “98 Text Portal (E)”,
“FieldValue”: “ABC”
}
]
}
]
}
20. JSON Types
Information | Detail |
Bool | true or false |
Date | yyyy-MM-dd |
DateTime | yyyy-MM-ddTHH:mm:ss |
Platform
Solutions
Owners
Contractors
Engineering/EPCM
Professional Services
Resources
White Papers
Case Studies
Blog
Videos
Frequently Asked Questions
Company
About