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 |
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
}