ClientCasa
API

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 — either projects or client-documents.
  • parentId — the ID of that parent record.

Both are required when you create a milestone.

  • Use projects to mark deliverables and schedule points on a project — the work you're doing for a client.
  • Use client-documents to 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=...).

GET
/api/v1/milestones
x-api-key<token>

In: header

Query Parameters

page?integer
Default1
Range1 <= value
pageSize?integer
Default25
Range1 <= value <= 100
parentType?string
Value in"projects" | "client-documents"
parentId?string

UUID v4

Formatuuid
status?string
Value in"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
    }
  }
}
POST
/api/v1/milestones
x-api-key<token>

In: header

Header Parameters

Idempotency-Key?string

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.

Lengthlength <= 255

Request 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
    }
  }
}
GET
/api/v1/milestones/{id}
x-api-key<token>

In: header

Path Parameters

id*string

UUID v4

Formatuuid

Response 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
    }
  }
}
PATCH
/api/v1/milestones/{id}
x-api-key<token>

In: header

Path Parameters

id*string

UUID v4

Formatuuid

Request 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
    }
  }
}
DELETE
/api/v1/milestones/{id}
x-api-key<token>

In: header

Path Parameters

id*string

UUID v4

Formatuuid

Response 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"
Empty
{
  "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
    }
  }
}

On this page