openapi: 3.0.1 info: title: 'Cinebody API' version: 'v3' servers: - url: https://app-api.cinebody.com - url: https://stage-app-api.cinebody.com security: - APIKey: [] tags: [] paths: /app/3.0/apiAppTypes: get: tags: - Typescript summary: Get latest typescript types. This includes TS definitions for endpoints and models. responses: '200': description: Success content: application/json: schema: type: object properties: types: description: A string of typescript types that define the CinebodyAPI namespace. This should be written directly to a file and then imported into your app for convenient typescript typings. type: string /app/3.0/organizations: get: tags: - Organizations summary: Get organizations this app has access to parameters: - $ref: '#/components/parameters/organizationAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: organizations: type: array items: $ref: '#/components/schemas/Organization' /app/3.0/organizations/{organizationId}/storage: get: tags: - Organizations summary: Get organization storage info parameters: - name: organizationId in: path description: The organization to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: apiVersion: type: string description: The current api version example: 3.26.1 totalBytes: type: number description: The total number of bytes used by the organization example: 33402653444 teamStorage: additionalProperties: $ref: '#/components/schemas/TeamStorageUsage' /app/3.0/organizations/{organizationId}/stats: get: tags: - Organizations summary: Get organization stats parameters: - name: organizationId in: path description: The organization to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: apiVersion: type: string description: The current api version example: 3.26.1 stats: $ref: '#/components/schemas/OrganizationStats' /app/3.0/organizations/{organizationId}: get: tags: - Organizations summary: Get a single organization parameters: - name: organizationId in: path description: The organization to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/organizationAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: apiVersion: type: string description: The current api version example: 3.26.1 organization: $ref: '#/components/schemas/Organization' patch: tags: - Organizations summary: Update an organization parameters: - name: organizationId in: path description: The organization to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/organizationAttributes' requestBody: content: application/json: schema: type: object properties: name: type: string description: The organization name example: Lumenati Updated email: type: string description: The organization billing contact email example: billing@example.com billingName: type: string description: The name of the billing contact example: Travis addressName: type: string description: The address of the organization example: Lumenati Headquarters addressLine1: type: string description: The address of the organization example: 3839 Jackson St nullable: true addressLine2: type: string description: The address of the organization nullable: true example: null addressCity: type: string description: The address of the organization example: Denver nullable: true addressState: type: string description: The address of the organization example: CO nullable: true addressZip: type: string description: The address of the organization example: 80205 addressCountry: type: string description: The address of the organization example: US stripeToken: type: string description: The stripe payment token to use for the account example: stripe_12345 shouldAutoUpgrade: type: boolean description: Whether to automatically add storage add-ons when storage limits for the plan are hit. example: true responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: organization: $ref: '#/components/schemas/Organization' /app/3.0/organizations/{organizationId}/users/{userId}: delete: tags: - Users summary: Delete an organization user parameters: - name: organizationId required: true in: path description: The organization id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: userId required: true in: path description: The user id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/organizations/{organizationId}/users: get: tags: - Users summary: Get organization users parameters: - name: organizationId in: path description: The organization to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: q in: query description: Limit results to users that match this name example: trav schema: type: string - name: sortBy in: query schema: $ref: '#/components/schemas/UsersSortBy' - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - name: type in: query schema: $ref: '#/components/schemas/FilterUserType' - $ref: '#/components/parameters/userAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of users that match the request. Used for pagination. example: 36 users: type: array items: $ref: '#/components/schemas/User' post: tags: - Users summary: Add user to an organization parameters: - name: organizationId in: path description: The organization id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/userAttributes' requestBody: content: application/json: schema: type: object properties: userId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The user id. Email must be specified if user id is not. email: type: string description: The user's email. User id must be specified if email is not. example: newuser@example.com type: $ref: '#/components/schemas/UserType' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: user: $ref: '#/components/schemas/User' /app/3.0/organizations/{organizationId}/teams: post: tags: - Teams summary: Create a new team parameters: - name: organizationId in: path description: The organization that owns the project required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/teamAttributes' requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/Address' - type: object properties: name: type: string description: The team name example: Lumenati Illumenati description: type: string description: A description of the team example: Not to be confused with the Lumenati Illumenati slug: type: string description: The team slug example: lumenati profileImage: type: string description: Base64 encoded image that should be used for the team profile image example: null responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of users that match the request. Used for pagination. example: 36 users: type: array items: $ref: '#/components/schemas/User' /app/3.0/projects: get: tags: - Projects summary: Get projects the app has access to parameters: - name: q in: query description: Limit results to projects that match this title example: lum schema: type: string - name: sortBy in: query schema: $ref: '#/components/schemas/ProjectsSortBy' - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - name: orientation in: query schema: $ref: '#/components/schemas/ProjectOrientation' - name: type in: query schema: $ref: '#/components/schemas/ProjectType' - name: publishStatus in: query schema: $ref: '#/components/schemas/ProjectPublishStatus' - name: status in: query schema: $ref: '#/components/schemas/ProjectStatus' - name: organizationIds in: query schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Limit results to these organizations - name: teamIds in: query schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Limit results to these teams - $ref: '#/components/parameters/projectAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of projects that match the request. Used for pagination. example: 36 projects: type: array items: $ref: '#/components/schemas/Project' post: tags: - Projects summary: Create a project parameters: - $ref: '#/components/parameters/projectAttributes' requestBody: content: application/json: schema: type: object required: - teamId - title - description - orientation - shootType - type properties: teamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The team to create the project under joinCode: type: string description: A custom join code to use. example: lumi02 startAt: type: string description: The project start example: '2020-10-03T00:00:00.000Z' endAt: type: string description: The project end example: '2021-11-30T07:00:00.000Z' title: type: string description: The project title example: Cinebody around the globe description: type: string description: The project description example: Get footage of Cinebody being used everywhere in the world! orientation: $ref: '#/components/schemas/ProjectOrientation' shootType: type: string description: Describes the theme of the project. Event, Micro-doc, Sports, etc. example: event type: $ref: '#/components/schemas/ProjectType' incentive: type: string description: The project incentive example: Free t-shirt for selected filmers status: $ref: '#/components/schemas/ProjectStatus' publishStatus: $ref: '#/components/schemas/ProjectPublishStatus' isGeoVisible: type: boolean description: Can admins see clip geo example: false responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: project: $ref: '#/components/schemas/Project' /app/3.0/projects/{projectId}: get: tags: - Projects summary: Get a project by id parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/projectAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: project: $ref: '#/components/schemas/Project' patch: tags: - Projects summary: Update a project parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/projectAttributes' requestBody: content: application/json: schema: type: object properties: joinCode: type: string description: A custom join code to use. example: lumi02 startAt: type: string description: The project start example: '2020-10-03T00:00:00.000Z' endAt: type: string description: The project end example: '2021-11-30T07:00:00.000Z' title: type: string description: The project title example: Cinebody around the globe description: type: string description: The project description example: Get footage of Cinebody being used everywhere in the world! orientation: $ref: '#/components/schemas/ProjectOrientation' shootType: type: string description: Describes the theme of the project. Event, Micro-doc, Sports, etc. type: $ref: '#/components/schemas/ProjectType' incentive: type: string description: The project incentive example: Free t-shirt for selected filmers status: $ref: '#/components/schemas/ProjectStatus' publishStatus: $ref: '#/components/schemas/ProjectPublishStatus' isGeoVisible: type: boolean description: Can admins see clip geo example: false responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: project: $ref: '#/components/schemas/Project' delete: tags: - Projects summary: Delete a project parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/projectAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/projects/{projectId}/image: put: tags: - Projects summary: Update a project image. description: Updating an image is asynchronous and may take several minutes before the image is actually updated parameters: - name: projectId required: true in: path description: The project id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef requestBody: content: multipart/form-data: schema: type: object properties: fileName: type: string format: binary responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/getProjectCode: get: tags: - Projects summary: Generates an unused joinCode responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: joinCode: type: string description: The join code that was checked example: bos1 /app/3.0/checkProjectCode: get: tags: - Projects summary: Check if a project code is available parameters: - name: joinCode in: query description: The code to check required: true schema: type: string responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: joinCode: type: string description: The join code that was checked example: lumen13 isAvailable: type: boolean description: Whether the join code is available example: true /app/3.0/shotTypes: get: tags: - Projects summary: Get shot types. These are global example / default categories for Shots parameters: - $ref: '#/components/parameters/shotTypeAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: shotTypes: type: array items: $ref: '#/components/schemas/ShotType' /app/3.0/projectTemplates: get: tags: - Projects summary: Get project templates. These can be used during project creation as a starting point for the project. parameters: - $ref: '#/components/parameters/projectAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: projectTemplates: type: array items: $ref: '#/components/schemas/Project' /app/3.0/projects/{projectId}/stats: get: tags: - Projects summary: Get project stats parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/shotAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: stats: $ref: '#/components/schemas/ProjectStats' /app/3.0/projects/{projectId}/shots: get: tags: - Projects summary: Get project shots parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/shotAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: shots: type: array items: $ref: '#/components/schemas/Shot' post: tags: - Projects summary: Create a project shot parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/shotAttributes' requestBody: content: application/json: schema: type: object required: - title - description - shotTypeId - projectId properties: title: type: string description: The title of the shot example: Action description: type: string description: A description of the shot example: Get into the action! Emphasize the energy and movement in your clips with slow mo and super slow mo settings. shotTypeId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The shot type to associate this shot to projectId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The project to create the shot orientation: $ref: '#/components/schemas/MediaFileOrientation' nullable: true fps: $ref: '#/components/schemas/MediaFileFps' nullable: true quality: $ref: '#/components/schemas/MediaFileQuality' nullable: true order: type: number nullable: true responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: shots: type: array items: $ref: '#/components/schemas/Shot' patch: tags: - Projects summary: Update project shots parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/shotAttributes' requestBody: content: application/json: schema: type: object required: - shotsToUpdate properties: shotsToUpdate: type: array required: - "" items: type: object properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The shot id title: type: string description: The title of the shot example: Action description: type: string description: A description of the shot example: Get into the action! Emphasize the energy and movement in your clips with slow mo and super slow mo settings. orientation: $ref: '#/components/schemas/MediaFileOrientation' nullable: true fps: $ref: '#/components/schemas/MediaFileFps' nullable: true quality: $ref: '#/components/schemas/MediaFileQuality' nullable: true order: type: number nullable: true hidden: type: boolean nullable: true example: false responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/shots/{shotId}: delete: tags: - Projects summary: Delete a shot description: Clips associated to a deleted shot will be moved to "Free Shoot" parameters: - name: shotId required: true in: path description: The shot id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/project: get: tags: - Projects summary: Find a project description: Find a project by joinCode parameters: - name: joinCode required: true in: query description: The join code schema: type: string example: abc123 responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: project: $ref: '#/components/schemas/Project' /app/3.0/projects/{projectId}/upload: get: tags: - Uploads summary: Request an upload for project clip, edit, shot, or shot example. After upload of all file parts is complete, a second request must be made to finalize the upload. parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: contentType schema: type: string in: query description: The video content/mime type example: video/mp4 - name: ext schema: type: string in: query description: The file extension to use example: mp4 - name: type schema: $ref: '#/components/schemas/ProjectUploadType' in: query description: The type of video example: clip - name: sizeBytes schema: type: number in: query description: The size of the file in bytes example: 1234567 responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: signedUrls: type: array description: The signed upload urls items: type: string chunkSizeBytes: type: number description: The size of each chunk (except the last one) in bytes filename: type: string description: The name of the file /app/3.0/projects/{projectId}/clipCompleteUpload: post: tags: - Uploads summary: Completes a multipart clip upload parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/mediaFileAttributes' requestBody: content: application/json: schema: type: object properties: filename: description: The filename obtained from the response of the Get Upload Url request type: string example: b7f4b91b-22fd-4e37-8502-e85baeeebe5f.mp4 originalFileName: type: string description: The original filename example: my-uploaded-vid.mp4 contentType: type: string description: The content mime type example: video/mp4 parts: type: array items: type: object properties: partNumber: type: number etag: type: string example: [{"partNumber": 1, "etag": "ac558a124f2523864ec4d8cf941b235c"}] uploadId: type: string example: rtKJLL8wPmShp9CqiyW4KxY971661AFADLJE30uwnHgYuDwoGXge1gi_cF7miTYOSaUu3Np2jRieoG5QKDIJklWJGWhqazhygktymnZjD4uFiyuhqYbu4CIBRR5NXVR2 duration: type: number description: The duration of the clip in seconds example: 123456 shotInCaseMode: type: boolean description: Legacy Super 8 case-mode support example: false shotId: type: string description: The shot id to associate with the clip example: 12345678-90ab-cdef-1234-567890abcdef isEdit: type: boolean description: If this clip is an edit example: false fps: $ref: '#/components/schemas/MediaFileFps' quality: $ref: '#/components/schemas/MediaFileQuality' shotAt: type: string description: When the clip was actually filmed example: '2021-07-29T01:42:13.456Z' orientation: $ref: '#/components/schemas/MediaFileOrientation' lat: type: number description: The latitude where the clip was filmed example: 41.904755 lng: type: number description: The longitude where the clip was filmed example: 12.454628 userId: type: string description: The user to associate this clip to. As if they uploaded it themself. example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: mediaFile: $ref: '#/components/schemas/MediaFile' /app/3.0/projects/{projectId}/shotExampleCompleteUpload: post: tags: - Uploads summary: Completes a shot example video upload parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/shotAttributes' requestBody: content: application/json: schema: type: object properties: filename: description: The filename obtained from the response of the Get Upload Url request type: string example: b7f4b91b-22fd-4e37-8502-e85baeeebe5f.mp4 shotId: type: string description: The shot id to associate with the clip example: 12345678-90ab-cdef-1234-567890abcdef hasNoPadding: type: boolean description: Whether this example clips should not be padded example: false parts: type: array items: type: object properties: partNumber: type: number etag: type: string example: [{"partNumber": 1, "etag": "ac558a124f2523864ec4d8cf941b235c"}] uploadId: type: string example: rtKJLL8wPmShp9CqiyW4KxY971661AFADLJE30uwnHgYuDwoGXge1gi_cF7miTYOSaUu3Np2jRieoG5QKDIJklWJGWhqazhygktymnZjD4uFiyuhqYbu4CIBRR5NXVR2 responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: shot: $ref: '#/components/schemas/Shot' /app/3.0/projects/{projectId}/teaserCompleteUpload: post: tags: - Uploads summary: Completes a project teaser video upload parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/projectAttributes' requestBody: content: application/json: schema: type: object properties: filename: description: The filename obtained from the response of the Get Upload Url request type: string example: b7f4b91b-22fd-4e37-8502-e85baeeebe5f.mp4 parts: type: array items: type: object properties: partNumber: type: number etag: type: string example: [{"partNumber": 1, "etag": "ac558a124f2523864ec4d8cf941b235c"}] uploadId: type: string example: rtKJLL8wPmShp9CqiyW4KxY971661AFADLJE30uwnHgYuDwoGXge1gi_cF7miTYOSaUu3Np2jRieoG5QKDIJklWJGWhqazhygktymnZjD4uFiyuhqYbu4CIBRR5NXVR2 responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: project: $ref: '#/components/schemas/Project' /app/3.0/projects/{projectId}/clips: get: tags: - Videos summary: Get project clips parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - name: shotIds in: query description: Limit result to specific shots schema: type: array items: type: string - name: shotTypeIds in: query description: Limit result to specific shot types schema: type: array items: type: string - name: userIds in: query description: Limit result to specific users schema: type: array items: type: string - name: isEdit in: query description: Whether this video is a Final Video schema: type: boolean - name: freeShoot in: query description: Include free-shoot videos schema: type: boolean - name: favorite in: query description: Limit results to favorited videos. These are videos hearted in the Cinebody app by the filmer schema: type: boolean - name: status in: query schema: $ref: '#/components/schemas/MediaFileStatus' - name: fps in: query description: Limit results to videos shot with a specific FPS schema: $ref: '#/components/schemas/MediaFileFps' - name: quality in: query description: Limit results to videos shot with a specific video quality schema: $ref: '#/components/schemas/MediaFileQuality' - $ref: '#/components/parameters/mediaFileAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: joinCode: type: string description: The join code that was checked example: lumen13 isAvailable: type: boolean description: Whether the join code is available example: true /app/3.0/projects/{projectId}/users: post: tags: - Users summary: Add user to a project parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/userAttributes' requestBody: content: application/json: schema: type: object properties: userId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The user id. Email must be specified if user id is not. email: type: string description: The user's email. User id must be specified if email is not. example: newuser@example.com responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of users that match the request. Used for pagination. example: 36 user: $ref: '#/components/schemas/User' /app/3.0/projects/{projectId}/users/{userId}: patch: tags: - Users summary: Update the status of the user on the project. Used to block / unblock users parameters: - name: projectId in: path description: The project id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: userId in: path description: The user id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef requestBody: content: application/json: schema: type: object properties: status: $ref: '#/components/schemas/UserProjectStatus' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/teams: get: tags: - Teams summary: Get teams the app has access to parameters: - name: organizationIds in: query description: Limit results to teams that are part of these organizations schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: sortBy in: query schema: $ref: '#/components/schemas/TeamsSortBy' - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - name: status in: query schema: $ref: '#/components/schemas/TeamStatus' - $ref: '#/components/parameters/teamAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of teams that match the request. Used for pagination. example: 36 teams: type: array items: $ref: '#/components/schemas/Team' /app/3.0/teams/{teamId}/stats: get: tags: - Teams summary: Get team stats parameters: - name: teamId in: path description: The team to fetch required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: apiVersion: type: string description: The current api version example: 3.26.1 stats: $ref: '#/components/schemas/TeamStats' /app/3.0/teams/{teamId}: get: tags: - Teams summary: Get team by id parameters: - name: teamId required: true in: path description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/teamAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: team: $ref: '#/components/schemas/Team' delete: tags: - Teams summary: Delete a team parameters: - name: teamId required: true in: path description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/teamAttributes' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success patch: tags: - Teams summary: Update a team parameters: - name: teamId required: true in: path description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/teamAttributes' requestBody: content: application/json: schema: allOf: - $ref: '#/components/schemas/Address' - type: object properties: name: type: string description: The team name example: Lumenati Illumenati description: type: string description: A description of the team example: Not to be confused with the Lumenati Illumenati slug: type: string description: The team slug example: lumenati pagePublished: description: Whether the team page has been published type: boolean status: $ref: '#/components/schemas/TeamStatus' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: organization: $ref: '#/components/schemas/Organization' /app/3.0/teams/{teamId}/image: put: tags: - Teams summary: Update a team profile image description: Updating an image is asynchronous and may take several minutes before the image is actually updated parameters: - name: teamId required: true in: path description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef requestBody: content: multipart/form-data: schema: type: object properties: fileName: type: string format: binary responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/teams/{teamId}/users/{userId}: delete: tags: - Users summary: Delete a team user parameters: - name: teamId required: true in: path description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: userId required: true in: path description: The user id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/teams/{teamId}/users: get: tags: - Users summary: Get team users parameters: - name: teamId in: path description: The team required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: q in: query description: Limit results to users that match this name example: trav schema: type: string - name: sortBy in: query schema: $ref: '#/components/schemas/UsersSortBy' - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - name: type in: query schema: $ref: '#/components/schemas/FilterUserType' - name: projectId in: query schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: If set, will fetch users in only this project as well as their status. "inProjectIds" and "notInProjectIds" will be ignored. - name: inProjectIds in: query schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Finds users that are in these projects - name: notInProjectIds in: query schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Finds users that are NOT in these projects - name: userIds in: query schema: type: array items: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Retrieve users by ids - $ref: '#/components/parameters/userAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of users that match the request. Used for pagination. example: 36 users: type: array items: $ref: '#/components/schemas/User' post: tags: - Users summary: Add user to a team parameters: - name: teamId in: path description: The team id required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/userAttributes' requestBody: content: application/json: schema: type: object properties: userId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The user id. Email must be specified if user id is not. email: type: string description: The user's email. User id must be specified if email is not. example: newuser@example.com type: $ref: '#/components/schemas/UserType' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: count: type: number description: The total number of users that match the request. Used for pagination. example: 36 users: type: array items: $ref: '#/components/schemas/User' /app/3.0/mediaFiles/download: get: tags: - Videos summary: Get download urls for multiple videos by filename parameters: - name: teamId required: true in: query description: The team id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: projectId in: query description: The project id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - name: filenames required: true in: query description: The filenames to download. This should be and array of MediaFile fileUUID or fileUUIDSD example: [502d06e7-0e2c-4278-be0b-c551a0903e77.mov, 8863362d-5646-44ec-8700-1b1ccbd0b26b-SD.mp4] schema: type: array items: type: string responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: urls: type: array items: properties: signedUrl: type: string description: The signed download URL. This link will expire. filename: type: string description: The filename to use when saving the file /app/3.0/mediaFiles/{mediaFileId}: patch: tags: - Videos summary: Update / moderate a video file parameters: - name: mediaFileId required: true in: path description: The video/clip id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef requestBody: content: application/json: schema: type: object properties: name: type: string description: Friendly name for the file. Used for final videos and displayed to users. example: Cinebody Around The Globe description: type: string description: A description of the file. Not currently displayed to users. example: Filmed at the Louvre editDescription: type: string description: Friendly description for the file. Used for final videos and displayed to users. example: Thank you for participating! This is the final video for our Around The Globe campaign. status: $ref: '#/components/schemas/MediaFileStatus' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: mediaFile: $ref: '#/components/schemas/MediaFile' delete: tags: - Videos summary: Delete a video file parameters: - name: mediaFileId required: true in: path description: The video/clip id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success /app/3.0/mediaFiles/{mediaFileId}/download: get: tags: - Videos summary: Download a specific media file by id. parameters: - name: mediaFileId required: true in: path description: The clip/video id schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: url: type: string description: The signed download URL. This link will expire. filename: type: string description: The filename to use when saving the file /app/3.0/notifications: post: tags: - Notications summary: Create a notification parameters: - $ref: '#/components/parameters/scheduledNotificationAttributes' requestBody: content: application/json: schema: type: object required: - message - type - teamId properties: message: type: string description: The notification text example: Start getting some footage! teamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The team id to send the notification to projectId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true description: The project id to send the notification to. Omit this paramter to send to all projects under the team userId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true description: The user id to send the message to. When this parameter is set, the type should be "individualMessage" mediaFileId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true description: If this message relates to a Final Video, set the mediaFileId isFromTeam: type: boolean nullable: true description: IGNORED. For api apps, isFromTeam will always be true example: true type: $ref: '#/components/schemas/NotificationType' sendAt: type: string nullable: true description: When to send the message. Send immediately if null or not set example: '2020-10-03T00:00:00.000Z' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: scheduledNotification: $ref: '#/components/schemas/ScheduledNotification' /app/3.0/scheduledNotifications: get: tags: - Notications summary: Get schedule notifications parameters: - name: teamId in: query schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Filter by team - name: projectId in: query schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Filter by project - name: fromUserId in: query schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Filter by the user that sent the message - name: mediaFileId in: query schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: Filter by video - name: isFromTeam in: query schema: type: boolean description: Filter by whether notification came from team - name: type in: query schema: $ref: '#/components/schemas/NotificationType' - name: status in: query schema: $ref: '#/components/schemas/NotificationStatus' - name: sortOrder in: query schema: $ref: '#/components/schemas/SortOrder' - $ref: '#/components/parameters/scheduledNotificationAttributes' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/page' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: scheduledNotification: $ref: '#/components/schemas/ScheduledNotification' /app/3.0/scheduledNotifications/{scheduledNotificationId}: patch: tags: - Notications summary: Update a notification parameters: - name: scheduledNotificationId in: path description: The notification to update required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef - $ref: '#/components/parameters/scheduledNotificationAttributes' requestBody: content: application/json: schema: type: object properties: message: type: string description: The notification text example: Start getting some footage! sendAt: type: string nullable: true description: When to send the message. Send immediately if null or not set example: '2020-10-03T00:00:00.000Z' responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: scheduledNotification: $ref: '#/components/schemas/ScheduledNotification' delete: tags: - Notications summary: Delete a notification parameters: - name: scheduledNotificationId in: path description: The notification to update required: true schema: type: string example: 12345678-90ab-cdef-1234-567890abcdef responses: '200': description: Success content: application/json: schema: allOf: - $ref: '#/components/schemas/APIVersion' - type: object properties: status: type: string enum: - success components: schemas: Address: description: An address. Not currently used. type: object properties: addressName: description: Placeholder. Not currently used. type: string nullable: true example: null addressLine1: description: Placeholder. Not currently used. type: string nullable: true example: null addressLine2: description: Placeholder. Not currently used. type: string nullable: true example: null addressCity: description: Placeholder. Not currently used. type: string nullable: true example: null addressState: description: Placeholder. Not currently used. type: string nullable: true example: null addressZip: description: Placeholder. Not currently used. type: string nullable: true example: null addressCountry: description: Placeholder. Not currently used. type: string nullable: true example: null Organization: allOf: - $ref: '#/components/schemas/Address' - type: object properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef name: type: string example: Lumenati status: $ref: '#/components/schemas/OrganizationStatus' storageStatus: $ref: '#/components/schemas/OrganizationStorageStatus' profileImages: type: object description: The profile picture / icon of the organization properties: profile80: type: string description: URL of the profile image (80x80) example: https://s3.amazonaws.com/cinebody/default-logos/L_80.jpg profile80@2x: type: string description: URL of the profile image (160x160) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_80@2x.jpg profile150: type: string description: URL of the profile image (150x150) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_150.jpg profile150@2x: type: string description: URL of the profile image (300x300) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_150@2x.jpg heroImages: type: object description: A hero image that can be used as a banner properties: profile1200: type: string description: URL of the hero image (1200x1200) example: https://s3.amazonaws.com/cinebody/default-org-hero--X1200.jpg profile1200@2x: type: string description: URL of the hero image (2400x2400) to be used @2x example: https://s3.amazonaws.com/cinebody/default-org-hero--X1200@2x.jpg isBilledOffline: type: boolean description: Whether the organization is billed offline via manual invoice example: false lockedClipsAt: type: string description: If the organization has exceeded storage limits or let the subscription lapse, clips may be locked nullable: true example: null endFreeTrialAt: type: string description: When the free trial will end. This value might be in the past. example: '2021-07-29T01:42:13.456Z' shouldAutoUpgrade: type: boolean description: Whether storage add-ons will be automatically added to the subscription when storage limits are exceeded. isLocked: type: boolean description: The organization is locked out because of a subscription status issue example: false features: type: object description: The features that are enabled or disabled for the organization properties: isChatDisabled: required: false type: boolean description: Whether chat is disabled example: false isLegalEnabled: required: false type: boolean description: Whether custom legal is enabled example: false isImageMediaEnabled: required: false type: boolean description: Whether photo upload is enabled example: false Team: description: A team type: object properties: id: description: The team id type: string name: description: The name of the team type: string profileImages: $ref: '#/components/schemas/TeamProfileImages' status: description: The current status of the team $ref: '#/components/schemas/TeamStatus' awsFolderName: description: The team folder name in S3. Used for building URLs to assets type: string nullable: true heroImageUUID: description: The hero image id type: string nullable: true heroImages: description: Hero images for the team type: object properties: profile1200: type: string description: URL of the hero image (1200x1200) example: https://s3.amazonaws.com/cinebody/default-team-hero--X1200.jpg profile1200@2x: type: string description: URL of the hero image (2400x2400) to be used @2x example: https://s3.amazonaws.com/cinebody/default-team-hero--X1200@2x.jpg slug: description: The team slug type: string nullable: true pagePublished: description: Whether the team page has been published type: boolean OrganizationId: description: The organization for this team type: string example: 12345678-90ab-cdef-1234-567890abcdef description: description: The team description type: string example: A super interesting team userCounts: $ref: '#/components/schemas/TeamUserCounts' teamClipCount: description: The total number of videos that have been shot for all projects on this team type: number example: 413 hasAnIncentive: description: Whether the team has an active project with an incentive type: boolean TeamUserCounts: description: The number of types of users on a team nullable: true properties: regular: description: The number of regular users on the team. type: number admin: description: The number of admin users on the team. This does not include organization admins. type: number orgAdmin: description: The number of organization admin users on the team. type: number User: description: A cinebody user type: object properties: id: type: string firstName: type: string nullable: true lastName: type: string nullable: true name: type: string description: A friendly name for the user. This value will always be a string. If the user has not set a name it will default to Filmer email: type: string description: The user's email address status: $ref: '#/components/schemas/UserStatus' onlineStatus: $ref: '#/components/schemas/UserOnlineStatus' profileImages: $ref: '#/components/schemas/UserProfileImages' userBio: type: string nullable: true description: A brief description of the user example: null TeamUser: description: Extended user model with information about the user related to a team allOf: - $ref: '#/components/schemas/User' - type: object properties: teamUserType: $ref: '#/components/schemas/UserType' userProjectStatus: $ref: '#/components/schemas/UserProjectStatus' ProjectUserCounts: description: The number of users that have joined a project type: object properties: users: type: number TeamStorageUsage: description: Stats about storage used on a team type: object properties: numFiles: type: number description: The number of MediaFIles fileSize: type: number description: The size of original files in bytes fileSizeSD: type: number description: The size of transcoded videos in bytes thumbSize: type: number description: The size of thumbnails in bytes total: type: number description: The total file size in bytes TeamStats: description: Stats about storage used on projects for a team type: object properties: numProjects: type: number description: The number of projects under the team numUsers: type: number description: The total number of users on the team teamCounts: description: The project counts but totaled up for the team for convenience $ref: '#/components/schemas/ProjectMediaCounts' projectCounts: description: The counts for each project in the team additionalProperties: $ref: '#/components/schemas/ProjectMediaCounts' OrganizationStats: description: Stats about an organization type: object properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The organization id numTeams: type: number description: The number of teams in the organization example: 4 numProjects: type: number description: The number of projects in the organization example: 8 numClips: type: number description: The number of clips uploaded to all projects in the organization example: 15 totalLengthSeconds: type: number description: Total length of all clips across all org projects example: 1623 numFilmers: type: number description: The number of unique contributors across all org projects example: 42 ProjectMediaCounts: description: Clip counts and their moderation status type: object properties: edits: description: AKA Final videos type: object properties: approved: type: number example: 2 rejected: type: number example: 1 pending: type: number example: 0 videos: description: Clips uploaded by users type: object properties: approved: type: number example: 32 rejected: type: number example: 1 pending: type: number example: 1078 Project: description: A cinebody project type: object properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The project id title: type: string nullable: true description: The name of the project example: Cinebody around the globe description: type: string nullable: true description: Description of the project example: Help us capture footage for Cinebody from everywhere around the world orientation: $ref: '#/components/schemas/ProjectOrientation' shootType: type: string description: Describes the theme of the project. Event, Micro-doc, Sports, etc. defaultImageUrl: type: string nullable: true description: The hero image generated automatically from the last uploaded clip example: https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/mediaThumbs/4a19abd0-d3ac-4a3e-8cdb-b4e442d73029-00001.jpg profileImageUUID: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true description: The project profile image id used to build profile images profileImages: type: object description: The profile images for the project. Might be null. nullable: true properties: profile80: type: string description: URL of the profile image (460x460) example: https://s3.amazonaws.com/cinebody/projectImages/98450db3-1a8e-4bae-a991-c75b5786b506--X460.png profile80@2x: type: string description: URL of the profile image (160x160) to be used @2x example: https://s3.amazonaws.com/cinebody/projectImages/98450db3-1a8e-4bae-a991-c75b5786b506--X460@2x.png defaultImageOrientation: $ref: '#/components/schemas/ProjectImageOrientation' defaultImageIcon: type: string nullable: true description: Placeholder. Currently not used. example: null publishStatus: type: ProjectPublishStatus $ref: '#/components/schemas/ProjectPublishStatus' type: $ref: '#/components/schemas/ProjectType' joinCode: type: string nullable: true description: Used to quick join projects. Unique. example: lumi02 TeamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The team for this project OrganizationId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The organization for this project createdAt: type: string description: When the project was created example: '2021-04-28T18:58:04.755Z' updatedAt: type: string description: Last time the project information was updated. Does not include new videos. example: '2021-08-17T21:19:38.237Z' teaserFileSize: type: string nullable: true description: Teaser video file size in bytes. This is a string to properly support BigInts in javascript example: '132236162' teaserFileSizeSD: type: number nullable: true description: SD Teaser video file size in bytes. This is a string to properly support BigInts in javascript example: '8464728' teaserThumbSize: type: number nullable: true description: Teaser video thumbnail size in bytes example: '150000' teaserTranscoded: type: boolean description: If the teaser has transcoded example: true teaserTranscodingError: type: boolean description: If there was an error transocding the teaser video example: flase teaserFileUUID: type: string nullable: true description: Teaser file id used to build paths to assets example: '3b8d875b-ff21-4219-ba72-38dac7ad1095.mov' teaserFileUUIDSD: type: string nullable: true description: SD Teaser file id used to build paths to assets example: '3b8d875b-ff21-4219-ba72-38dac7ad1095-SD.mp4' teaserLengthSeconds: type: number description: The length of the teaser video in seconds example: 73 teaserUrl: type: string nullable: true description: Full url to the SD teaser video example: https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaser/3b8d875b-ff21-4219-ba72-38dac7ad1095-SD.mp4 teaserThumbnails: type: array items: type: string nullable: true description: Array of urls to thumbnail images of frames of the teaser video example: ["https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00001.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00002.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00003.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00004.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00005.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00006.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00007.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00008.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00009.jpg", "https://s3.amazonaws.com/cinebody/teams/team-d1855a03-4ad9-47ba-bbec-a2d2a85ea15e/teaserThumbs/8b732759-0155-423b-8d06-17cf5ef71b02-00010.jpg"] incentive: type: string nullable: true description: Incentive for filming example: Free t-shirt for selected filmers userCounts: $ref: '#/components/schemas/ProjectUserCounts' mediaCounts: $ref: '#/components/schemas/ProjectMediaCounts' startAt: type: string nullable: true description: The project filming start example: '2020-10-03T00:00:00.000Z' endAt: type: string nullable: true description: The project filming end example: '2021-11-30T07:00:00.000Z' status: description: DEPRECATED. Use newStatus $ref: '#/components/schemas/ProjectStatus' newStatus: $ref: '#/components/schemas/ProjectStatus' description: Set status based on project startAt and endAt dates isGeoVisible: type: boolean description: Is clip geo available to admins example: false MediaFile: description: A video file type: object properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef fileUUID: type: string description: The file id used to build the path for file download / playback fileUUIDSD: type: string description: The file id used to build the path for the standard definition file download / playback thumbnailUUID: type: string nullable: true description: The file id used to build the path for thumbnails contentType: type: string description: The MIME content type of the file example: video/mp4 fileSize: type: number description: The size of the original file in bytes example: 3700104 fileSizeSD: type: number description: The size of the transcoded, standard definition file in bytes, example: 1988304 thumbSize: type: number description: The total size of thumbnail assets in bytes example: 45000 lengthSeconds: type: number nullable: true description: The video file length in seconds example: 21 description: type: string nullable: true description: Description of the video isEdit: type: boolean description: Whether this media file is an "edit" example: false transcoded: type: boolean description: Whether an SD version has been transcoded example: true transcodingError: type: boolean description: Whether there was an error transcoding the SD version example: false shotInCaseMode: type: boolean description: Legacy. Whether this was shot in a cinebody case example: false fps: $ref: '#/components/schemas/MediaFileFps' nullable: true quality: $ref: '#/components/schemas/MediaFileQuality' nullable: true description: The quality of the original file shotAt: type: string description: When the clip was originally created / shot in the Cinebody app. Manually uploaded videos will use the upload time example: '2021-07-29T01:42:13.456Z' favorite: type: boolean description: Whether the filmer marked this as a favorite (hearted it) in the cinebody app example: true thumbnails: type: array description: Array of thumbnails (in order) of the video. Can be used to show a preview of the video without video playback items: type: string orientation: $ref: '#/components/schemas/MediaFileOrientation' TeamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true UserId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true ProjectId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true ShotId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true createdAt: type: string description: When the clip was uploaded example: '2021-06-17T17:23:33.714Z' status: $ref: '#/components/schemas/MediaFileStatus' name: type: string nullable: true description: The name of the clip. Can be set / customized. example: Cinebody around the globe Final Video! displayName: type: string description: A user-friendly display name that can be displayed to the user. This string is built from the project, user, and shot details and can be used to organize files. displayNameWithExtension: type: string description: Same as displayName but with file extension moderatedAt: type: string nullable: true description: When this file was last moderated ("status" changed) example: '2021-06-17T17:23:33.714Z' editDescription: type: string nullable: true description: The description used if this is an "edit" example: Here is another final video blah blah... originalFileName: type: string nullable: true description: The original file name as uploaded example: null teamName: type: string description: The name of the team example: Lumenati teamProfileImages: $ref: '#/components/schemas/TeamProfileImages' userName: type: string description: The name of the user that uploaded the clip userProfileImages: $ref: '#/components/schemas/UserProfileImages' TeamProfileImages: description: The team profile images type: object properties: profile80: type: string description: URL of the profile image (80x80) example: https://s3.amazonaws.com/cinebody/default-logos/L_80.jpg profile80@2x: type: string description: URL of the profile image (160x160) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_80@2x.jpg profile150: type: string description: URL of the profile image (150x150) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_150.jpg profile150@2x: type: string description: URL of the profile image (300x300) to be used @2x example: https://s3.amazonaws.com/cinebody/default-logos/L_150@2x.jpg UserProfileImages: type: object description: The profile picture / icon of the organization properties: profile60: type: string description: URL of the profile image (60x60) example: https://s3.amazonaws.com/cinebody-dev/default-profile--X60.jpg profile60@2x: type: string description: URL of the profile image (120x120) to be used @2x example: https://s3.amazonaws.com/cinebody-dev/default-profile--X60@2x.jpg profile150: type: string description: URL of the profile image (150x150) to be used @2x example: https://s3.amazonaws.com/cinebody-dev/default-profile--X150.jpg profile150@2x: type: string description: URL of the profile image (300x300) to be used @2x example: https://s3.amazonaws.com/cinebody-dev/default-profile--X150@2x.jpg Shot: type: object description: A project shot properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef title: type: string description: The shot title example: Action description: type: string description: The shot description example: Capture skateboarders jumping! orientation: $ref: '#/components/schemas/MediaFileOrientation' fps: $ref: '#/components/schemas/MediaFileFps' quality: $ref: '#/components/schemas/MediaFileQuality' order: type: number description: The order of this shot in the shot list example: 3 hidden: type: boolean description: Whether this shot is hidden example: false fileSize: type: number description: The size of the full example video in bytes fileSizeSD: type: number description: The size of the transcoded standard definition example video in bytes thumbSize: type: number description: The size of the generated thumbnails in bytes transcoded: type: boolean description: Whether the video has been transcoded and standard definition video is available transcodingError: type: boolean description: Whether there was an error transcoding fileUUID: type: string description: The full video filename fileUUIDSD: type: string description: The transcoded video filename lengthSeconds: type: number description: The length of the video in seconds thumbnails: type: array description: Thumbnail stills of the video that can be used for previews items: type: string tutorialVideoUrl: type: string nullable: true description: The url to the example video ShotTypeId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The shot type TeamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The team ProjectId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The project ShotType: type: object description: Category for a shot with default values that can be customized on a Shot properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The shot id name: type: string description: The shot type name example: Action description: type: string nullable: true description: A description of the shot type example: Get into the action! Emphasize the energy and movement in your clips with slow mo and super slow mo settings. icon: type: string nullable: true description: An SVG icon representing the shot type example: ... fps: $ref: '#/components/schemas/MediaFileFps' nullable: true quality: $ref: '#/components/schemas/MediaFileQuality' nullable: true defaultImageUrl: type: string nullable: true description: Poster image for the shot type example video example: https://s3.amazonaws.com/cinebody/shotlist-default-images/action_v2.jpg tutorialVideoUrl: type: string nullable: true description: Example video showing the shot type example: https://s3.amazonaws.com/cinebody/shotlist-default-images/Action_v2.mp4 ProjectUserClipCount: type: object description: Clips contributed to a project by a user properties: userId: type: string example: 12345678-90ab-cdef-1234-567890abcdef description: The User id numClips: type: number description: The number of clips contributed ScheduledNotificationCounts: type: object description: Scheudle notification counts properties: sent: type: number description: The number of notifications in the sent state pending: type: number description: The number of notifications in the pending state processing: type: number description: The number of notifications in the processing state error: type: number description: The number of notifications in the error state blocked: type: number description: The number of notifications in the blocked state ProjectStats: type: object description: Stats about a project properties: totalLengthSeconds: type: number description: Total length of all clips in the project example: 4815162342 counts: $ref: '#/components/schemas/ProjectMediaCounts' scheduledNotificationCounts: $ref: '#/components/schemas/ScheduledNotificationCounts' numUsers: type: number description: The number of users on the project userClipCounts: $ref: '#/components/schemas/ProjectUserClipCount' ScheduledNotification: type: object description: A scheduled notification properties: id: type: string example: 12345678-90ab-cdef-1234-567890abcdef emailMessage: type: string description: 'DEPRECATED: Use pushMessage' nullable: true pushMessage: type: string nullable: true example: Start capturing footage ASAP! read: type: boolean description: Whether the message has been seen by the user example: false isFromTeam: type: string description: If this notification is coming from the team (and not an individual user) type: $ref: '#/components/schemas/NotificationType' sendAt: type: string description: When to send the message. Send immediately if null nullable: true example: '2020-10-03T00:00:00.000Z' status: $ref: '#/components/schemas/NotificationStatus' imageUrl: type: string description: Image to display in the notification nullable: true data: additionalProperties: true description: Custom data for pushes ProjectId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true TeamId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true FromUserId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true ToUserId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true MediaFileId: type: string example: 12345678-90ab-cdef-1234-567890abcdef nullable: true createdAt: type: string example: '2020-08-02T00:00:00.000Z' # Enums TeamStatus: type: string enum: - paused - active - will-pause - will-delete example: admin description: > Team Status: * `paused` - The team is paused * `active` - The team is active * `will-pause` - The team will be paused * `will-delete` - The team will be deleted UserType: type: string enum: - regular - admin example: admin description: > User Type: * `regular` - A user with regular permissions * `admin` - An admin UserStatus: type: string enum: - active - pending example: active description: > User Status: * `active` - The user is active * `pending` - The user has been invited UserOnlineStatus: type: string example: online enum: [online, offline] description: > User Online Status: * `online` - The user is actively using the Cinebody app * `offline` - The user is offline UserProjectStatus: type: string example: active enum: [active, inactive] description: > Available only when a project is specified User Project Status: * `active` - The user is on the project * `inactive` - The user has been blocked from contributing to the project OrganizationStatus: type: string enum: [active, freeTrialExpired, delinquent, inactive] example: active description: > Organization Status: * `active` - The organization is currently active * `freeTrialExpired` - The organization's free trial has expired * `delinquent` - The organization's last billing attempt failed * `inactive` - The organization does not have an active subscription OrganizationStorageStatus: type: string enum: [compliant, grace, locked] example: compliant description: > Storage Status: * `compliant` - The organization is in compliance with storage limits * `grace` - The organization is over their storage limit and using their grace storage * `locked` - The organization is over their storage limit and grace storage. Uploads are no longer possible ProjectType: type: string enum: - private - public example: public description: > Publish Status * `public` - The project is public and can be joined * `private` - The project is private and users must be added by admins ProjectStatus: type: string enum: - inactive - active - archived - upcoming example: active description: > Publish Status * `active` - The project is active and accepting clips * `inactive` - The project is not active * `upcoming` - The project has not yet started * `archived` - The project has been archived and is inactive ProjectPublishStatus: type: string enum: [unpublished, published, 'publishAll'] example: publishAll description: > Publish Status * `unpublished` - Clips are hidden from project users regardless of MediaFileStatus * `published` - Allow project users to view all approved clips * `publishAll` - Allow project users to view all clips that have not been rejected ProjectOrientation: type: string enum: [landscape, portrait] example: landscape description: > Project Orientation * `landscape` - The project should be filmed in landscape mode * `portrait` - The project should be filmed in portrait mode ProjectImageOrientation: type: string enum: - landscapeLeft - landscapeRight - portrait - upsideDown - landscape - portraitNoRotate example: landscapeLeft description: The direction of the project image. MediaFileOrientation: type: string enum: - landscapeLeft - landscapeRight - portrait - upsideDown - landscape - portraitNoRotate example: landscapeLeft description: The direction of the media file FilterUserType: type: string enum: [all, admin, teamAdmin] example: compliant description: > Filter Users By: * `all` - All organization and team admins * `admin` - Organization admins only * `teamAdmin` - Team admins only MediaFileFps: type: number enum: - 18 - 24 - 25 - 30 - 60 - 120 - 240 example: 30 description: > The FPS for a MediaFile MediaFileQuality: type: string enum: - 720 - 1080 - 4k example: 1080 description: > The video quality MediaFileVideoType: type: string enum: - full - sd example: full description: > Video Type: * `full` - The full, original video unaltered in it's original format * `sd` - Standard definition. This video is transcoded for better streaming playback and is lower quality. MediaFileStatus: type: string enum: - pending - approved - rejected example: approved description: > Video Type: * `pending` - The video has not been moderated * `approved` - An admin has reviewed this video and approved it * `rejected` - An admin has reviewed this video and rejected it ProjectsSortBy: type: string enum: [title, orientation, startAt, endAt] example: startAt TeamsSortBy: type: string enum: [name, status] example: name UsersSortBy: type: string enum: [firstName, lastName] example: firstName SortOrder: type: string enum: [asc, desc] example: asc NotificationType: type: string enum: - individualMessage - message - finalEdit - projectActive - projectCreated example: message description: > Notification type: * `individualMessage` - A message sent to a single user * `message` - A message sent to all the project users * `finalEdit` - A final edit has been posted * `projectActive` - A project was set to active * `projectCreated` - A project was created NotificationStatus: type: string enum: - pending - processing - sent - blocked - error example: pending description: > Notification Status: * `pending` - The notification has not yet been sent * `processing` - The notification send is in-progress * `sent` - The notification was sent and to the best of our knowledge delivered to the user. * `blocked` - The push notification was blocked by the user's preferences. The notification can still be accessed in-app * `error` - Something critical went wrong with sending the message # Attributes OrganizationAttribute: type: string enum: - id - status - storageStatus - name - profileImages - heroImages - isBilledOffline - storageChecked - customerId - addressName - addressLine1 - addressLine2 - addressCity - addressState - addressZip - addressCountry - lockedClipsAt - endFreeTrialAt - shouldAutoUpgrade - isLocked UserAttribute: type: string enum: - id - firstName - name - profileImages - userBio - lastName - email - status - profileImages - onlineStatus TeamAttribute: type: string enum: - id - name - profileImages - status - awsFolderName - heroImageUUID - heroImages - slug - pagePublished - OrganizationId - description - userCounts - teamClipCount - hasAnIncentive ProjectAttribute: type: string enum: - id - title - description - orientation - shootType - defaultImageUrl - profileImageUUID - profileImages - defaultImageOrientation - defaultImageIcon - publishStatus - type - joinCode - TeamId - OrganizationId - createdAt - updatedAt - teaserFileSize - teaserFileSizeSD - teaserThumbSize - teaserTranscoded - teaserTranscodingError - teaserFileUUID - teaserFileUUIDSD - teaserLengthSeconds - teaserUrl - teaserThumbnails - incentive - userCounts - mediaCounts - startAt - endAt - status - newStatus - isGeoVisible MediaFileAttribute: enum: - id - fileUUID - fileUUIDSD - thumbnailUUID - contentType - fileSize - fileSizeSD - thumbSize - lengthSeconds - description - isEdit - transcoded - transcodingError - shotInCaseMode - fps - quality - shotAt - favorite - thumbnails - orientation - TeamId - UserId - ProjectId - ShotId - createdAt - status - name - displayName - displayNameWithExtension - moderatedAt - editDescription - originalFileName - teamName - teamProfileImages - userName - userProfileImages ShotAttribute: enum: - id - title - description - orientation - fps - quality - order - hidden - fileSize - fileSizeSD - thumbSize - transcoded - transcodingError - fileUUID - fileUUIDSD - lengthSeconds - thumbnails - tutorialVideoUrl - ShotTypeId - TeamId - ProjectId ShotTypeAttributes: enum: - id - name - description - icon - fps - quality - defaultImageUrl - tutorialVideoUrl ProjectUploadType: enum: - clip - edit - shot - teaser example: clip ScheduledNotificationAttribute: enum: - id - emailMessage - pushMessage - read - isFromTeam - type - sendAt - status - imageUrl - data - ProjectId - TeamId - FromUserId - ToUserId - MediaFileId - createdAt # Errors ErrorBadRequest: type: object properties: status: type: string description: Will be set to 'failure' example: failure code: type: string description: The error code. Use this code to identify the specific error. example: NO_USER_SLOTS reason: type: string description: An error description for developers example: There are no more slots open on the team. The admin must remove users or upgrade the package. friendlyReason: type: string description: An end-user friendly message example: You've run out of user spots. Delete users or upgrade your package. ErrorNotAuthorized: type: object properties: status: type: string description: Will be set to 'failure' example: failure code: type: string description: The error code. Use this code to identify the specific error. example: APP_NOT_AUTHORIZED reason: type: string description: An error description for developers example: The app does not have permission to access that resource. friendlyReason: type: string description: An end-user friendly message example: Sorry, something went wrong. Please try again later. ErrorMissingParameters: type: object properties: status: type: string description: Will be set to 'failure' example: failure code: type: string description: The error code. Use this code to identify the specific error. example: MISSING_PARAMETERS reason: type: string description: An error description for developers example: The request parameters are missing something that is required friendlyReason: type: string description: An end-user friendly message example: Sorry, something went wrong. Please try again later. ErrorNotFound: type: object properties: status: type: string description: Will be set to 'failure' example: failure code: type: string description: The error code. Use this code to identify the specific error. example: ORGANIZATION_NOT_FOUND reason: type: string description: An error description for developers example: The organization was not found friendlyReason: type: string description: An end-user friendly message example: Sorry, something went wrong. Please try again later. ErrorServerError: type: object properties: status: type: string description: Will be set to 'failure' example: failure code: type: string description: The error code. Use this code to identify the specific error. example: SERVER_ERROR reason: type: string description: An error description for developers example: An unknown error occurred in the API. friendlyReason: type: string description: An end-user friendly message example: Something went wrong here. Please try again. APIVersion: type: object properties: apiVersion: type: string description: The current api version example: 3.26.1 parameters: limit: name: limit description: Limit the number of items returned in: query schema: type: integer minimum: 1 default: 10 format: int32 page: name: page description: The page of results to fetch. The first page is 0 in: query schema: type: integer minimum: 0 default: 0 format: int32 organizationAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/OrganizationAttribute' teamAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/TeamAttribute' projectAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/ProjectAttribute' userAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/UserAttribute' mediaFileAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/MediaFileAttribute' shotAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/ShotAttribute' shotTypeAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/ShotTypeAttributes' scheduledNotificationAttributes: name: attributes in: query description: Limit the response to specific attributes to reduce response size. Default is to return everything. schema: type: array items: $ref: '#/components/schemas/ScheduledNotificationAttribute' responses: 400: description: A bad request was made. Check the error code and parameters sent. content: application/json: schema: $ref: '#/components/schemas/ErrorBadRequest' 403: description: The app is not authorized to perform that action. content: application/json: schema: $ref: '#/components/schemas/ErrorNotAuthorized' 404: description: The resource was not found content: application/json: schema: $ref: '#/components/schemas/ErrorNotFound' 406: description: The request is missing required parameters. content: application/json: schema: $ref: '#/components/schemas/ErrorMissingParameters' 418: description: I'm a teapot content: application/json: schema: properties: isATeapot: type: boolean example: true description: Denotes whether I am in fact a teapot 500: description: The server encountered an unspecified error. This is a catch-all error. Check your request and parameters are valid. content: application/json: schema: $ref: '#/components/schemas/ErrorServerError' securitySchemes: APIKey: type: apiKey name: x-api-key in: header