CompanyCam Core API (v2)

REST API over CompanyCam projects, photos, videos, users, groups, tags, comments, documents, checklists and webhooks. Bearer token or OAuth 2.0.

Documentation

Specifications

Other Resources

OpenAPI Specification

companycam-openapi-original.yml Raw ↑
openapi: 3.0.0
info:
    version: v2
    title: Core API
servers:
    - url: "https://api.companycam.com/v2"
paths:
    /checklists:
        get:
            summary: "List All Checklists"
            operationId: listChecklists
            tags:
                - Checklists
            parameters:
                - name: page
                  in: query
                  schema:
                      type: integer
                      format: int32
                - name: per_page
                  in: query
                  schema:
                      type: integer
                      format: int32
                - name: completed
                  in: query
                  schema:
                      type: boolean
            responses:
                "200":
                    description: "List of checklists sorted by last updated"
                    content:
                        application/json:
                            schema:
                                type: array
                                items:
                                    $ref: "#/components/schemas/Checklist"
                "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"]
    /company:
        get:
            summary: "Retrieve Company"
            operationId: getCurrentCompany
            tags:
                - Company
            responses:
                "200":
                    description: "Details about the current company"
                    content:
                        application/json:
                            schema:
                                $ref: "#/components/schemas/Company"
                "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"]
    /users/current:
        get:
            summary: "Retrieve Current User"
            operationId: getCurrentUser
            tags:
                - Users
            responses:
                "200":
                    description: "Details about the current 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"]
    /users:
        get:
            summary: "List All Users"
            operationId: listUsers
            tags:
                - Users
            parameters:
                - name: page
                  in: query
                  schema:
                      type: integer
                      format: int32
                - name: per_page
                  in: query
                  schema:
                      type: integer
                      format: int32
            responses:
                "200":
                    description: "List of users sorted by alphabetically"
                    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"]
        post:
            summary: "Create User"
            operationId: createUser
            tags:
                - Users
            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:
                                user:
                                    type: object
                                    properties:
                                        first_name:
                                            type: string
                                        last_name:
                                            type: string
                                        email_address:
                                            type: string
                                        phone_number:
                                            type: string
                                        password:
                                            type: string
                                        user_role:
                                            type: string
                                            description: "Role for the user. Allowed values: standard (default), restricted"
            responses:
                "201":
                    description: "The created 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"]
    /users/{id}:
        get:
            summary: "Retrieve User"
            operationId: getUser
            tags:
                - Users
            parameters:
                - name: id
                  in: path
                  description: ID of the User
                  required: true
                  schema:
                      type: string
                      format: id
            responses:
                "200":
                    description: "Details about the 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"]
        put:
            summary: "Update User"
            parameters:
                - name: X-CompanyCam-User
                  in: header
                  description: Email of CompanyCam user to be designated as the editor
                  required: false
                  schema:
                      type: string
                - name: id
                  in: path
                  description: ID of the User
                  required: true
                  schema:
                      type: string
                      format: id
            requestBody:
                required: true
                content:
                    "application/json":
                        schema:
                            properties:
                                first_name:
                                    type: string
                                last_name:
                                    type: string
                                email_address:
                                    type: string
                                phone_number:
                                    type: string
                                password:
                                    type: string
            operationId: updateUser
            tags:
                - Users
            responses:
                "200":
                    description: "The updated 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: "Delete User"
            parameters:
                - name: X-CompanyCam-User
                  in: header
                  description: Email of CompanyCam user to be designated as the editor
                  required: false
                  schema:
                      type: string
                - name: id
                  in: path
                  description: ID of the User
                  required: true
                  schema:
                      type: string
                      format: id
            operationId: deleteUser
            tags:
                - Users
            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:
        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 o

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