Cloud Academy Organizations API

The Organizations API from Cloud Academy — 5 operation(s) for organizations.

OpenAPI Specification

cloud-academy-organizations-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  title: QA Learning Management System Organizations API
  description: "\n## Keys for QA API\n\nQA uses API keys to authenticate calls to its API.\n\nThe Authentication used is OAuth2 with client credential flow; Note that the SSL channel securely encrypts your keys pair.\n\n## How to find or generate Your API Key\n\nFor integrating with the QA API, you need to generate an API key pairs. Enterprise members with Admin permissions can generate and view their own API keys on the settings area of their Company Account [here](https://platform.qa.com/organizations/settings/api/).\n\nNote that each admin comes with his distinct API keys pair.\n\n## Revoking and Regenerating an API keys pair\n\nAt any time, an admin can generate new API keys pairs; by going through this step, the previous keys pair is revoked.\n\n## How to authenticate API calls using the keys pair\n\nIn order to authenticate API calls each request needs to provide a valid access token. \n\nTo generate a token, a dedicated endpoint exists:\n\n__https://platform.qa.com/oauth2/token/__\n\nThe token generation endpoint accepts a POST call and works using Basic Authentication where the user and the password to be provided are the API keys:\n\nusername is the CLIENT_ID\npassword is the CLIENT_SECRET\n\nIn addition to requiring the CLIENT_ID and CLIENT_SECRET for the authorization header, the API also requires the content-type to be set to 'application/x-www-form-urlencoded' and the body must contain 'grant_type=client_credentials'.\n\nThis is an example of the token generation in cURL:\n\n```bash\ncurl 'https://platform.qa.com/oauth2/token/' \n  -H 'accept: application/json'\n  -H 'authorization: Basic [YOUR_CLIENT_ID:YOUR_CLIENT_SECRET]'\n  -H 'content-type: application/x-www-form-urlencoded'\n  --data-raw 'grant_type=client_credentials'\n```\n\nThe token has a limited duration of 10 hours, so it could be cached to be reused and renewed when it expires, but it is also perfectly fine to generate a new one before each API call.\n\n## Get Help\nIn case of issues, more info can be found in the following [article](https://support.cloudacademy.com/hc/en-us/articles/360040446031-Cloud-Academy-API)\n"
  version: v1
