Projects
A Project is linked to a Customer. It has its life cycle (aka workflow) and can be assigned a set of Documents and linked to some Events. The actual prices of a Project are those of its current active Sales Document.
Project methods
Search
Returns a list of all Projects matching some specified search criteria.
Method
| GET | /api/externals/v1/projects |
|---|
Arguments
- winLangID (long): Windows Language Identifier of the resulting data
- storeID (long): ID of the Store owning the searched Projects
- contactID (long): ID of the Contact owning the searched Projects
- contactInternalCode (string): Internal code of the Contact owning the searched Projects
- internalCode (string): Internal code of the searched Projects
- code (string): Code of the searched Projects
- shortCode (string): Short code (6 digits) of the searched Projects
- keyword (string): Searched keyword
- minDate (datetime): Minimum date of the searched Projects
- maxDate (datetime): Maximum date of the searched Projects
- dateKind (string): Type of date used by the minDate and/or maxDate arguments. Allowed values: "CreationDate", "LastModificationDate"
- idsOnly (boolean, true): If true, returns only a set of Project IDs
- detailedView (boolean, false): If true, returns additional information about the matching Projects (e.g.
"afterSalesServiceProjects","consumerProjects","clonedProject","statistics","attachments")
Body
(none)
Response
The search service returns a JSON message with the list of items matching the specified search criteria:
{
"projects": [
{
"id": long,
"storeID": long,
"contactID": long,
"internalCode": string,
"sellerUserID": long,
"code": string,
"shortCode": string,
"description": string,
"date": datetime,
"deliveryDate": datetime,
"reference": string,
"status": string, // (See "Project status possible values" below)
"notes": string,
"afterSalesServiceProjects": [ // List of eventual After sales service sub-projects
{
"id": long,
"storeID": long,
"internalCode": string
}
],
"parentProject": { // Eventual Parent project (for After sales services projects only)
"id": long,
"storeID": long,
"internalCode": string
},
"consumerProjects": [ // List of eventual Consumer sub-projects (for Promoter projects only)
{
"id": long,
"storeID": long,
"internalCode": string
}
],
"promoterProject": { // Eventual Parent Promoter project
"id": long,
"storeID": long,
"internalCode": string
},
"clonedProject": { // Eventual clone project (for Web projects only)
"id": long,
"storeID": long,
"internalCode": string
},
"originalProject": { // Eventual Web model project (for cloned projects only)
"id": long,
"storeID": long,
"internalCode": string
},
"statistics": {
"workflowLastStatusID": long,
"workflowLastStatusDescription": string,
"workflowLastStatusCreationDate": datetime,
"workflowLastCommercialStatusID": long,
"workflowLastCommercialStatusDescription": string,
"workflowLastCommercialStatusCreationDate": datetime,
"totalPrice": double,
"totalPriceIT": double,
"totalDueIT": double, // ONLY present on “projects/{projectID}”
"totalPaidIT": double, // ONLY present on “projects/{projectID}”
"currencyCode": string,
"lastDocumentTypeID": long,
"lastDocumentID": long,
"lastDocumentCreationDate": datetime,
"lastDocumentModificationDate": datetime
},
"attachments": [
{
"id": long,
"url": string,
"description": string,
"fileTypeID": int,
"fileAssociateTypeID": int,
"isAttachedToLastDocument": bool, // Indicates whether the File is directly attached to the Project itself or to its Last Document
"creationDate": datetime
}
],
"creationDate": datetime,
"modificationDate": datetime,
"isExhibition": bool,
"isTest": bool
}
],
"winLangID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Project status possible values
The project "status" field can take several values:
| Status | Description |
|---|---|
| "" | Active / In progress |
| "A" | Cancelled |
| "B" | Blocked |
| "C" | Closed |
| "W" | Pending |
| "Z" | Archived |
| "M" | Archived for 2 years |
When a project has been archived for 2 years (standard setting), its documents are not directly accessible. Therefore, information related to the documents ("statistics") will not be included in the response. To access these documents, you must unarchive the project from the project details page by clicking the "Change Project Status" button. (cf. Project Status)
Details
Returns the details of the Project which projectID is provided in the URL.
Method
| GET | /api/externals/v1/projects/{projectID} |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project to be returned
- winLangID (long): Windows Language Identifier of the resulting data
- detailedView (boolean, false): If true, returns additional information about the matching Project (e.g.
"afterSalesServiceProjects","consumerProjects","clonedProject","statistics","attachments")
Body
(none)
Response
Same format as the one returned by the « Project search » method.
Create
Creates a new Project with the specified information.
Method
| POST | /api/externals/v1/projects |
|---|
Arguments
(none)
Body
{
"storeID": long, // ID of the Store owning the Project to be created
"contactID": long, // ID of the Contact owning the Project to be created
"internalCode": string,
"sellerUserID": long, // ID of the User that is the seller of the new Project
"description": string, // Name of the project
"date": datetime,
"deliveryDate": datetime,
"reference": string, // Not currently used by the interface
"notes": string // Only used for Web-driven projects or Promoter projects.
}
Response
{
"projectID": long, // When successful, the created projectID
"success": boolean,
"message": string,
"rowCount": long
}
Update
Updates the Project which projectID is provided in the URL with the specified information.
Method
| PUT | /api/externals/v1/projects/{projectID} |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project to be updated
Body
{
"internalCode": string,
"sellerUserID": long,
"description": string,
"date": datetime,
"deliveryDate": datetime,
"reference": string,
"notes": string
}
Response
{
"projectID": long, // When successful, the updated projectID
"success": boolean,
"message": string,
"rowCount": long
}
Clone
Clones the specified WEB project to another given store.
Method
| PUT | /api/externals/v1/projects/{projectID}/cloneToStore |
|---|
Arguments
- projectID (long): ID of the WEB Project to be cloned
- storeID (long): ID of the destination Store for the cloned Project
Body
(none)
Response
{
"success": boolean,
"message": string,
"rowCount": long,
"projectID": long // When successful, the created projectID
}
Cancel
Asks for the cancellation of the Project which projectID is provided in the URL.
Method
| DELETE | /api/externals/v1/projects/{projectID} |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project to be cancelled
Body
{
"cancellationNotes": string, // Comment about the project cancellation
"cancellationReasonID": string // ID of the cancellation reason (cf. “Project cancellation reasons” for available values)
}
Response
{
"projectID": long, // When successful, the cancelled projectID
"success": boolean,
"message": string,
"rowCount": long
}
Cancellation reasons
Returns the list of available Reasons why a Project could be cancelled.
Method
| GET | /api/externals/v1/projects/{cancellationReasons} |
|---|
Arguments
- winLangID (long): Windows Language Identifier of the resulting data
Body
(none)
Response
{
"cancellationReasons": [
{
"id": long, // ID of the Cancellation reason
"description": string
}
],
"winLangID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Projects additional methods
Attachment creation
Adds an attachment to a project which projectID is provided in the URL.
Method
| POST | /api/externals/v1/projects/{projectID}/attachments |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the attachement to be added
- attachmentName (string): Name of the attachment to be added with the extension
Body
The attachment file directly passed as an array of bytes.
Response
{
"projectID": long,
"attachID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Attachment deletion
Removes the attachment which attachmentID is provided in the URL from the project which projectID is provided in the URL.
Method
| DELETE | /api/externals/v1/projects/{projectID}/attachements/{attachmentID} |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the attachement to be removed
- attachmentID (long): (provided in the path): ID of the attachment to be removed
Body
(none)
Response
{
"projectID": long,
"attachID": long,
"attachPath": string,
"canRemoveFromDisk": boolean,
"success": boolean,
"message": string,
"rowCount": long
}
Comment creation
Adds an comment to a project which projectID is provided in the URL.
Method
| POST | /api/externals/v1/projects/{projectID}/comment |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the attachement to be added
- comment (string): The comment to be added to the project
Body
(none)
Response
{
"projectID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Documents
Returns a list of all Documents owned by the Project which projectID is provided in the URL and matching some specified search criteria.
Method
| GET | /api/externals/v1/projects/{projectID}/documents |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the searched Documents
- winLangID (long): Windows Language Identifier of the resulting data
- documentTypeID (long): ID of the Document type of the searched Documents
- internalCode (string): Internal code of the searched Documents
- keyword (string): Searched keyword
- minDate (datetime): Minimum date of the searched Documents
- maxDate (datetime): Maximum date of the searched Documents
- dateKind (string): Type of date used by the minDate and/or maxDate arguments. Allowed values: "CreationDate", "LastModificationDate"
- idsOnly (boolean, true): If true, returns only a set of Document IDs
- detailedView (boolean, false): If true, returns additional information about the matching Documents (e.g.
"documentLines","styles","payments","attachments")
Body
(none)
Response
Same format as the one returned by the « Document search » method.
Events
Returns a list of all Events owned by the Project which projectID is provided in the URL and matching some specified search criteria.
Method
| GET | /api/externals/v1/projects/{projectID}/events |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the searched Events
- winLangID (long): Windows Language Identifier of the resulting data
- eventTypeActionKind (int): Kind of the Event Type of the searched Events
- keyword (string): Searched keyword
- minDate (datetime): Minimum date of the searched Events
- maxDate (datetime): Maximum date of the searched Events
- dateKind (string): Type of date used by the minDate and/or maxDate arguments. Allowed values: "CreationDate", "LastModificationDate"
- idsOnly (boolean, true): If true, returns only a set of Event IDs
- detailedView (boolean, false): If true, returns additional information about the matching Events
Body
(none)
Response
Same format as the one returned by the « Event search » method.
Survey update
Updates the External Survey of the project which ID is specified.
Method
| PUT | /api/externals/v1/projects/{projectID}/survey |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project owning the searched Events
Body
{
"survey": string
}
Response
{
"success": boolean,
"message": string,
"rowCount": long
}
Project workflow methods
Workflow history
Returns the full Workflow history for the specified Project, including eventually cancelled transitions.
Method
| GET | /api/externals/v1/projects/{projectID}/workflow |
|---|
Arguments
- projectID (long): (provided in the path): ID of the concerned Project
- winLangID (long): Windows Language Identifier of the resulting data
Body
(none)
Response
The service returns a JSON message with the list of all workflow transitions passed by the specified project. The current/active workflow status can be found by searching for the only item with the "isTheCurrentStatus" tag set to true:
{
"projectID": long,
"workflowTransitions": [
{
"id": long, // ID of the Workflow transition
"description": string,
"sequence": long, // Transition sequence number
"statusID": long,
"statusDescription": string,
"commercialStatusID": long,
"commercialStatusDescription": string,
"statusSequenceID": long,
"isTheCurrentStatus": bool, // True only for the Active/Current Workflow status
"creationDate": datetime,
"isCancelled": bool, // True only if the transition was cancelled
"cancellationDate": datetime // Only if the transition was cancelled
}
],
"winLangID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Workflow next transitions
Returns the list of available Workflow transitions that can be executed for the specified Project, assuming its current Workflow status.
Method
| GET | /api/externals/v1/projects/{projectID}/workflow/nextTransitions |
|---|
Arguments
- projectID (long): (provided in the path): ID of the concerned Project
- winLangID (long): Windows Language Identifier of the resulting data
Body
(none)
Response
The service returns a JSON message with the list of items matching the specified search criteria:
{
"projectID": long,
"workflowTransitions": [
{
"id": long, // ID of the Workflow transition
"description": string,
"statusID": long, // ID of the related destination Workflow status
"statusDescription": string,
"commercialStatusID": long,
"commercialStatusDescription": string,
"statusSequenceID": long
}
],
"winLangID": long,
"success": boolean,
"message": string,
"rowCount": long
}
Workflow transition execution
Tries to execute the specified Workflow transition for the given Project. May fail if the current Workflow status of the project doesn't allow this transition.
Method
| PUT | /api/externals/v1/projects/{projectID}/workflow/{workflowTransitionID} |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project to be updated
- workflowTransitionID (long): (provided in the path): ID of the Workflow transition to be executed on the Project
- winLangID (long): Windows Language Identifier of the resulting data
Body
(none)
Response
{
"winLangID": long,
"success": boolean,
"message": string,
"rowCount": long,
"projectID": long,
"workflowTransitionID": long
}
Workflow status cancellation
Cancels (when possible) the current Workflow status of the specified Project.
Method
| DELETE | /api/externals/v1/projects/{projectID}/workflow |
|---|
Arguments
- projectID (long): (provided in the path): ID of the Project which Workflow status is to be cancelled
Body
(none)
Response
{
"success": boolean,
"message": string,
"rowCount": long,
"projectID": long
}