Cube Company Groups API

The Company Groups API from Cube — 4 operation(s) for company groups.

OpenAPI Specification

cubesoftware-company-groups-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Cube Agents Company Groups API
  version: 1.0.0 (1.0)
  description: "#### General Description\nAn API to access underlying Cube functionality. These endpoints are the same endpoints\nthat support Cube's universal add-ons and a plethora of integrations meaning you'll be able to interact with your\nCube data in many powerful ways. Visit the API section of Cube's [Help Center](https://help.cubesoftware.com/hc/en-us/sections/18205290556180-Custom-Integrations)\nfor more usage guides on how you can use this API to integrate with Cube to accomplish various tasks!\n\n#### Versioning\nAll requests to the API require a version to be configured via an `Accept` Header. The value of this Header should look like this:\n```\nAccept: application/json; version=1.0\n```\nNote that the version number may differ depending on which version of the endpoint is needed.\n\n#### Response Structure\nThe general response structure of Cube's API endpoints will contain a `\"data\"` and `\"metadata\"` root level key:\n```json\n{\n    \"data\": { ... object data or list of objects ... },\n    \"metadata\": {\n        \"status\": 200,\n        \"message\": \"Potential message with additional context\",\n        \"error\": false,\n        \"code\": \"\"\n    }\n}\n```\n\n#### Rate Limiting\nAll endpoints have a rate limit configured, most of them default to 5/s.\nWhen the rate limit is encountered, a 429 HTTP code will be returned.\n\n#### Error Handling\nIn the event an error occurs, the response will typically look like this:\n```json\n{\n    \"data\": {},\n    \"metadata\": {\n        \"status\": 400,\n        \"message\": \"Some error message\",\n        \"error\": true,\n        \"code\": \"SOME_ERROR_CODE\"\n    }\n}\n```\n"
  termsOfService: https://www.cubesoftware.com/terms-of-service
servers:
- url: https://api.cubesoftware.com
  description: Production API URL
tags:
- name: Company Groups
paths:
  /company/groups:
    get:
      operationId: company_groups_list
      description: Lists all of the groups for the current user's company
      summary: List a company's groups
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/CompanyGroup'
          description: ''
    post:
      operationId: company_groups_create
      description: Create a new group for the current user's company
      summary: Create a group
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyGroup'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CompanyGroup'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CompanyGroup'
        required: true
      security:
      - OAuth2: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyGroup'
          description: ''
  /company/groups/{company_group_pk}/subcube-access-rules:
    get:
      operationId: company_groups_subcube_access_rules_list
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/SubcubeAccessRule'
          description: ''
    post:
      operationId: company_groups_subcube_access_rules_create
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
        required: true
      security:
      - OAuth2: []
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubcubeAccessRule'
          description: ''
  /company/groups/{company_group_pk}/subcube-access-rules/{id}:
    get:
      operationId: company_groups_subcube_access_rules_retrieve
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubcubeAccessRule'
          description: ''
    put:
      operationId: company_groups_subcube_access_rules_update
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/SubcubeAccessRule'
        required: true
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubcubeAccessRule'
          description: ''
    patch:
      operationId: company_groups_subcube_access_rules_partial_update
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedSubcubeAccessRule'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedSubcubeAccessRule'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedSubcubeAccessRule'
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubcubeAccessRule'
          description: ''
    delete:
      operationId: company_groups_subcube_access_rules_destroy
      description: Default authenticated ViewSet with standard rate limit (DEFAULT_API_RATE_LIMIT).
      parameters:
      - in: path
        name: company_group_pk
        schema:
          type: string
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '204':
          description: No response body
  /company/groups/{id}:
    get:
      operationId: company_groups_retrieve
      description: Retrieve a group for the company by its group ID
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyGroup'
          description: ''
    put:
      operationId: company_groups_update
      description: Update a group for the current user's company
      summary: Update a group
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyGroupOpenApiDoc_1'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CompanyGroupOpenApiDoc_1'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/CompanyGroupOpenApiDoc_1'
        required: true
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyGroup'
          description: ''
    patch:
      operationId: company_groups_partial_update
      description: Update a group for the current user's company
      summary: Update a subset of a group's fields
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedCompanyGroupOpenApiDoc_2'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedCompanyGroupOpenApiDoc_2'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedCompanyGroupOpenApiDoc_2'
      security:
      - OAuth2: []
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyGroup'
          description: ''
    delete:
      operationId: company_groups_destroy
      description: Delete a group for the current user's company
      summary: Delete a group
      parameters:
      - in: header
        name: X-Company-ID
        schema:
          type: string
        description: Associates request with company
        required: true
      - in: path
        name: id
        schema:
          type: string
        required: true
      tags:
      - Company Groups
      security:
      - OAuth2: []
      responses:
        '204':
          description: No response body
