CompanyCam Projects API

The Projects API from CompanyCam — 17 operation(s) for projects.

OpenAPI Specification

companycam-projects-api-openapi.yml Raw ↑
openapi: 3.0.0
info:
  version: v2
  title: Core Checklists Projects API
servers:
- url: https://api.companycam.com/v2
security:
- BearerAuth: []
tags:
- name: Projects
paths:
  /projects:
    get:
      summary: List Projects
      operationId: listProjects
      tags:
      - Projects
      parameters:
      - name: page
        in: query
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        schema:
          type: integer
          format: int32
      - name: query
        in: query
        required: false
        description: An optional value to filter the projects by name or address line 1
        schema:
          type: string
      - name: modified_since
        in: query
        description: An ISO8601 formatted date and time to return projects modified on or after the provided value
        schema:
          type: string
      responses:
        '200':
          description: List of projects sorted by most recent activity first
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
    post:
      summary: Create Project
      operationId: createProject
      tags:
      - Projects
      parameters:
      - name: X-CompanyCam-User
        in: header
        description: Email of CompanyCam user to be designated as the creator
        required: false
        schema:
          type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the project
                  default: Joe Smith
                  type: string
                address:
                  $ref: '#/components/schemas/Address'
                coordinates:
                  $ref: '#/components/schemas/Coordinate'
                geofence:
                  type: array
                  items:
                    $ref: '#/components/schemas/Coordinate'
                  example:
                  - lat: 28.425852468018288
                    lon: -81.47155671113255
                  - lat: 18.425852468018288
                    lon: -81.47155671113255
                  - lat: 8.425852468018288
                    lon: -91.47155671113255
                  - lat: 28.425852468018288
                    lon: -101.47155671113255
                primary_contact:
                  $ref: '#/components/schemas/ProjectContactRequest'
      responses:
        '201':
          description: The created project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{id}:
    get:
      summary: Retrieve Project
      operationId: getProject
      tags:
      - Projects
      parameters:
      - name: id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      responses:
        '200':
          description: Details about the project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
    put:
      summary: Update Project
      parameters:
      - name: id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                name:
                  description: The name of the project
                  type: string
                address:
                  $ref: '#/components/schemas/Address'
                coordinates:
                  $ref: '#/components/schemas/Coordinate'
                geofence:
                  type: array
                  items:
                    $ref: '#/components/schemas/Coordinate'
                  example:
                  - lat: 28.425852468018288
                    lon: -81.47155671113255
                  - lat: 18.425852468018288
                    lon: -81.47155671113255
                  - lat: 8.425852468018288
                    lon: -91.47155671113255
                  - lat: 28.425852468018288
                    lon: -101.47155671113255
      operationId: updateProject
      tags:
      - Projects
      responses:
        '200':
          description: The updated project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
    delete:
      summary: Delete Project
      parameters:
      - name: id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      operationId: deleteProject
      tags:
      - Projects
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occurred
  /projects/{id}/archive:
    patch:
      summary: Archive Project
      parameters:
      - name: id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      operationId: archiveProject
      tags:
      - Projects
      responses:
        '200':
          description: Details about the project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Forbidden
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occurred
  /projects/{id}/restore:
    put:
      summary: Restore Project
      parameters:
      - name: id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      operationId: restoreProject
      tags:
      - Projects
      responses:
        '200':
          description: Details about the project
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Project'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/photos:
    get:
      summary: List Photos
      operationId: listProjectPhotos
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: page
        in: query
        description: Page number for offset-based pagination. Cannot be used with cursor pagination (after/before params)
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        description: Number of results per page. Default 50, maximum 100
        schema:
          type: integer
          format: int32
          default: 50
          maximum: 100
      - name: after
        in: query
        description: Cursor for forward pagination. Comes from X-Next-Cursor header value. Returns results after this cursor position. Cannot be used with 'before' or 'page'
        schema:
          type: string
      - name: before
        in: query
        description: Cursor for backward pagination. Comes from X-Prev-Cursor header value. Returns results before this cursor position. Cannot be used with 'after' or 'page'
        schema:
          type: string
      - name: start_date
        in: query
        description: A unix timestamp to return photos captured on or after the provided value
        schema:
          type: string
      - name: end_date
        in: query
        description: A unix timestamp to return photos captured on or before the provided value
        schema:
          type: string
      - name: user_ids
        in: query
        description: Filter results to include photos captured by one of these user IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: group_ids
        in: query
        description: Filter results to include photos captured by users in one of these group IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: tag_ids
        in: query
        description: Filter results to include photos with one of these tag IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      responses:
        '200':
          description: List of photos sorted by captured date descending
          headers:
            X-Next-Cursor:
              description: Cursor that can be used as an 'after' param to fetch the next page of results. Empty if no more results
              schema:
                type: string
            X-Prev-Cursor:
              description: Cursor that can be used as a 'before' param to fetch the previous page of results. Empty if no previous results
              schema:
                type: string
            X-Has-Next:
              description: Indicates whether more results exist after the current page
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
            X-Has-Prev:
              description: Indicates whether results exist before the current page
              schema:
                type: string
                enum:
                - 'true'
                - 'false'
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Photo'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
    post:
      summary: Add Photo
      operationId: createProjectPhoto
      tags:
      - Projects
      parameters:
      - name: X-CompanyCam-User
        in: header
        description: Email of CompanyCam user to be designated as the creator
        required: false
        schema:
          type: string
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - photo
              properties:
                photo:
                  type: object
                  required:
                  - uri
                  - captured_at
                  properties:
                    coordinates:
                      $ref: '#/components/schemas/Coordinate'
                    uri:
                      type: string
                    captured_at:
                      description: Unix timestamp when the Photo was captured
                      type: integer
                      format: int32
                      example: 1637770053
                    description:
                      description: A description of the photo
                      type: string
                    tags:
                      type: array
                      items:
                        type: string
      responses:
        '201':
          description: The created project photo
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Photo'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/videos:
    get:
      summary: List Videos
      description: 'Returns videos captured at the specified project.


        **Important:** Until a video''s `status` is `processed`, the

        `playback_url` field returns the raw upload URL (the

        `pending_uri`) and `format` returns the file extension of

        that URL — not the HLS playback URL or `m3u8`. Subscribe

        to the `video.updated` webhook or poll

        `GET /videos/{id}` until `status: processed` before

        consuming `playback_url`/`format`.

        '
      operationId: listProjectVideos
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: page
        in: query
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        schema:
          type: integer
          format: int32
      - name: start_date
        in: query
        description: A unix timestamp to return videos captured on or after the provided value
        schema:
          type: string
      - name: end_date
        in: query
        description: A unix timestamp to return videos captured on or before the provided value
        schema:
          type: string
      - name: user_ids
        in: query
        description: Filter results to include videos captured by one of these user IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: group_ids
        in: query
        description: Filter results to include videos captured by one of these group IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      - name: tag_ids
        in: query
        description: Filter results to include videos tagged with one of these tag IDs
        schema:
          type: array
          items:
            type: integer
            format: int64
      responses:
        '200':
          description: List of videos sorted by capture date, most recent first
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Video'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/assigned_users:
    get:
      summary: List assigned users
      operationId: listProjectAssignedUsers
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: page
        in: query
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: List of project assigned users
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/User'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/assigned_users/{user_id}:
    put:
      summary: Assign a user to a project
      operationId: assignUserToProject
      tags:
      - Projects
      parameters:
      - name: X-CompanyCam-User
        in: header
        description: Email of CompanyCam user to be designated as the assigner
        required: false
        schema:
          type: string
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: user_id
        in: path
        description: ID of the User
        required: true
        schema:
          type: string
          format: id
      responses:
        '201':
          description: The assigned user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/User'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
    delete:
      summary: Remove assigned user from project
      operationId: removeUserFromProject
      tags:
      - Projects
      parameters:
      - name: X-CompanyCam-User
        in: header
        description: Email of CompanyCam user to be designated as the unassigner
        required: false
        schema:
          type: string
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: user_id
        in: path
        description: ID of the User
        required: true
        schema:
          type: string
          format: id
      responses:
        '204':
          description: No Content
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/notepad:
    put:
      summary: Update the project notepad
      operationId: updateProjectNotepad
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - notepad
              properties:
                notepad:
                  type: string
                  example: An updated description of the project
      responses:
        '201':
          description: The project notepad
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectNotepad'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occured
  /projects/{project_id}/collaborators:
    get:
      summary: List project collaborators
      operationId: listProjectCollaborators
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: page
        in: query
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: List of project collaborators
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectCollaborator'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occurred
  /projects/{project_id}/invitations:
    get:
      summary: List project invitations
      operationId: listProjectInvitations
      tags:
      - Projects
      parameters:
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      - name: page
        in: query
        schema:
          type: integer
          format: int32
      - name: per_page
        in: query
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: List of project invitations
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProjectInvitation'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occurred
    post:
      summary: Create a new project invitation for collaboration
      operationId: createInvitation
      tags:
      - Projects
      parameters:
      - name: X-CompanyCam-User
        in: header
        description: Email of CompanyCam user to be designated as the inviter
        required: false
        schema:
          type: string
      - name: project_id
        in: path
        description: ID of the Project
        required: true
        schema:
          type: string
          format: id
      responses:
        '201':
          description: The invitation response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProjectInvitation'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Bad Request
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - Record not found
        '500':
          description: Unexpected error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                errors:
                - An unexpected error occurred
  /projects/{project_id}/labels:
    get:
      summary: List Project Labels
      operationId: listProjectLabels
      tags:
      - Projects
      parameters:
      - name: proje

# --- truncated at 32 KB (76 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/companycam/refs/heads/main/openapi/companycam-projects-api-openapi.yml