TimeCamp [v3] Projects API

The [v3] Projects API from TimeCamp — 5 operation(s) for [v3] projects.

OpenAPI Specification

timecamp-v3-projects-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: TimeCamp [v1] Approvals [v1] Approvals [v3] Projects API
  version: '1.0'
  contact:
    email: support@timecamp.com
  termsOfService: https://www.timecamp.com/terms-conditions/
  description: 'Documentation for the TimeCamp system.


    Get your API token here:

    https://app.timecamp.com/app#/settings/users/me


    Be aware that you can reach API calls limit. Once you do you will get HTTP code 429 response.


    Request example:


    ```

    GET https://app.timecamp.com/third_party/api/user?user_id=1234567


    Headers:

    Authorization: Bearer 87c21299960a88888888fe123

    Accept: application/json

    ```

    '
servers:
- url: https://app.timecamp.com/third_party/api
  description: PRODUCTION
- url: https://v4.api.timecamp.com
  description: PRODUCTION
tags:
- name: '[v3] Projects'
  x-displayName: Projects
paths:
  /v3/projects:
    post:
      summary: List projects tree
      description: List projects tree
      tags:
      - '[v3] Projects'
      operationId: projects-list
      parameters:
      - schema:
          type: string
          example: application/json
        in: header
        name: Accept
      - schema:
          type: string
          example: application/json
        in: header
        name: Content-Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - parentId
              - status
              properties:
                parentId:
                  type: integer
                  description: Parent ID to search (0 for root task)
                  example: 0
                status:
                  type: string
                  description: Filter tasks by status
                  enum:
                  - all
                  - active
                  example: active
                context:
                  type: string
                  description: Project tree context
                  enum:
                  - invoice
                  - time_tracking
                  - reports
                  - edit_settings
                  - create_subtask
                  default: reports
                  example: time_tracking
                include:
                  type: array
                  description: List of additional fields to include. The users field contains active assigned users only.
                  enum:
                  - color
                  - users
                  - groups
                  - last_used
                  example:
                  - color
                  - users
                page:
                  type: integer
                  description: Page number for pagination
                  example: 1
                limit:
                  type: integer
                  description: Number of items per page
                  example: 25
            examples:
              Example:
                value:
                  parentId: 0
                  status: active
                  context: reports
                  include:
                  - color
                  - users
                  page: 1
                  limit: 25
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      $ref: '#/components/schemas/Projects-item'
                  pagination:
                    type: object
                    properties:
                      page:
                        type: integer
                      totalPages:
                        type: integer
              examples:
                Example 1:
                  value:
                    data:
                    - taskId: 34523534
                      name: Calendars
                      parentId: 0
                      level: 1
                      note: Personal calendars
                      rootGroupId: 66
                      archived: 0
                      billable: true
                      hasChildren: false
                      children: []
                      disabled: false
                      disableReason: ''
                    pagination:
                      page: 1
                      totalPages: 5
        default:
          description: Default
      security:
      - api_key_in_header: []
  /v3/projects/search:
    post:
      summary: Search in projects tree
      description: Search in projects tree
      tags:
      - '[v3] Projects'
      operationId: projects-search
      parameters:
      - schema:
          type: string
          example: application/json
        in: header
        name: Accept
      - schema:
          type: string
          example: application/json
        in: header
        name: Content-Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - status
              properties:
                searchText:
                  type: string
                  description: Phrase to search for. At least one of `searchText` or `userIds` is required.
                  minLength: 2
                  example: searching for this
                userIds:
                  type: array
                  description: User IDs directly assigned to returned projects. At least one of `searchText` or `userIds` is required.
                  minItems: 1
                  maxItems: 500
                  items:
                    type: integer
                  example:
                  - 123
                  - 456
                status:
                  type: string
                  description: Filter tasks by status
                  enum:
                  - all
                  - active
                  example: active
                context:
                  type: string
                  description: Project tree context
                  enum:
                  - invoice
                  - time_tracking
                  - reports
                  - edit_settings
                  - create_subtask
                  default: reports
                  example: time_tracking
                include:
                  type: array
                  description: List of additional fields to include
                  items:
                    type: string
                    enum:
                    - color
                    - users
                    - groups
                    - last_used
                  example:
                  - color
                  - users
            examples:
              Example:
                value:
                  status: active
                  searchText: searching for this
                  context: reports
                  include:
                  - color
                  - users
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      $ref: '#/components/schemas/Projects-item'
                  meta:
                    type: object
                  searchInfo:
                    type: object
                    properties:
                      items:
                        type: integer
                      total:
                        type: integer
              examples:
                Example 1:
                  value:
                    data:
                    - taskId: 34523534
                      name: Calendars
                      parentId: 0
                      level: 1
                      note: Personal calendars
                      rootGroupId: 66
                      archived: 0
                      billable: true
                      hasChildren: false
                      children: []
                      disabled: false
                      disableReason: ''
                      isMatching: true
                    meta: {}
                    searchInfo:
                      items: 1
                      total: 5
        default:
          description: Default
      security:
      - api_key_in_header: []
  /v3/projects/{taskId}/assigned-users:
    get:
      summary: List assigned users for project task
      description: Returns active users assigned to a task, including inherited assignments metadata.
      tags:
      - '[v3] Projects'
      operationId: projects-assigned-users
      parameters:
      - schema:
          type: integer
          example: 34523534
        in: path
        required: true
        name: taskId
      - schema:
          type: string
          example: application/json
        in: header
        name: Accept
      - schema:
          type: string
          example: application/json
        in: header
        name: Content-Type
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: array
                    items:
                      type: object
                      properties:
                        userId:
                          type: integer
                        displayName:
                          type: string
                        email:
                          type: string
                        roleId:
                          type: integer
                        taskId:
                          type: integer
                          nullable: true
                  meta:
                    type: object
                    properties:
                      roles:
                        type: array
                        items:
                          type: object
                          properties:
                            roleId:
                              type: integer
                            name:
                              type: string
                            sort:
                              type: integer
                      tasks:
                        type: array
                        items:
                          type: object
                          properties:
                            taskId:
                              type: integer
                            name:
                              type: string
              examples:
                Example 1:
                  value:
                    data:
                    - userId: 364263
                      displayName: John Smith
                      email: john.smith@example.com
                      roleId: 2
                      taskId: null
                    - userId: 364264
                      displayName: Jane Doe
                      email: jane.doe@example.com
                      roleId: 3
                      taskId: 123456
                    meta:
                      roles:
                      - roleId: 2
                        name: Manager
                        sort: 10
                      - roleId: 3
                        name: Member
                        sort: 20
                      tasks:
                      - taskId: 123456
                        name: Parent task
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example 1:
                  value:
                    message: You are not allowed to use this endpoint.
      security:
      - api_key_in_header: []
  /v3/projects/{taskId}/assign:
    put:
      summary: Assign users to project task
      description: Assigns one or more users to the selected project task with the provided project role.
      tags:
      - '[v3] Projects'
      operationId: projects-assign-users
      parameters:
      - schema:
          type: integer
          example: 34523534
        in: path
        required: true
        name: taskId
      - schema:
          type: string
          example: application/json
        in: header
        name: Accept
      - schema:
          type: string
          example: application/json
        in: header
        name: Content-Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - userIds
              - roleId
              properties:
                userIds:
                  type: array
                  description: List of user IDs to assign to the task.
                  minItems: 1
                  items:
                    type: integer
                    minimum: 1
                roleId:
                  type: integer
                  description: Project role ID to assign to all listed users.
                  minimum: 1
            examples:
              Example 1:
                value:
                  userIds:
                  - 364263
                  - 364264
                  roleId: 3
      responses:
        '200':
          description: Users assigned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    example: ok
              examples:
                Example 1:
                  value:
                    data: ok
        '400':
          description: Bad request or exposed business error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  message_code:
                    type: string
                  message_params:
                    type: object
                    additionalProperties: true
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        property:
                          type: string
                        message:
                          type: string
              examples:
                Validation error:
                  value:
                    message: Request validation failed
                    errors:
                    - property: userIds
                      message: This value should not be blank.
                User does not exist:
                  value:
                    message: At least one of users provided in payload does not exist
                    message_code: projects.error.user_does_not_exist
                    message_params: []
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  message_code:
                    type: string
                  message_params:
                    type: object
                    additionalProperties: true
              examples:
                No endpoint access:
                  value:
                    message: You are not allowed to use this endpoint.
                Access to task denied:
                  value:
                    message: You have no rights in task 34523534
                    message_code: projects.error.assign.access_to_task_denied
                    message_params:
                      task_id: 34523534
                Role higher than owned:
                  value:
                    message: You can not set role 4 as this role is higher than your own
                    message_code: projects.error.assign.permission_higher_than_owned
                    message_params:
                      role_id: 4
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example 1:
                  value:
                    message: An unspecified error occurred.
      security:
      - api_key_in_header: []
  /v3/projects/{taskId}/unassign:
    put:
      summary: Unassign users from project task
      description: Removes direct user assignments from the selected project task.
      tags:
      - '[v3] Projects'
      operationId: projects-unassign-users
      parameters:
      - schema:
          type: integer
          example: 34523534
        in: path
        required: true
        name: taskId
      - schema:
          type: string
          example: application/json
        in: header
        name: Accept
      - schema:
          type: string
          example: application/json
        in: header
        name: Content-Type
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - userIds
              properties:
                userIds:
                  type: array
                  description: List of user IDs to unassign from the task.
                  minItems: 1
                  items:
                    type: integer
                    minimum: 1
            examples:
              Example 1:
                value:
                  userIds:
                  - 364263
                  - 364264
      responses:
        '200':
          description: Users unassigned successfully
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    type: string
                    example: ok
              examples:
                Example 1:
                  value:
                    data: ok
        '400':
          description: Bad request or exposed business error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  message_code:
                    type: string
                  message_params:
                    type: object
                    additionalProperties: true
                  errors:
                    type: array
                    items:
                      type: object
                      properties:
                        property:
                          type: string
                        message:
                          type: string
              examples:
                Validation error:
                  value:
                    message: Request validation failed
                    errors:
                    - property: userIds
                      message: This value should not be blank.
                User does not exist:
                  value:
                    message: At least one of users provided in payload does not exist
                    message_code: projects.error.user_does_not_exist
                    message_params: []
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                  message_code:
                    type: string
                  message_params:
                    type: object
                    additionalProperties: true
              examples:
                No endpoint access:
                  value:
                    message: You are not allowed to use this endpoint.
                Access to task denied:
                  value:
                    message: You have no rights in task 34523534
                    message_code: projects.error.assign.access_to_task_denied
                    message_params:
                      task_id: 34523534
                Cannot override role:
                  value:
                    message: Cannot override role for user John Smith
                    message_code: projects.error.assign.cannot_override_role_for_user
                    message_params:
                      user_display_name: John Smith
        '500':
          description: Internal server error
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
              examples:
                Example 1:
                  value:
                    message: An unspecified error occurred.
      security:
      - api_key_in_header: []
