Milestones
Track deliverables and schedule markers on projects and smart-files.
A milestone is a dated deliverable or schedule marker. Every milestone attaches to one parent, identified by two fields you set together:
What a Milestone Attaches To
parentType— eitherprojectsorclient-documents.parentId— the ID of that parent record.
Both are required when you create a milestone.
- Use
projectsto mark deliverables and schedule points on a project — the work you're doing for a client. - Use
client-documentsto attach a milestone to a smart-file (a proposal or agreement). This is what lets a quote schedule its work: when a client accepts an agreement, its milestones become the project's milestones.
To list the milestones on one parent, filter with both parentType and parentId (for example, parentType=projects&parentId=...).
In: header
Query Parameters
11 <= value251 <= value <= 100"projects" | "client-documents"UUID v4
uuid"pending" | "in-progress" | "completed"Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.clientcasa.com/api/v1/milestones"{
"data": [
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"parentType": "projects",
"parentId": "550e8400-e29b-41d4-a716-446655440000",
"title": "string",
"description": "string",
"date": "2019-08-24",
"time": "string",
"status": "pending",
"completedAt": "2019-08-24T14:15:22Z",
"assigneeId": "550e8400-e29b-41d4-a716-446655440000",
"catalogItemId": "550e8400-e29b-41d4-a716-446655440000",
"sortOrder": 0,
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}
],
"pagination": {
"page": 1,
"pageSize": 1,
"total": 0,
"totalPages": 0,
"hasMore": true
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}In: header
Header Parameters
Optional unique key that makes this create safely retryable. Replaying the same key returns the original response instead of creating a duplicate; reusing a key with a different request body returns 409.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://www.clientcasa.com/api/v1/milestones" \ -H "Content-Type: application/json" \ -d '{ "parentType": "projects", "parentId": "550e8400-e29b-41d4-a716-446655440000", "title": "string", "date": "2019-08-24" }'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"parentType": "projects",
"parentId": "550e8400-e29b-41d4-a716-446655440000",
"title": "string",
"description": "string",
"date": "2019-08-24",
"time": "string",
"status": "pending",
"completedAt": "2019-08-24T14:15:22Z",
"assigneeId": "550e8400-e29b-41d4-a716-446655440000",
"catalogItemId": "550e8400-e29b-41d4-a716-446655440000",
"sortOrder": 0,
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}In: header
Path Parameters
UUID v4
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://www.clientcasa.com/api/v1/milestones/550e8400-e29b-41d4-a716-446655440000"{
"id": "550e8400-e29b-41d4-a716-446655440000",
"parentType": "projects",
"parentId": "550e8400-e29b-41d4-a716-446655440000",
"title": "string",
"description": "string",
"date": "2019-08-24",
"time": "string",
"status": "pending",
"completedAt": "2019-08-24T14:15:22Z",
"assigneeId": "550e8400-e29b-41d4-a716-446655440000",
"catalogItemId": "550e8400-e29b-41d4-a716-446655440000",
"sortOrder": 0,
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}In: header
Path Parameters
UUID v4
uuidRequest Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X PATCH "https://www.clientcasa.com/api/v1/milestones/550e8400-e29b-41d4-a716-446655440000" \ -H "Content-Type: application/json" \ -d '{}'{
"id": "550e8400-e29b-41d4-a716-446655440000",
"parentType": "projects",
"parentId": "550e8400-e29b-41d4-a716-446655440000",
"title": "string",
"description": "string",
"date": "2019-08-24",
"time": "string",
"status": "pending",
"completedAt": "2019-08-24T14:15:22Z",
"assigneeId": "550e8400-e29b-41d4-a716-446655440000",
"catalogItemId": "550e8400-e29b-41d4-a716-446655440000",
"sortOrder": 0,
"createdAt": "2019-08-24T14:15:22Z",
"updatedAt": "2019-08-24T14:15:22Z"
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}In: header
Path Parameters
UUID v4
uuidResponse Body
application/json
application/json
application/json
application/json
application/json
curl -X DELETE "https://www.clientcasa.com/api/v1/milestones/550e8400-e29b-41d4-a716-446655440000"{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}{
"error": {
"code": "unauthorized",
"message": "string",
"requestId": "string",
"details": {
"property1": null,
"property2": null
}
}
}