Deel REST API

Global payroll and HR platform

developer.deel.com ↗
Version
1.25.0
OpenAPI
3.0.1
Endpoints
153
Schemas
508
81
Quality
Updated
3 days ago
Hr hr payroll hiring
Use this API in your AI agent

Query structured spec data via REST or MCP. Get exactly what your agent needs.

Get API Key

Server URLs

https://api.letsdeel.com/rest/v2
https://api-staging.letsdeel.com/rest/v2

Endpoints

Clear filters

Contracts 1 endpoints

PUT /contracts/{contract_id}/documents

Overwrite the file currently attached to contract document.

operationId: Contracts_editFileAttachment

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

Request Body

A form to attach a file to contract document.

multipart/form-data
schema FileObject
Property Type Required
file string optional

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PUT /contracts/{contract_id}/documents

People 2 endpoints

PUT /people/{worker_id}/department

Update worker department.

operationId: People_updateDepartment

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Detail of the department data to attach for worker.

application/json
schema UpdateWorkerDepartmentContainer
Property Type Required
data object required
department_id string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PUT /people/{worker_id}/department
PUT /people/{worker_id}/working-location

Update worker working location.

operationId: People_updateWorkingLocation

Parameters

Name In Required Type Description
worker_id path optional string

Unique identifier for a worker.

Request Body

Detail of the working location data to attach for worker.

application/json
schema UpdateWorkerWorkingLocationContainer
Property Type Required
data object required
working_location_id string required

Responses

200

Successful operation.

400

Operation failed.

401

Operation failed.

403

Operation failed.

404

Operation failed.

405

Operation failed.

429

Operation failed.

500

Operation failed.

PUT /people/{worker_id}/working-location

Timeoff 1 endpoints

PUT /contracts/{contract_id}/time-offs/{timeoff_id}

Edit a time off request for a full-time employee.

operationId: TimeOff_editRequestObsolete

Parameters

Name In Required Type Description
contract_id path optional string

Deel contract id.

timeoff_id path optional string

Time off Id

Request Body

Detail of the time off that will be registered to the contract.

application/json
schema CreateTimeoffContainer
Property Type Required
data object required
type string required
reason string optional
end_date string optional
start_date string optional
other_timeoff_name string optional
with_multiple_dates boolean required
is_end_date_half_day boolean optional
is_start_date_half_day boolean optional

Responses

201

Successful operation.

401

Operation failed.

403

Operation failed.

404

Operation failed.

500

Operation failed.

PUT /contracts/{contract_id}/time-offs/{timeoff_id}

User 1 endpoints

PUT /Users/{id}
operationId: User_updateUserById

Parameters

Name In Required Type Description
id path required string

user id

Request Body

an existing user

application/json
schema User
Property Type Required
id string optional
meta object required
created string optional
version string optional
location string optional
lastModified string optional
resourceType string optional
name object required
givenName string required
familyName string required
title string optional
active boolean optional
emails array required
type string required
value string required
primary boolean optional
schemas array required
userName string required
userType string optional
urn:ietf:params:scim:schemas:extension:2.0:User object optional
state string optional
country string optional
endDate string optional
startDate string optional
employments array optional
state string optional
title string optional
active boolean optional
country string optional
startDate string optional
contractId string optional
contractType string optional
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User object optional
manager object optional
value string required
costCenter string optional
department string optional
organization string optional
application/scim+json
schema User
Property Type Required
id string optional
meta object required
created string optional
version string optional
location string optional
lastModified string optional
resourceType string optional
name object required
givenName string required
familyName string required
title string optional
active boolean optional
emails array required
type string required
value string required
primary boolean optional
schemas array required
userName string required
userType string optional
urn:ietf:params:scim:schemas:extension:2.0:User object optional
state string optional
country string optional
endDate string optional
startDate string optional
employments array optional
state string optional
title string optional
active boolean optional
country string optional
startDate string optional
contractId string optional
contractType string optional
urn:ietf:params:scim:schemas:extension:enterprise:2.0:User object optional
manager object optional
value string required
costCenter string optional
department string optional
organization string optional

Responses

200

successfully fully updated a user

400

bad request

401

authorization failure

403

permissions denied

404

not found

409

duplicate email

429

too many requests

500

internal server error

PUT /Users/{id}

Schemas

object AddWorkerBankAccountContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/WorkerBankAccountToAdd"
    }
  },
  "x-internal": true
}
object AdditionalEORInfo
{
  "description": "Fields for country validation mandatory found at `/eor/validations/{country_code}`."
}
object AdditionalEORInfoContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdditionalEORInfo"
    }
  },
  "x-internal": true
}
object Address
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "example": "CO",
      "description": "Region code."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode"
    },
    "locality": {
      "type": "string",
      "example": "Denver",
      "description": "Locality name."
    },
    "postalCode": {
      "type": "string",
      "example": "44000",
      "description": "Postal code."
    },
    "streetAddress": {
      "type": "string",
      "example": "Deel Street 500",
      "description": "Street and number."
    }
  }
}
object AdjustmentCategory
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "c0431543f64c448e5ba4b525a50291",
      "description": "Unique identifier of an adjustment category."
    },
    "label": {
      "type": "string",
      "example": "Employee Dinner",
      "description": "The label of the adjustment category."
    },
    "unit_type": {
      "type": "string",
      "example": "currency",
      "description": "The unit type of the adjustment category."
    }
  }
}
object AdjustmentCreatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/PayrollAdjustment"
    }
  },
  "x-internal": true
}
string AdjustmentStatusEnum
{
  "enum": [
    "open",
    "pending_approval",
    "overwritten",
    "failed",
    "success"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Adjustment status"
}
object AdjustmentToCreate
{
  "type": "object",
  "required": [
    "contract_id",
    "amount",
    "title",
    "description",
    "adjustment_category_id",
    "file",
    "vendor",
    "country"
  ],
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "vendor": {
      "type": "string",
      "example": "Vendor",
      "minLength": 3,
      "description": "Vendor of adjustment."
    },
    "country": {
      "$ref": "#/components/schemas/CountryCode",
      "example": "CA",
      "description": "Country of adjustment."
    },
    "contract_id": {
      "type": "string",
      "example": "m3jk2j",
      "minLength": 5,
      "description": "The identifier of the contract associated with the adjustment"
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    },
    "cycle_reference": {
      "type": "string",
      "example": "my_cycle_reference",
      "description": "Cycle reference of adjustment."
    },
    "move_next_cycle": {
      "type": "boolean",
      "example": true,
      "nullable": true,
      "description": "If an adjustments can belong to another payroll cycle."
    },
    "date_of_adjustment": {
      "$ref": "#/components/schemas/DateString",
      "example": "2023-11-02T00:00:00.000Z",
      "description": "The date of the expense associated with the adjustment."
    },
    "adjustment_category_id": {
      "type": "string",
      "example": "c9cf4c2c0165f48f494415390c3b49",
      "minLength": 25,
      "description": "Adjustment category id."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to create"
}
object AdjustmentToCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToCreate"
    }
  },
  "x-internal": true
}
object AdjustmentToUpdate
{
  "type": "object",
  "properties": {
    "file": {
      "type": "string",
      "format": "binary",
      "minLength": 1,
      "description": "File of adjustment."
    },
    "title": {
      "type": "string",
      "example": "Your title here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Title of adjustment."
    },
    "amount": {
      "oneOf": [
        {
          "type": "string"
        },
        {
          "type": "number"
        }
      ],
      "example": 100.25,
      "minimum": 1,
      "minLength": 1,
      "description": "Amount of adjustment."
    },
    "description": {
      "type": "string",
      "example": "Your description here",
      "maxLength": 255,
      "minLength": 3,
      "description": "Description of adjustment."
    }
  },
  "x-internal": true,
  "description": "Details of adjustment to update"
}
object AdjustmentToUpdateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdjustmentToUpdate"
    }
  },
  "x-internal": true
}
object AdjustmentsCategoriesContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdjustmentCategory"
      }
    }
  },
  "x-internal": true
}
object AdjustmentsContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/PayrollAdjustment"
      }
    }
  },
  "x-internal": true
}
object AdminUser
{
  "type": "object",
  "required": [
    "id",
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false,
      "description": "Admin user profile id."
    },
    "email": {
      "type": "string",
      "format": "email",
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "description": "User's first name"
    }
  }
}
object AdminUserCreateContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AdminUserCreateRequest"
    }
  },
  "x-internal": true
}
object AdminUserCreateRequest
{
  "type": "object",
  "required": [
    "first_name",
    "last_name",
    "email"
  ],
  "properties": {
    "email": {
      "type": "string",
      "format": "email",
      "nullable": false,
      "description": "User's email"
    },
    "last_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's last name"
    },
    "first_name": {
      "type": "string",
      "nullable": false,
      "minLength": 1,
      "description": "User's first name"
    }
  }
}
object AdminUsersContainer
{
  "type": "object",
  "required": [
    "data",
    "page"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AdminUser"
      }
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursorNew"
    }
  },
  "x-internal": true
}
object Agreement
{
  "type": "object",
  "required": [
    "id",
    "agreement_title",
    "agreement_type",
    "msa",
    "client_legal_entity",
    "provider_legal_entity"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier",
      "nullable": false
    },
    "msa": {
      "type": "object",
      "required": [
        "id",
        "title"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "agreement_type": {
      "type": "string",
      "example": "shield",
      "nullable": false
    },
    "agreement_title": {
      "type": "string",
      "nullable": false
    },
    "client_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "provider_legal_entity": {
      "type": "object",
      "required": [
        "id",
        "name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier",
          "nullable": false
        },
        "name": {
          "type": "string",
          "example": "Deel Inc.",
          "nullable": false
        }
      }
    }
  },
  "x-internal": true
}
array AgreementList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/Agreement"
  },
  "x-internal": true
}
object AgreementListContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/AgreementList"
    },
    "page": {
      "$ref": "#/components/schemas/PageInfoWithoutCursor"
    }
  },
  "x-internal": true
}
string AgreementsParamLimit
{
  "type": "string",
  "default": "50",
  "x-internal": true,
  "description": "Maximum number of records to return. This is supposed to be an integer but query parameters are string. Maximum is 50."
}
string AgreementsParamOffset
{
  "type": "string",
  "default": "0",
  "x-internal": true,
  "description": "Offset/index of record for the next page of records to return. This is supposed to be an integer but query parameters are string."
}
object AgreementsSearchForm
{
  "type": "object",
  "properties": {
    "limit": {
      "$ref": "#/components/schemas/AgreementsParamLimit"
    },
    "offset": {
      "$ref": "#/components/schemas/AgreementsParamOffset"
    },
    "contract_id": {
      "type": "string",
      "nullable": false
    }
  },
  "x-internal": true,
  "description": "Convenient model to encapsulate query parameters to get a list of agreements."
}
object AlternateEmailItem
{
  "type": "object",
  "title": "Root Schema",
  "required": [
    "email",
    "isVerified"
  ],
  "properties": {
    "email": {
      "$ref": "#/components/schemas/EmailType",
      "title": "Alternate email"
    },
    "isVerified": {
      "type": "boolean",
      "title": "True if email has been verified"
    }
  }
}
array AlternateEmailList
{
  "type": "array",
  "items": {
    "$ref": "#/components/schemas/AlternateEmailItem"
  },
  "description": "List of alternate email addresses."
}
object ApiError
{
  "type": "object",
  "properties": {
    "path": {
      "type": "string",
      "example": "/data/type",
      "description": "The JSON path where input validation failed"
    },
    "message": {
      "type": "string",
      "example": "Must have required property 'example_field'",
      "description": "A description of the returned error"
    }
  },
  "x-internal": true
}
object ApiErrorContainer
{
  "type": "object",
  "properties": {
    "errors": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ApiError"
      }
    },
    "request": {
      "$ref": "#/components/schemas/ApiErrorRequest"
    }
  },
  "x-internal": true
}
object ApiErrorRequest
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "example": "/rest/v2/example",
      "description": "The relative URL of the failed request"
    },
    "code": {
      "type": "number",
      "example": 3,
      "description": "The code of the source handler which produced the returned error"
    },
    "docs": {
      "type": "string",
      "example": "https://developer.deel.com/reference/example",
      "description": "A link to the official documentation for the requested endpoint resource"
    },
    "method": {
      "type": "string",
      "example": "POST",
      "description": "The HTTP method of the failed request"
    },
    "source": {
      "type": "string",
      "example": "AJV",
      "description": "The source handler which produced the returned error"
    },
    "status": {
      "type": "number",
      "example": 400,
      "description": "The status code of the response"
    },
    "api_req_id": {
      "type": "string",
      "example": "00000000-0000-0000-0000-000000000000",
      "description": "The request ID of the failed request"
    }
  },
  "x-internal": true
}
object AttachmentFileRef
{
  "type": "object",
  "required": [
    "url"
  ],
  "properties": {
    "url": {
      "type": "string",
      "nullable": false,
      "description": "File URL to download the attachment."
    }
  },
  "x-internal": true
}
object AuthenticationScheme
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "specUrl": {
      "type": "string"
    },
    "description": {
      "type": "string"
    },
    "documentationUrl": {
      "type": "string"
    }
  }
}
object AuthenticationSchemes
{
  "type": "object",
  "properties": {
    "authenticationSchemes": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/AuthenticationScheme"
      }
    }
  }
}
object BankAccountAdded
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "example": "dcc7b587-2246-4909-853e-12056e90c451",
      "description": "ID of Bank Account."
    },
    "status": {
      "$ref": "#/components/schemas/BankAccountStatus"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BankAccountAddedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountAdded"
    }
  },
  "x-internal": true
}
object BankAccountGuide
{
  "type": "object",
  "required": [
    "key",
    "required"
  ],
  "properties": {
    "key": {
      "type": "string",
      "example": "countryCode",
      "description": "The key of the field."
    },
    "type": {
      "type": "string",
      "example": "text",
      "description": "Type of the field"
    },
    "label": {
      "type": "string",
      "example": "Country",
      "description": "Label for this field."
    },
    "required": {
      "type": "boolean",
      "example": true,
      "description": "Whether the field is required or not."
    },
    "validations": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/ValidationType"
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountValueAllowed"
      }
    }
  },
  "x-internal": true
}
object BankAccountGuideContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "type": "array",
      "items": {
        "$ref": "#/components/schemas/BankAccountGuide"
      }
    }
  }
}
string BankAccountStatus
{
  "enum": [
    "new",
    "pending",
    "approved",
    "failed"
  ],
  "type": "string",
  "x-internal": true,
  "description": "Bank Account status"
}
array BankAccountToAdd
{
  "type": "array",
  "items": {
    "type": "object",
    "required": [
      "key",
      "value"
    ],
    "properties": {
      "key": {
        "type": "string",
        "description": "The key of the bank account properties."
      },
      "value": {
        "type": "string",
        "description": "The value for that key property."
      }
    }
  },
  "x-internal": true
}
object BankAccountToAddContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountToAdd"
    }
  },
  "x-internal": true
}
object BankAccountUpdated
{
  "type": "object",
  "required": [
    "id",
    "status",
    "created_at",
    "updated_at"
  ],
  "properties": {
    "id": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "updated_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  }
}
object BankAccountUpdatedContainer
{
  "type": "object",
  "required": [
    "data"
  ],
  "properties": {
    "data": {
      "$ref": "#/components/schemas/BankAccountUpdated"
    }
  }
}
object BankAccountValueAllowed
{
  "type": "object",
  "properties": {
    "label": {
      "type": "string",
      "example": "Argentina",
      "description": "The name of the allowed value."
    },
    "value": {
      "type": "string",
      "example": "AR",
      "description": "The key of the allowed value."
    }
  },
  "x-internal": true
}
object BankGuide
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "type": {
      "type": "string"
    },
    "required": {
      "type": "boolean"
    },
    "validations": {
      "type": "object",
      "properties": {
        "regex": {
          "type": "string"
        },
        "maxLength": {
          "type": "integer"
        },
        "minLength": {
          "type": "integer"
        }
      }
    },
    "values_allowed": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "name": {
            "type": "string"
          }
        }
      }
    }
  }
}
object BasicContract
{
  "type": "object",
  "required": [
    "id",
    "title",
    "type",
    "status",
    "client",
    "worker",
    "invitations",
    "signatures",
    "is_shielded",
    "is_archived",
    "created_at",
    "termination_date"
  ],
  "properties": {
    "id": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "type": {
      "$ref": "#/components/schemas/ContractTypeEnum"
    },
    "scale": {
      "type": "string",
      "nullable": true,
      "description": "The payment scale (e.g., hourly, weekly, monthly, etc.)"
    },
    "title": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    },
    "client": {
      "$ref": "#/components/schemas/ClientOfBasicContract"
    },
    "status": {
      "$ref": "#/components/schemas/ContractStatusEnum"
    },
    "worker": {
      "$ref": "#/components/schemas/WorkerOfBasicContract"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeString"
    },
    "signatures": {
      "$ref": "#/components/schemas/SignaturesOfBasicContract"
    },
    "external_id": {
      "type": "string",
      "nullable": true,
      "description": "A unique identifier for the object provided by an external system."
    },
    "invitations": {
      "$ref": "#/components/schemas/InvitationsOfBasicContract"
    },
    "is_archived": {
      "type": "boolean"
    },
    "is_shielded": {
      "type": "boolean"
    },
    "who_reports": {
      "$ref": "#/components/schemas/ContractWhoReportsEnum"
    },
    "notice_period": {
      "$ref": "#/components/schemas/NoticePeriod"
    },
    "termination_date": {
      "$ref": "#/components/schemas/DateTimeString"
    }
  },
  "x-internal": true
}
object BasicInvoiceAdjustment
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "quantity",
    "total_amount",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "payment_cycle",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "$ref": "#/components/schemas/InvoiceAdjustmentTypeEnum"
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/InvoiceAdjustmentStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    },
    "invoice_id": {
      "type": "number",
      "nullable": true
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "nullable": false,
      "required": [
        "start_date",
        "end_date"
      ],
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeStringRequired"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
object BasicLegalEntity
{
  "type": "object",
  "required": [
    "id",
    "name",
    "entity_type",
    "entity_subtype"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false
    },
    "country": {
      "type": "string",
      "nullable": false
    },
    "entity_type": {
      "$ref": "#/components/schemas/LegalEntityType"
    },
    "entity_subtype": {
      "$ref": "#/components/schemas/LegalEntitySubType"
    }
  },
  "x-internal": true
}
object BasicOrganization
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTeam
{
  "type": "object",
  "required": [
    "id",
    "name"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "name": {
      "type": "string",
      "nullable": false,
      "minLength": 1
    }
  },
  "x-internal": true
}
object BasicTimesheet
{
  "type": "object",
  "required": [
    "id",
    "type",
    "status",
    "description",
    "date_submitted",
    "created_at",
    "currency_code",
    "total_amount",
    "quantity",
    "contract",
    "worksheet",
    "reported_by",
    "reviewed_by",
    "attachment"
  ],
  "properties": {
    "id": {
      "$ref": "#/components/schemas/UniqueObjectIdentifier"
    },
    "type": {
      "type": "string",
      "description": "Deprecated - it is always \"work\""
    },
    "scale": {
      "type": "string",
      "example": "custom",
      "nullable": true
    },
    "status": {
      "$ref": "#/components/schemas/TimesheetStatusEnum"
    },
    "contract": {
      "type": "object",
      "required": [
        "id",
        "title",
        "type"
      ],
      "properties": {
        "id": {
          "type": "string",
          "nullable": false
        },
        "type": {
          "$ref": "#/components/schemas/ContractTypeEnum"
        },
        "title": {
          "type": "string",
          "nullable": false
        }
      }
    },
    "quantity": {
      "type": "number",
      "example": 1,
      "nullable": true
    },
    "worksheet": {
      "type": "object",
      "nullable": true,
      "required": [
        "weeks",
        "days",
        "hours",
        "minutes"
      ],
      "properties": {
        "days": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "hours": {
          "type": "number",
          "example": 1,
          "minimum": 0
        },
        "weeks": {
          "type": "number",
          "example": 0,
          "minimum": 0
        },
        "minutes": {
          "type": "number",
          "example": 0,
          "minimum": 0
        }
      }
    },
    "attachment": {
      "$ref": "#/components/schemas/FileAttachmentInfo"
    },
    "created_at": {
      "type": "string",
      "example": "2022-05-04T03:45:27.108Z",
      "nullable": false
    },
    "description": {
      "type": "string",
      "nullable": false
    },
    "reported_by": {
      "type": "object",
      "nullable": false,
      "required": [
        "id",
        "full_name"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "full_name": {
          "type": "string",
          "example": "John Smith",
          "nullable": false
        }
      }
    },
    "reviewed_by": {
      "type": "object",
      "nullable": true,
      "required": [
        "id",
        "full_name",
        "reviewed_at",
        "remarks"
      ],
      "properties": {
        "id": {
          "$ref": "#/components/schemas/UniqueObjectIdentifier"
        },
        "remarks": {
          "type": "string",
          "nullable": false
        },
        "full_name": {
          "type": "string",
          "example": "Jane Smith"
        },
        "reviewed_at": {
          "type": "string",
          "example": "2022-05-04T03:45:27.899Z"
        }
      }
    },
    "custom_scale": {
      "type": "string",
      "nullable": true
    },
    "total_amount": {
      "type": "string",
      "example": "200.0000",
      "nullable": false,
      "description": "is equal to quantity times rate of active work statement + bonus in this record"
    },
    "currency_code": {
      "$ref": "#/components/schemas/CurrencyCodeRequired"
    },
    "payment_cycle": {
      "type": "object",
      "properties": {
        "end_date": {
          "$ref": "#/components/schemas/DateTimeString"
        },
        "start_date": {
          "$ref": "#/components/schemas/DateTimeString"
        }
      }
    },
    "date_submitted": {
      "$ref": "#/components/schemas/DateTimeStringRequired"
    }
  },
  "x-internal": true
}
string BenefitContributionStatusEnum
{
  "enum": [
    "MANDATORY",
    "OPTIONAL",
    "UNAVAILABLE"
  ],
  "type": "string"
}
string BenefitContributionTypeEnum
{
  "enum": [
    "PERCENTAGE",
    "FIXED_AMOUNT",
    "MATCH"
  ],
  "type": "string"
}

Versions

Version Endpoints Schemas Ingested Status
1.25.0 153 508 2026-05-11 current
1.25.0 153 508 2026-04-16