Skip to content

Project

Allowed query parameters

Filters

FilterTypeDescription
searchStringFull-text search
ownBooleanShow only own projects (as project leader)
involvedBooleanShow only projects where user is involved
assignedBooleanShow only projects assigned to the current user
contactIdFilter by Contact Id
is_archivedBooleanShow archived projects (completed)
is_internalBooleanShow only projects without billing
with_billable_costsBooleanShow only projects with billable costs
companyIdFilter by Company Id
billing_typeStringFilter by billing type (flat, hourly)
statusStringFilter by status (active, completed)
custom_fieldKey,StringFilter by Custom Field (eg. my_internal_id,42)

Sorting

name, created_at, starts_at, company, budget_used, billable_costs, last_time_tracked

Includes

company.media, owner.user, times.rate, unbilledTimes.rate, offers, approvedOffers, expenses, invoices, rates, timesCount, offersCount, invoicesCount, expensesCount, overdueInvoicesCount, assignedMembers.user.media

Create a project

post
/project
Attribute (* required)TypeDescription
name *StringProject title
descriptionStringProject description
company_id *StringA Company Id
member_id *StringA Member Id
starts_at *DateStart date
billing_typeStringBilling type (flat, hourly)
costs_limitNumberCost limit for the project (minimum: 0)
assigned_member_idsArrayArray of Member IDs assigned to the project
custom_fieldsObject?Custom data as Custom Fields

Example response

json
// HTTP 201 Created
{
    // a project object
}

Update a project

put
/project/{id}
Attribute (* required)TypeDescription
nameStringProject title
descriptionStringProject description
company_idStringA Company Id
member_idStringA Member Id
starts_atDateStart date
billing_typeStringBilling type (flat, hourly)
costs_limitNumberCost limit for the project (minimum: 0)
assigned_member_idsArrayArray of Member IDs assigned to the project
statusStringStatus of project (active, completed)
custom_fieldsObject?Custom data as Custom Fields

Example response

json
// HTTP 200 OK
{
    // a project object
}

Retrieve a project

get
/project/{id}

Example response

json
// HTTP 200 OK
{
    "id": "EO6YGvqMRV",
    "name": "CMS Upgrade",
    "description": null,
    "starts_at": "2022-02-09T08:52:00.000000Z",
    "due_at": null,
    "billing_type": "flat",
    "company_id": "PQYLdqm4wR",
    "company": {
        // a company object
    },
    "owner": {
        // a member object
    },
    "involved_members": [
        // an array of member objects with user data
    ],
    "assigned_members": [
        // an array of assigned member objects
    ],
    "assigned_member_ids": [1, 2, 3],
    "times": [
        // an array of time objects
    ],
    "invoices": [
        // an array of invoice objects
    ],
    "expenses": [
        // an array of expense objects
    ],
    "times_count": 45,
    "invoices_count": 3,
    "expenses_count": 12,
    "status": "active",
    "is_archived": false,
    "is_ongoing": true,
    "is_internal": false,
    "costs_limit": 5000.0,
    "custom_fields": {},
    "created_at": "2021-12-09T09:05:28.000000Z",
    "updated_at": "2022-02-09T08:52:00.000000Z"
}

Delete a project

delete
/project/{id}

Example response

json
// HTTP 204 No Content

List projects

get
/project

The list endpoint accepts the same parameters as in Retrieve a project and returns a paginated array of the same project object in the data property.

Read more about Pagination, Filtering, Sorting and Includes on the Introduction page.