components:
  schemas:
    Projects-item:
      x-examples:
        Example 1:
          taskId: 123456
          name: My task
          parentId: 98765
          level: 3
          note: my note
          rootGroupId: 66
          archived: 0
          billable: false
          hasChildren: false
          children: []
          disabled: false
          disableReason: ''
          isMatched: true
      type: object
      properties:
        taskId:
          type: integer
        name:
          type: string
        parentId:
          type: integer
        level:
          type: integer
        note:
          type: string|null
        rootGroupId:
          type: integer
        archived:
          type: integer
        billable:
          type: bool
        hasChildren:
          type: bool
        children:
          type: array
        disabled:
          type: bool
        disableReason:
          type: string
      title: Project Item
      x-tags:
      - Projects
  securitySchemes:
    api_key_in_header:
      type: http
      scheme: bearer
      description: ''
    OIDC:
      type: openIdConnect
      openIdConnectUrl: authenticate/oidc
x-tagGroups:
- name: TimeCamp API
  tags:
  - '[v1] User'
  - '[v1] Entry'
  - '[v1] Tags'
  - '[v1] Group'
  - '[v1] Approvals'
  - '[v1] Computer Activities'
  - '[v1] Timer'
  - '[v1] Task'
  - '[v1] Attendance'
  - '[v1] Roles & Permissions'
  - '[v1] Billing Rates'
  - '[v1] Userlog'
  - '[v1] Activity alert'
  - '[v3] Timer'
  - '[v3] Invoices'
  - '[v3] Computer Activities'
  - '[v3] Time Entry'
  - '[v3] Task Archive'
  - '[v3] Time Entry Restriction'
  - '[v3] Expense'
  - '[v3] Plan'
  - '[v3] Storage'
  - '[v3] Module'
  - '[v3] Marketplace'
  - '[v3] Remote work detection'
  - '[v3] Data Export'
  - '[v3] Custom Fields'
  - '[v3] Approval'
  - '[v3] Task'
  - '[v3] Projects'
  - '[v3] Attendance'
  - '[v3] Attendance Requests'