Projects API

Manage projects within your companies. Projects are containers for tasks, phases, and deliverables, organized by client and company.

The Project Object

{
  "id": 123,
  "title": "Website Redesign",
  "description": "Complete redesign of the company website",
  "client_id": 456,
  "status": "active",
  "start_date": "2023-01-01",
  "due_date": "2023-03-31",
  "is_template": false,
  "is_community_template": false,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-01-01T12:00:00Z",
  "client": {
    "id": 456,
    "title": "Acme Corporation",
    "company_id": 789
  }
}

Attributes

Attribute Type Description
id integer Unique identifier for the project
title string The project's name
description string Detailed description of the project
client_id integer ID of the client this project belongs to
status string Current status of the project (active, completed, on_hold)
start_date string Project start date (YYYY-MM-DD format)
due_date string Project due date (YYYY-MM-DD format)
is_template boolean Whether this project is a template
client object The client object associated with this project

List Projects

Retrieves a list of projects the authenticated user has access to.

GET /api/v1/projects

Query Parameters

Parameter Type Description
company_id integer Filter projects by specific company ID
client_id integer Filter projects by specific client ID
title string Filter projects by title (partial match)
per_page integer Number of results per page (max 1000)

Example Request

GET /api/v1/projects?company_id=789&per_page=25
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

[
  {
    "id": 123,
    "title": "Website Redesign",
    "description": "Complete redesign of the company website",
    "client_id": 456,
    "status": "active",
    "start_date": "2023-01-01",
    "due_date": "2023-03-31",
    "is_template": false,
    "created_at": "2023-01-01T12:00:00Z",
    "updated_at": "2023-01-01T12:00:00Z",
    "client": {
      "id": 456,
      "title": "Acme Corporation",
      "company_id": 789
    }
  }
]

Get a Project

Retrieves a specific project by ID.

GET /api/v1/projects/{id}

Example Request

GET /api/v1/projects/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

{
  "id": 123,
  "title": "Website Redesign",
  "description": "Complete redesign of the company website",
  "client_id": 456,
  "status": "active",
  "start_date": "2023-01-01",
  "due_date": "2023-03-31",
  "is_template": false,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-01-01T12:00:00Z",
  "client": {
    "id": 456,
    "title": "Acme Corporation",
    "company_id": 789
  }
}

Create a Project

Creates a new project. Can be created from scratch or from a template.

POST /api/v1/projects

Request Body

Parameter Type Required Description
title string Yes The project's name
client_id integer Yes ID of the client this project belongs to
description string No Detailed description of the project
template_id integer No ID of template to create project from
start_date string No Project start date (YYYY-MM-DD)
due_date string No Project due date (YYYY-MM-DD)

Example Request (From Template)

POST /api/v1/projects
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json

{
  "title": "Acme Website Redesign",
  "client_id": 456,
  "template_id": 789,
  "start_date": "2023-02-01",
  "due_date": "2023-04-30"
}

Example Response

{
  "id": 124,
  "title": "Acme Website Redesign",
  "description": "Website redesign project based on template",
  "client_id": 456,
  "status": "active",
  "start_date": "2023-02-01",
  "due_date": "2023-04-30",
  "is_template": false,
  "created_at": "2023-02-01T10:00:00Z",
  "updated_at": "2023-02-01T10:00:00Z",
  "client": {
    "id": 456,
    "title": "Acme Corporation",
    "company_id": 789
  }
}

Update a Project

Updates an existing project's information.

PUT /api/v1/projects/{id}

Example Request

PUT /api/v1/projects/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Content-Type: application/json
Accept: application/json

{
  "title": "Updated Website Redesign",
  "status": "completed",
  "due_date": "2023-05-15"
}

Example Response

{
  "id": 123,
  "title": "Updated Website Redesign",
  "description": "Complete redesign of the company website",
  "client_id": 456,
  "status": "completed",
  "start_date": "2023-01-01",
  "due_date": "2023-05-15",
  "is_template": false,
  "created_at": "2023-01-01T12:00:00Z",
  "updated_at": "2023-02-01T14:30:00Z",
  "client": {
    "id": 456,
    "title": "Acme Corporation",
    "company_id": 789
  }
}

Delete a Project

Permanently deletes a project. Only company members can delete projects.

DELETE /api/v1/projects/{id}

Warning: Deleting a project will permanently remove it along with all associated tasks and phases. This action cannot be undone and requires company member permissions.

Example Request

DELETE /api/v1/projects/123
Authorization: Bearer YOUR_ACCESS_TOKEN
Accept: application/json

Example Response

204 No Content