host: platform.qa.com
basePath: /restapi
schemes:
- https
consumes:
- application/json
produces:
- application/json
security:
- oauth2: []
tags:
- name: Organizations
paths:
  /v1/organizations/accounts/members/:
    parameters: []
    delete:
      operationId: v1_organizations_accounts_members
      summary: Remove members from the company
      description: '

        ## Description


        This endpoint removes members from a company in a single operation.

        Given a list of emails, it removes all members from the company.


        In case of errors, like wrong email or already deleted members, the request is discarded and no member is deleted.

        We suggest to use maximum 25 users per request.

        '
      parameters:
      - name: data
        in: body
        required: true
        schema:
          title: body
          required:
          - data
          type: object
          properties:
            data:
              title: data
              required:
              - attributes
              - type
              type: object
              properties:
                attributes:
                  title: attributes
                  required:
                  - email_list
                  type: object
                  properties:
                    email_list:
                      title: email_list
                      type: array
                      items:
                        type: string
                        format: email
                type:
                  title: type
                  type: string
                  example: bulk_member_remove
      responses:
        '400':
          description: Bad request, incorrect email address or the user does not belong to this company.
          examples:
            body:
              errors:
              - detail: 'invalid-member-deletion: user@email.com'
                source:
                  pointer: /data
                status: '400'
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
        '409':
          description: Missing JSON-API type attribute.
          examples:
            body:
              errors:
              - detail: The resource object's type (None) is not the type that constitute the collection represented by the endpoint (bulk_member_remove).
                source:
                  pointer: /data
                status: '409'
        '204':
          description: Members have been removed from the company.
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
  /v1/organizations/accounts/teams/:
    parameters: []
    get:
      operationId: v1_organizations_accounts_teams_list
      summary: List all teams
      description: '

        ## Description


        This endpoint returns a list that contains all teams of the company.



        ## Sorting

        It''s possible to sort on the following fields:


        * name


        By default results are ordered in ascending order, for descending descending put a ''-'' before the field.

        '
      parameters:
      - name: sort
        in: query
        description: Which field to use when ordering the results.
        required: false
        type: string
      - name: page[number]
        in: query
        description: A page number within the paginated result set.
        required: false
        type: integer
      - name: page[size]
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                type: array
                items:
                  required:
                  - attributes
                  - type
                  - id
                  type: object
                  properties:
                    attributes:
                      title: attributes
                      required: []
                      type: object
                      properties:
                        creation_date:
                          title: creation_date
                          type: string
                          format: date-time
                        description:
                          title: description
                          type: string
                        name:
                          title: name
                          type: string
                    id:
                      title: id
                      type: string
                    links:
                      title: links
                      type: object
                      properties:
                        self:
                          title: schema
                          type: string
                          format: uri
                    type:
                      title: type
                      type: string
                      example: team
              links:
                title: links
                type: object
                properties:
                  first:
                    title: first
                    type: string
                    format: uri
                  last:
                    title: last
                    type: string
                    format: uri
                  next:
                    title: next
                    type: string
                    format: uri
                  prev:
                    title: prev
                    type: string
                    format: uri
              meta:
                title: meta
                type: object
                properties:
                  pagination:
                    title: pagination
                    type: object
                    properties:
                      count:
                        title: count
                        type: integer
                        format: int32
                      page:
                        title: page
                        type: integer
                        format: int32
                      pages:
                        title: pages
                        type: integer
                        format: int32
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
    post:
      operationId: v1_organizations_accounts_teams_create
      summary: Create a new team
      description: '

        ## Description


        This endpoint creates a new team inside the company.

        '
      parameters:
      - name: data
        in: body
        required: true
        schema:
          title: body
          required:
          - data
          type: object
          properties:
            data:
              title: data
              required:
              - attributes
              - type
              type: object
              properties:
                attributes:
                  title: attributes
                  required:
                  - name
                  type: object
                  properties:
                    description:
                      title: description
                      type: string
                    name:
                      title: name
                      type: string
                links:
                  title: links
                  type: object
                  properties:
                    self:
                      title: schema
                      type: string
                      format: uri
                type:
                  title: type
                  type: string
                  example: team
      responses:
        '400':
          description: Bad request, invalid or missing data
          examples:
            body:
              errors:
              - detail: '{error-message}'
                source:
                  pointer: /data
                status: '400'
              - detail: '{error-message}'
                source:
                  pointer: /data/attributes/name
                status: '400'
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '409':
          description: Missing JSON-API type attribute.
          examples:
            body:
              errors:
              - detail: The resource object's type (None) is not the type that constitute the collection represented by the endpoint (team).
                source:
                  pointer: /data
                status: '409'
        '201':
          description: Team created
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                required:
                - attributes
                - type
                - id
                type: object
                properties:
                  attributes:
                    title: attributes
                    required: []
                    type: object
                    properties:
                      creation_date:
                        title: creation_date
                        type: string
                        format: date-time
                      description:
                        title: description
                        type: string
                      name:
                        title: name
                        type: string
                  id:
                    title: id
                    type: string
                  links:
                    title: links
                    type: object
                    properties:
                      self:
                        title: schema
                        type: string
                        format: uri
                  type:
                    title: type
                    type: string
                    example: team
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
  /v1/organizations/accounts/teams/{id}/:
    parameters:
    - name: id
      in: path
      required: true
      type: string
    get:
      operationId: v1_organizations_accounts_teams_read
      summary: Get details of a team
      description: '

        ## Description


        This endpoint returns the detail of a specific team.

        '
      parameters: []
      responses:
        '200':
          description: ''
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                required:
                - attributes
                - type
                - id
                type: object
                properties:
                  attributes:
                    title: attributes
                    required: []
                    type: object
                    properties:
                      creation_date:
                        title: creation_date
                        type: string
                        format: date-time
                      description:
                        title: description
                        type: string
                      name:
                        title: name
                        type: string
                  id:
                    title: id
                    type: string
                  links:
                    title: links
                    type: object
                    properties:
                      self:
                        title: schema
                        type: string
                        format: uri
                  type:
                    title: type
                    type: string
                    example: team
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '404':
          description: Team not found
          examples:
            body:
              errors:
              - detail: Not found.
                source:
                  pointer: /data
                status: '404'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
    patch:
      operationId: v1_organizations_accounts_teams_partial_update
      summary: Update a team
      description: '

        ## Description


        This endpoint updates the detail of a specific team.

        '
      parameters:
      - name: data
        in: body
        required: true
        schema:
          title: body
          required:
          - data
          type: object
          properties:
            data:
              title: data
              required:
              - attributes
              - type
              - id
              type: object
              properties:
                attributes:
                  title: attributes
                  required:
                  - name
                  - description
                  type: object
                  properties:
                    description:
                      title: description
                      type: string
                    name:
                      title: name
                      type: string
                id:
                  title: id
                  type: string
                type:
                  title: type
                  type: string
                  example: team
      responses:
        '400':
          description: Bad request, invalid or missing data
          examples:
            body:
              errors:
              - detail: '{error-message}'
                source:
                  pointer: /data
                status: '400'
              - detail: '{error-message}'
                source:
                  pointer: /data/attributes/name
                status: '400'
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '404':
          description: Team not found
          examples:
            body:
              errors:
              - detail: 'Invalid team_id id: {id} - '
                source:
                  pointer: /data
                status: '404'
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
        '200':
          description: ''
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                required:
                - attributes
                - type
                - id
                type: object
                properties:
                  attributes:
                    title: attributes
                    required: []
                    type: object
                    properties:
                      creation_date:
                        title: creation_date
                        type: string
                        format: date-time
                      description:
                        title: description
                        type: string
                      name:
                        title: name
                        type: string
                  id:
                    title: id
                    type: string
                  links:
                    title: links
                    type: object
                    properties:
                      self:
                        title: schema
                        type: string
                        format: uri
                  type:
                    title: type
                    type: string
                    example: team
        '409':
          description: Missing JSON-API type attribute.
          examples:
            body:
              errors:
              - detail: The resource object's type (None) is not the type that constitute the collection represented by the endpoint (team).
                source:
                  pointer: /data
                status: '409'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
    delete:
      operationId: v1_organizations_accounts_teams_delete
      summary: Delete a team
      description: '

        ## Description


        This endpoint deletes a specific team from the company.

        '
      parameters: []
      responses:
        '204':
          description: Team has been removed from the company.
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
        '404':
          description: Team not found
          examples:
            body:
              errors:
              - detail: 'Invalid team_id id: {id} - '
                source:
                  pointer: /data
                status: '404'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
  /v1/organizations/accounts/teams/{id}/members/:
    parameters:
    - name: id
      in: path
      required: true
      type: string
    get:
      operationId: v1_organizations_accounts_teams_members_read
      summary: List members of a team
      description: '

        ## Description


        This endpoint returns the list of members of the specified team.


        ## Sorting

        It''s possible to sort on the following fields:


        * role

        * first_name

        * last_name

        * email


        By default results are ordered in ascending order, for descending descending put a ''-'' before the field.

        '
      parameters:
      - name: sort
        in: query
        description: Which field to use when ordering the results.
        required: false
        type: string
      - name: page[number]
        in: query
        description: A page number within the paginated result set.
        required: false
        type: integer
      - name: page[size]
        in: query
        description: Number of results to return per page.
        required: false
        type: integer
      responses:
        '200':
          description: ''
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                type: array
                items:
                  required:
                  - attributes
                  - type
                  - id
                  type: object
                  properties:
                    attributes:
                      title: attributes
                      required: []
                      type: object
                      properties:
                        email:
                          title: email
                          type: string
                          format: email
                        first_name:
                          title: first_name
                          type: string
                        job_role:
                          title: job_role
                          type: string
                        last_name:
                          title: last_name
                          type: string
                        role:
                          title: role
                          type: string
                        user_id:
                          title: user_id
                          type: string
                    id:
                      title: id
                      type: string
                    type:
                      title: type
                      type: string
                      example: team_membership
              links:
                title: links
                type: object
                properties:
                  first:
                    title: first
                    type: string
                    format: uri
                  last:
                    title: last
                    type: string
                    format: uri
                  next:
                    title: next
                    type: string
                    format: uri
                  prev:
                    title: prev
                    type: string
                    format: uri
              meta:
                title: meta
                type: object
                properties:
                  pagination:
                    title: pagination
                    type: object
                    properties:
                      count:
                        title: count
                        type: integer
                        format: int32
                      page:
                        title: page
                        type: integer
                        format: int32
                      pages:
                        title: pages
                        type: integer
                        format: int32
        '401':
          description: Executing the request without credentials.
          examples:
            body:
              errors:
              - detail: Authentication credentials were not provided.
                source:
                  pointer: /data
                status: '401'
        '404':
          description: Team not found
          examples:
            body:
              errors:
              - detail: 'Invalid team_id id: {id} - '
                source:
                  pointer: /data
                status: '404'
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '503':
          description: Service unavailable.
          examples:
            body:
              errors:
              - detail: The service is temporary unavailable. Please try again later.
                source:
                  pointer: /data
                status: '503'
      consumes:
      - application/vnd.api+json
      produces:
      - application/vnd.api+json
      tags:
      - Organizations
    post:
      operationId: v1_organizations_accounts_teams_members_create
      summary: Add members to a team
      description: '

        ## Description


        This endpoint adds member to a specific team of the company

        Given a list of basic member information (emails, first name and last name), for each entity:


        * it adds the members to the team if he/she is already a member the company.

        * it creates a new member and add he/she to the team if there isn''t already a member with the same email in the company.


        All user created will have ''Member'' as role.


        In case of errors, like wrong email or missing data, all request is discarded and no member is created.


        This endpoint accepts only one request per minute. See the responses for more information.

        '
      parameters:
      - name: data
        in: body
        required: true
        schema:
          title: body
          required:
          - data
          type: object
          properties:
            data:
              title: data
              required:
              - attributes
              - type
              type: object
              properties:
                attributes:
                  title: attributes
                  required:
                  - members
                  type: object
                  properties:
                    members:
                      type: array
                      items:
                        required:
                        - email
                        - first_name
                        - last_name
                        type: object
                        properties:
                          email:
                            title: email
                            type: string
                            format: email
                          first_name:
                            title: first_name
                            type: string
                          last_name:
                            title: last_name
                            type: string
                type:
                  title: type
                  type: string
                  example: bulk_member_import
      responses:
        '500':
          description: Internal server error.
          examples:
            body:
              errors:
              - detail: Internal server error.
                source:
                  pointer: /data
                status: '500'
        '201':
          description: Members created
          schema:
            title: body
            required:
            - data
            type: object
            properties:
              data:
                title: data
                required:
                - attributes
                - type
                - id
                type: object
                properties:
                  attributes:
                    title: attributes
                    required: []
                    type: object
                    properties:
                      general_error:
                        title: general_error
                        type: string
                      members:
                        type: array
                        items:
                          required: []
                          type: object
                          properties:
                            email:
                              title: email
                              type: string
                              format: 

# --- truncated at 32 KB (43 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/cloud-academy/refs/heads/main/openapi/cloud-academy-organizations-api-openapi.yml