Skip to content

Work Types

Manage work types that classify employees and vacancies by employment category. Work types affect cost calculations through their overhead percentage and control whether holidays are excluded from FTE calculations.

Work Type Object

FieldTypeDescription
idstringUnique identifier (CUID format). System-generated. Read-only.
namestringWork type name (e.g. "Full-time", "Part-time", "Fixed-term").
descriptionstring | nullDescription of this work arrangement.
overheadPercentagenumberOverhead multiplier applied to base salary for total cost calculations (e.g. 0.3 = 30% overhead). Default: 0.
isActivebooleanWhether this work type is active.
sortOrderintegerDisplay ordering weight. Lower values appear first.
excludeHolidaysbooleanWhether to exclude holidays from FTE calculations for this work type.
appliesToTypestring | nullWhether this work type applies to "employee" or "contractor". null = applies to both.
createdAtdatetime (ISO 8601)When the record was created. Read-only.
updatedAtdatetime (ISO 8601)When the record was last modified. Read-only.

Endpoints

MethodPathDescription
GET/org/:orgId/work-typesList work types
GET/org/:orgId/work-types/:idGet work type
POST/org/:orgId/work-typesCreate work type
PATCH/org/:orgId/work-types/:idUpdate work type
DELETE/org/:orgId/work-types/:idDelete work type

List Work Types

GET /org/:orgId/work-types

Query Parameters

ParameterTypeDefaultDescription
pageinteger1Page number (1-based).
limitinteger20Records per page. Min 1, max 100.
searchstring--Free-text search by name.
sortBystringnameField to sort by: name, sortOrder, createdAt.
sortDirstringascasc or desc.

Example Request

bash
curl -X GET "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/work-types?sortBy=name" \
  -H "Authorization: Bearer private_..."

Example Response

json
{
  "data": [
    {
      "id": "clx6t7u8v9w0x1y2z3a4",
      "name": "Full-time",
      "description": "Standard full-time employment",
      "overheadPercentage": 0.3,
      "isActive": true,
      "sortOrder": 0,
      "excludeHolidays": false,
      "appliesToType": null,
      "createdAt": "2024-01-10T08:00:00Z",
      "updatedAt": "2025-11-20T14:00:00Z"
    }
  ],
  "meta": {
    "page": 1,
    "limit": 20,
    "total": 3,
    "hasNextPage": false
  }
}

Create Work Type

POST /org/:orgId/work-types

Create Request Body

FieldTypeRequiredDescription
namestringYesWork type name.
descriptionstring | nullNoDescription.
overheadPercentagenumberNoOverhead multiplier (e.g. 0.3 for 30%). Must be >= 0.
isActivebooleanNoDefault: true.
sortOrderintegerNoDisplay ordering. Default: 0.
excludeHolidaysbooleanNoWhether to exclude holidays from FTE calculations. Default: false.
appliesToTypestringNo"employee" or "contractor". Omit for both.

Update Request Body

All fields from Create are accepted, all optional.

Example Request

bash
curl -X POST "https://{tenant}.flowstate.inc/api/v1/org/{orgId}/work-types" \
  -H "Authorization: Bearer private_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Full-time",
    "description": "Standard full-time employment",
    "overheadPercentage": 0.3
  }'

Status: 201 Created


Error Responses

Validation Error (400)

json
{
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Request validation failed.",
    "details": [{ "field": "name", "message": "name is required" }],
    "errorId": "err_clx9a8b7c6d5e4f3"
  }
}

Not Found (404)

json
{
  "error": {
    "code": "NOT_FOUND",
    "message": "Work type not found.",
    "errorId": "err_clx9a8b7c6d5e4f3"
  }
}

  • Employees -- Employees reference work types via workTypeId.
  • Vacancies -- Vacancies reference work types via workTypeId.

Flowstate Documentation