TripleBooks
Projects

Jobs

GET
/api/projects/services

Client implementation and service projects. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/api/projects/services?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services

Create a client project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
GET
/api/projects/services/{serviceId}

Project detail. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
PATCH
/api/projects/services/{serviceId}

Patch a project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
DELETE
/api/projects/services/{serviceId}

Archive a project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
GET
/api/projects/services/{serviceId}/finance

WIP, recognized revenue, and billable milestones. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/finance?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
GET
/api/projects/services/{serviceId}/milestones

Project milestones. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X GET "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/milestones?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/milestones

Add a milestone. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/milestones?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
PATCH
/api/projects/services/{serviceId}/milestones

Mark a milestone complete or edit it. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/milestones?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/milestones/{milestoneId}/invoice

Create a draft AR invoice for one milestone. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid
milestoneId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/milestones/497f6eca-6276-4993-bfeb-53cbbbba6f08/invoice?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
GET
/api/projects/services/{serviceId}/tasks

Tasks on a project. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/tasks?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/tasks

Add a task. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/tasks?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
PATCH
/api/projects/services/{serviceId}/tasks

Patch a task. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X PATCH "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/tasks?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
DELETE
/api/projects/services/{serviceId}/tasks

Delete a task. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X DELETE "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/tasks?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/time

Post a time entry on the project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/time?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
PATCH
/api/projects/services/{serviceId}/time/{entryId}

Patch a time entry. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid
entryId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X PATCH "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/time/497f6eca-6276-4993-bfeb-53cbbbba6f08?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
DELETE
/api/projects/services/{serviceId}/time/{entryId}

Delete a time entry. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid
entryId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

application/json

curl -X DELETE "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/time/497f6eca-6276-4993-bfeb-53cbbbba6f08?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/post-time

Post billable time to the ledger. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/post-time?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/recognize-poc

Recognize revenue on a percent-complete project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/recognize-poc?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/close-project

Close a completed project. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/close-project?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}
GET
/api/projects/services/{serviceId}/sprints

Sprints on a project. Authorization: Bearer ak_.... Required scope includes read:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

curl -X GET "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/sprints?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
POST
/api/projects/services/{serviceId}/sprints

Create a sprint. Authorization: Bearer ak_.... Required scope includes write:projects. Requests are scoped to one entity. Pass entityId as a query parameter, JSON field, or x-entity-id header. API keys are already pinned to an entity.

Authorization

bearerAuth
AuthorizationBearer <token>

Create keys under Settings → API keys. Prefix ak_. Send as Authorization: Bearer ak_....

In: header

Path Parameters

serviceId*string
Formatuuid

Query Parameters

entityId*string

Entity UUID; must match the API key’s entity when using Bearer auth.

Formatuuid

Response Body

application/json

application/json

application/json

curl -X POST "https://example.com/api/projects/services/497f6eca-6276-4993-bfeb-53cbbbba6f08/sprints?entityId=497f6eca-6276-4993-bfeb-53cbbbba6f08"
Empty
{  "error": "string"}
{  "error": "string"}
{  "error": "string"}

On this page