Documentation / Projects

Projects

The Project object — a company workspace that holds orders, contacts, catalog and team — and the endpoints for listing, creating, updating and deleting projects.

A project is a company's workspace. Orders, contacts, materials, configurators, products, warehouses, the wiki and the team all belong to a project. Almost every other endpoint is nested under /api/v1/projects/{project.uuid}.

A user can own projects and be a member of other people's projects. A project works only while its owner has an active subscription. Otherwise every project-scoped endpoint returns 404 RES_NOT_FOUND, and List Projects shows the project with is_active: false.

Field types follow the field notation.

Access

Every endpoint on this page requires the projects OAuth scope.

Project Object

Project Structure

What Get Project returns. It describes the project from the authenticated user's point of view: the role and permissions are the user's own in this project.

Field Type Description
uuid uuid Project ID
name string Name, 1–255 characters
owner_uuid uuid The project owner
is_owner boolean Whether the authenticated user owns the project. Owners bypass all permission checks
role_uuid uuid The user's role in the project
role_name string Name of that role
permissions integer The role's permission bitmask
price_step decimal Rounding step for money amounts, see Price step
report_settings ?object Report options, see Report Settings Structure
created_at ISO8601 datetime When the project was created

Example Project

{
  "uuid": "0198e7a0-0000-7000-8000-000000000001",
  "name": "Acme Windows",
  "owner_uuid": "0198e7aa-91f0-7c22-a4d1-0f9e8d7c6b5a",
  "is_owner": true,
  "role_uuid": "0198e7a0-0000-7000-8000-0000000000a1",
  "role_name": "Owner",
  "permissions": 4291608416878591,
  "price_step": 0.01,
  "report_settings": {
    "revenue_mode": "pipeline"
  },
  "created_at": "2026-06-26T10:00:00.000Z"
}

Price step

price_step is the rounding step applied to money amounts in the project: one of 0.001, 0.01, 0.1, 1, 10, 50, 100, 500, 1000; default 0.01. It is a step, not a number of decimal places: with 50, a price of 1 234 rounds to 1 250. Configurator pricing and the app's display both round to this step. Amounts stored on orders are returned unrounded.

Report Settings Structure

Field Type Description
revenue_mode string How the revenue report counts revenue: pipeline (default) counts every order that is not canceled; actual counts only orders in a done-type status and reports the rest separately as potential revenue

null means the defaults.

List Projects

GET /api/v1/projects

Returns every project the user is a member of, owned projects first, then by name. The list includes projects whose owner's subscription has lapsed.

Response

200 OK — an array of objects:

Field Type Description
uuid uuid Project ID
name string Name
user_uuid uuid The owner
is_owner boolean Whether the authenticated user owns the project
is_active boolean Whether the owner's subscription is active today
created_at ISO8601 datetime When the project was created
[
  {
    "uuid": "0198e7a0-0000-7000-8000-000000000001",
    "name": "Acme Windows",
    "user_uuid": "0198e7aa-91f0-7c22-a4d1-0f9e8d7c6b5a",
    "is_owner": true,
    "is_active": true,
    "created_at": "2026-06-26T10:00:00.000Z"
  }
]

Errors

Status Code When
403 AUTH_INSUFFICIENT_SCOPE The token lacks projects

Create Project

POST /api/v1/projects

Creates a project owned by the authenticated user. The new project is set up with:

  • one default funnel with four statuses: New (new, the default and the widget default), In progress (active), Completed (done) and Canceled (canceled);
  • two roles, Owner with every permission and Manager with a typical sales set;
  • the user as its only member, with the Owner role.

Names are created in the user's language.

The user needs an active subscription, and the number of projects they own must be below their plan's limit.

JSON Params

Field Type Description
name string 1–255 characters

Example Request

{
  "name": "Acme Windows"
}

Response

201 Created

{
  "uuid": "0198e7a0-0000-7000-8000-000000000001",
  "name": "Acme Windows",
  "created_at": "2026-06-26T10:00:00.000Z",
  "updated_at": "2026-06-26T10:00:00.000Z"
}

Errors

Status Code When
400 REQ_VALIDATION_FAILED The body does not match the schema
403 AUTH_INSUFFICIENT_SCOPE The token lacks projects
403 BILL_SUBSCRIPTION_EXPIRED The user has no active subscription
403 LIMIT_PROJECT_COUNT_REACHED The user already owns as many projects as the plan allows

Get Project

GET /api/v1/projects/{project.uuid}

Returns the project as seen by the authenticated user. Any member can call it.

Errors

Status Code When
403 AUTH_INSUFFICIENT_SCOPE The token lacks projects
404 RES_NOT_FOUND The project does not exist, the user is not a member, or the owner's subscription is not active

Modify Project

PATCH /api/v1/projects/{project.uuid}

Updates only the fields you send.

Requires can_edit_project.

JSON Params

At least one field must be present.

Field Type Description
name? string 1–255 characters
price_step? decimal One of the allowed steps
report_settings? ?object Report settings; null resets them to the defaults

Example Request

{
  "price_step": 10,
  "report_settings": {
    "revenue_mode": "actual"
  }
}

Response

204 No Content

Errors

Status Code When
400 REQ_VALIDATION_FAILED The body does not match the schema, or price_step is not an allowed value
400 REQ_NO_DATA_PROVIDED The body has no fields
403 AUTH_INSUFFICIENT_SCOPE The token lacks projects
403 AUTH_NO_PROJECT_ACCESS The user's role lacks can_edit_project
404 RES_NOT_FOUND The project does not exist or is not accessible

Replace Project

PUT /api/v1/projects/{project.uuid}

Same as Modify Project, but name and report_settings are required. report_settings may be null. price_step stays optional and is left unchanged when omitted.

Requires can_edit_project.

Response

204 No Content

Errors

Same as Modify Project, except REQ_NO_DATA_PROVIDED.

Delete Project

DELETE /api/v1/projects/{project.uuid}

Permanently deletes the project and everything in it: orders, contacts, catalog, warehouses, wiki and memberships. This cannot be undone.

Only the project owner can delete a project.

Response

204 No Content

Errors

Status Code When
403 AUTH_INSUFFICIENT_SCOPE The token lacks projects
403 PROJECT_OWNER_REQUIRED The user is not the project owner
404 RES_NOT_FOUND The project does not exist or is not accessible