components:
  schemas:
    CompanyGroup:
      type: object
      description: 'This mixin is used to supplement the serializer with additional fields that are not provided in the request data

        for use in updating either the model being worked with OR any through tables that are used to join the model with

        a related model when the through table holds useful information.'
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type: string
          maxLength: 100
        company:
          type: string
          format: uuid
        type:
          allOf:
          - $ref: '#/components/schemas/CompanyGroupTypeEnum'
          default: feature
        active:
          type: boolean
        user_companies:
          type: string
        user_invitations:
          type: string
        created_by:
          type: integer
          nullable: true
        created_at:
          type: string
          format: date-time
          readOnly: true
        permissions:
          type: string
        permissionsets:
          type: string
        subcube_access_rules:
          type: array
          items:
            $ref: '#/components/schemas/SubcubeAccessRule'
        resolved_permissions:
          type: array
          items:
            type: integer
          readOnly: true
        resolved_permissionsets:
          type: array
          items:
            type: integer
          readOnly: true
        editable:
          type: boolean
          readOnly: true
      required:
      - company
      - created_at
      - editable
      - id
      - name
      - resolved_permissions
      - resolved_permissionsets
    CompanyGroupTypeEnum:
      enum:
      - feature
      - dimension
      type: string
      description: '* `feature` - Feature

        * `dimension` - Data'
    SubcubeAccessRule:
      type: object
      description: 'This mixin is used to supplement the serializer with additional fields that are not provided in the request data

        for use in updating either the model being worked with OR any through tables that are used to join the model with

        a related model when the through table holds useful information.'
      properties:
        id:
          type: integer
          readOnly: true
        company:
          type: string
          format: uuid
        company_group:
          type: integer
        dimensions:
          type: string
        write_access:
          type: boolean
        created_by:
          type: integer
        created_at:
          type: string
          format: date-time
          readOnly: true
        modified_by:
          type: integer
          nullable: true
        modified_at:
          type: string
          format: date-time
          readOnly: true
      required:
      - company
      - company_group
      - created_at
      - created_by
      - id
      - modified_at
    PatchedCompanyGroupOpenApiDoc_2:
      type: object
      properties:
        user_invitations:
          type: string
        user_companies:
          type: string
        permissions:
          type: string
        permissionsets:
          type: string
        subcube_access_rules:
          type: array
          items:
            $ref: '#/components/schemas/SubcubeAccessRule'
        name:
          type: string
          maxLength: 100
        active:
          type: boolean
    CompanyGroupOpenApiDoc_1:
      type: object
      properties:
        user_invitations:
          type: string
        user_companies:
          type: string
        permissions:
          type: string
        permissionsets:
          type: string
        subcube_access_rules:
          type: array
          items:
            $ref: '#/components/schemas/SubcubeAccessRule'
        name:
          type: string
          maxLength: 100
        active:
          type: boolean
      required:
      - name
    PatchedSubcubeAccessRule:
      type: object
      description: 'This mixin is used to supplement the serializer with additional fields that are not provided in the request data

        for use in updating either the model being worked with OR any through tables that are used to join the model with

        a related model when the through table holds useful information.'
      properties:
        id:
          type: integer
          readOnly: true
        company:
          type: string
          format: uuid
        company_group:
          type: integer
        dimensions:
          type: string
        write_access:
          type: boolean
        created_by:
          type: integer
        created_at:
          type: string
          format: date-time
          readOnly: true
        modified_by:
          type: integer
          nullable: true
        modified_at:
          type: string
          format: date-time
          readOnly: true
  securitySchemes:
    OAuth2:
      type: oauth2
      flows:
        authorizationCode:
          authorizationUrl: https://portal.cubesoftware.com/o/authorize/
          tokenUrl: https://api.cubesoftware.com/o/token/
          scopes: {}
      description: Standard Cube OAuth 2.0 flow