Snow Software Subscriptions API

The Subscriptions API from Snow Software — 4 operation(s) for subscriptions.

OpenAPI Specification

snow-software-subscriptions-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: 'SAM: Computers Applications Subscriptions API'
  description: API for interacting with computers.
  contact:
    name: Flexera
    url: https://www.flexera.com
  version: 1.0.0
servers:
- url: https://{region}.snowsoftware.io
  variables:
    region:
      enum:
      - westeurope
      - australiasoutheast
      - eastus2
      - uksouth
      default: westeurope
tags:
- name: Subscriptions
paths:
  /api/saas/consolidated-view/v1/subscriptions/{subscriptionId}/insights/{insightRuleId}/users:
    get:
      summary: Get Subscription Insight Users
      description: Returns a collection of users for a subscription insight.
      operationId: getSaasConsolidatedViewV1ApplicationsIdInsightsInsightruleidUsers
      responses:
        '200':
          description: 'OK: Your request succeeded.'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SubscriptionInsightUsersResponse'
        '400':
          $ref: '#/components/responses/400Response'
        '404':
          $ref: '#/components/responses/404Response'
        '500':
          $ref: '#/components/responses/500Response'
      parameters:
      - $ref: '#/components/parameters/SubscriptionIdPath'
      - $ref: '#/components/parameters/InsightRuleIdPath'
      - $ref: '#/components/parameters/PageNumberQuery'
      - $ref: '#/components/parameters/PageSizeQuery'
      - $ref: '#/components/parameters/FilterQuery'
      - $ref: '#/components/parameters/SortQuery'
      security:
      - bearerAuth:
        - saas.consolidation.view.r
      tags:
      - Subscriptions
  /api/saas/consolidated-view/v1/subscriptions/{subscriptionId}/users/{userIds}:
    delete:
      summary: Delete Subscription Users
      description: Removes the given one or more assigned users from a subscription.
      operationId: deleteSaasConsolidatedViewV1UsersDelete
      parameters:
      - $ref: '#/components/parameters/SubscriptionIdPath'
      - $ref: '#/components/parameters/UserIdsPath'
      responses:
        '204':
          $ref: '#/components/responses/204Response'
        '400':
          $ref: '#/components/responses/400Response'
        '404':
          $ref: '#/components/responses/404Response'
        '500':
          $ref: '#/components/responses/500Response'
      security:
      - bearerAuth:
        - saas.consolidation.view.crud
      tags:
      - Subscriptions
  /api/saas/consolidated-view/v1/subscriptions/{subscriptionId}/users:
    get:
      summary: Get Subscription Users
      description: Returns a collection of users assigned to a subscription.
      operationId: getSubscriptionUsers
      parameters:
      - $ref: '#/components/parameters/SubscriptionIdPath'
      - $ref: '#/components/parameters/PageNumberQuery'
      - $ref: '#/components/parameters/PageSizeQuery'
      responses:
        '200':
          description: 'OK: Your request succeeded.'
          content:
            application/json:
              schema:
                required:
                - pagination
                - items
                properties:
                  pagination:
                    $ref: '#/components/schemas/PaginationResponse'
                  items:
                    type: array
                    description: A collection of subscription users.
                    items:
                      $ref: '#/components/schemas/SubscriptionUser'
        '400':
          $ref: '#/components/responses/400Response'
        '404':
          $ref: '#/components/responses/404Response'
        '500':
          $ref: '#/components/responses/500Response'
      security:
      - bearerAuth:
        - saas.consolidation.view.r
      tags:
      - Subscriptions
  /api/saas/consolidated-view/v1/subscriptions/{subscriptionId}/users/consumption:
    get:
      summary: Get Subscription User Consumptions
      description: Returns a collection of subscription users and their consumption details.
      operationId: getSaasConsolidatedViewV1SubscriptionUsersConsumption
      parameters:
      - $ref: '#/components/parameters/SubscriptionIdPath'
      - $ref: '#/components/parameters/PageNumberQuery'
      - $ref: '#/components/parameters/PageSizeQuery'
      - $ref: '#/components/parameters/FilterQuery'
      - $ref: '#/components/parameters/SortQuery'
      responses:
        '200':
          description: 'OK: Your request succeeded.'
          content:
            application/json:
              schema:
                required:
                - pagination
                - items
                properties:
                  pagination:
                    $ref: '#/components/schemas/PaginationResponse'
                  items:
                    description: A collection of Users Consumption.
                    type: array
                    items:
                      $ref: '#/components/schemas/SubscriptionUserConsumption'
        '400':
          $ref: '#/components/responses/400Response'
        '404':
          $ref: '#/components/responses/404Response'
        '500':
          $ref: '#/components/responses/500Response'
      security:
      - bearerAuth:
        - saas.consolidation.view.r
      tags:
      - Subscriptions
components:
  parameters:
    PageNumberQuery:
      name: page_number
      description: The page number.
      in: query
      schema:
        type: integer
        format: int32
        default: 1
    FilterQuery:
      name: filter
      in: query
      description: For more information on the available operators and which data types those operators work on, see [Filter API call results](https://docs.snowsoftware.io/snow-atlas-api/resources/get-started-with-apis/api-conventions#filter-api-call-results).
      required: false
      schema:
        type: string
        example: ?filter=field1 -eq 'abc'
    PageSizeQuery:
      name: page_size
      description: The maximum number of items in the response.
      in: query
      schema:
        type: integer
        format: int32
        default: 100
    UserIdsPath:
      in: path
      name: userIds
      required: true
      description: The unique ID of the of the subscriptions.
      schema:
        type: array
        items:
          type: string
        example:
        - d69809c5-e4c0-4d22-be9f-f541f6a265ee
        - f90eeb4b-614b-432c-b506-4203a2db60c8
    SortQuery:
      name: sort
      in: query
      description: For more information on sorting capability and examples, see [Sort API call results](https://docs.snowsoftware.io/snow-atlas-api/resources/get-started-with-apis/api-conventions#sort-api-call-results).
      required: false
      schema:
        type: string
        example: ?sort=field1:asc
    InsightRuleIdPath:
      name: insightRuleId
      in: path
      required: true
      schema:
        type: string
      example: 577ee610-95f2-4883-abaa-d702e73c3a10
      description: The unique ID of the insight.
    SubscriptionIdPath:
      in: path
      name: subscriptionId
      required: true
      schema:
        type: string
      example: a7a75b83-2690-4cc9-b652-a0fbe93dba4a
      description: The unique ID of the subscription.
  schemas:
    ErrorValidationResponse:
      title: ErrorValidationResponse
      description: Bad Request - Your request is invalid or improperly formed. Consequently, the API server could not understand your request.
      type: object
      properties:
        error:
          $ref: '#/components/schemas/ValidationError'
      required:
      - error
    ValidationError:
      type: object
      description: Validation error.
      properties:
        code:
          type: integer
          description: The HTTP status code.
          format: int32
          example: 400
        message:
          type: string
          description: The error message.
          example: Filter field name needs to be formatted as a string.
      required:
      - code
      - message
    SubscriptionUserConsumption:
      title: SubscriptionUserConsumption
      type: object
      properties:
        activityThreshold:
          type: integer
          format: int32
          example: 10
          description: Number of activity Threshold.
        country:
          description: Name of the country.
          example: India
          type: string
        createdDate:
          type: string
          format: date
          description: Date of created Date.
          example: '2024-10-01'
        department:
          type: string
          description: Department of the user.
          example: Sales
        id:
          description: The unique ID of the subscription.
          example: ac2c7870-6457-4a99-bafb-467eaf5de8e4
          type: string
        discoveryTypes:
          type: array
          description: A collection of discovery types.
          items:
            type: integer
            format: int32
            example: 1
        displayName:
          type: string
          description: Display name of the user.
          example: John Doe.
        email:
          description: The email address of the user.
          example: john.doe@organization.com
          type: string
        isEnabled:
          example: true
          description: '```true``` if user should be Enabled; otherwise, ```false```.'
          type: boolean
        isInReview:
          type: boolean
          description: '```true``` if user should be reviewed; otherwise, ```false```.'
          example: true
        isMonitored:
          example: true
          description: '```true``` if user should be Monitored; otherwise, ```false```.'
          type: boolean
        isOnline:
          type: boolean
          description: '```true``` if user should be online; otherwise, ```false```.'
          example: true
        isQualified:
          description: '```true``` if user should be Qualified; otherwise, ```false```.'
          example: true
          type: boolean
        lastActive:
          type: string
          format: date-time
          description: Time of last user activity in relevant applications.
          example: '2030-01-02T15:04:05'
        lastActiveValueInInt:
          type: integer
          format: int32
          example: 1
          description: Last active value in int.
        lastActiveValueType:
          type: integer
          description: User last active value type.
          example: 5
        licenseCount:
          type: integer
          format: int32
          description: Count of all licences.
          example: 10
        manuallyAssigned:
          example: true
          description: '```true``` if user should be manuallyAssigned; otherwise, ```false```.'
          type: boolean
        potentialSavings:
          description: The monthly subscription costs for users who are inactive or have no activity.
          example: 500
          type: number
          format: double
        roles:
          type: array
          items:
            type: string
          description: The list of roles user is assigned to.
          example:
          - GCS Support Engineer
        status:
          type: string
          description: Status of the user.
          example: Active
        userCostPerMonth:
          description: The monthly cost of the user entitlements.
          example: 1000
          type: number
          format: double
        username:
          description: The user name.
          example: john.doe@organization.com
          type: string
        envelopeusage:
          description: The usage of the subscription by the user.
          type: integer
          format: int32
          example: 2
      required:
      - activityThreshold
      - country
      - createdDate
      - id
      - department
      - discoveryTypes
      - displayName
      - email
      - isEnabled
      - isInReview
      - isMonitored
      - isOnline
      - isQualified
      - lastActive
      - lastActiveValueInInt
      - lastActiveValueType
      - licenseCount
      - manuallyAssigned
      - potentialSavings
      - role
      - status
      - userCostPerMonth
      - username
      - envelopeusage
    ErrorResponse:
      description: Internal Server Error - Your request failed due to an internal error.
      type: object
      properties:
        error:
          $ref: '#/components/schemas/InternalError'
      required:
      - error
    NotFoundResponse:
      description: The requested resource could not be found.
      type: object
      properties:
        error:
          $ref: '#/components/schemas/NotFoundError'
      required:
      - error
    InternalError:
      type: object
      description: Internal error.
      properties:
        code:
          type: integer
          description: The HTTP status code.
          format: int32
          example: 500
        message:
          type: string
          description: The error message.
          example: The service encountered an unexpected condition that prevented it from fulfilling the request.
      required:
      - code
      - message
    NotFoundError:
      type: object
      description: Not found error.
      properties:
        code:
          type: integer
          description: The HTTP status code.
          format: int32
          example: 404
        message:
          type: string
          description: The error message.
          example: Resource with ID '32aeda0a-80dc-475a-907f-2d250a3a8614' not found.
      required:
      - code
      - message
    SubscriptionUser:
      title: User
      description: A discovered user in your SaaS estate.
      type: object
      properties:
        country:
          description: The country of the user.
          example: Japan
          type: string
        createdDate:
          description: The date the user was created.
          example: '2024-05-25T00:00:00Z'
          type: string
          format: date-time
        department:
          description: The department of the user.
          example: Engineering
          type: string
        discoveryTypes:
          description: The unique IDs of the discovery source types where the user was detected. For information on discovery source types, see https://docs.snowsoftware.io/snow-atlas/user-documentation/saas/saas-discovery#discovery-sources.
          example:
          - 1
          - 2
          x-enumDescriptions:
            '0': SaaS connector - Represents integration with SaaS applications for automated data collection and management.
            '1': Manually added - Indicates resources or applications manually added by users without automated discovery.
            '2': Browser unverified - Refers to browser-based applications that have not been verified for compliance or usage.
            '3': SSO - Represents Single Sign-On integrations for centralized user authentication.
            '4': Device - Refers to physical or virtual devices managed within the IT environment.
            '7': Browser verified - Denotes browser-based applications that have been verified for compliance or usage.
            '8': CASB - Represents Cloud Access Security Broker integrations to enhance cloud security and compliance.
          type: array
          items:
            type: integer
            format: int32
        displayName:
          description: The display name of the user.
          example: John Doe
          type: string
        email:
          description: The email address of the user.
          example: john.doe@organization.com
          type: string
        id:
          description: The unique ID of the user.
          example: 2f86b198-04f3-4770-ad08-b32518206da0
          type: string
        isEnabled:
          description: '```true``` if the enabled state of the user in the discovery source is true.; otherwise, ```false```.'
          example: true
          type: boolean
        isInReview:
          description: '```true``` if user has been marked as one to be analyzed further, or as a reminder for taking action on their subscriptions; otherwise, ```false```.'
          example: true
          type: boolean
        isOnline:
          description: '```true``` if user has been marked as a SaaS user; who does not have a device that is inventoried in your organization. This is common for, for example, consultants and other temporary staff; otherwise, ```false```.'
          example: true
          type: boolean
        isQualified:
          description: '```true``` if has been marked to be included in Snow''s services which incur a cost; otherwise, ```false```.'
          example: true
          type: boolean
        lastActive:
          description: The date of last user activity in relevant applications.
          example: '2024-06-28T00:00:00Z'
          type: string
          format: date-time
        licenseCount:
          description: The number of subscription types assigned to the user.
          example: 5
          type: integer
          format: int32
        potentialSavings:
          description: The monthly subscription costs for users who are inactive or have no activity.
          example: 500
          type: number
          format: double
        status:
          description: The activity status of the user in relevant applications.
          example: Active
          type: string
        userCostPerMonth:
          description: The monthly cost of the user's subscription entitlements.
          example: 1000
          type: number
          format: double
        username:
          description: The username of the user.
          example: john.doe_1@org.com
          type: string
        employmentStatus:
          description: The employment status of the user.
          example: Employed
          type: string
      required:
      - id
      - country
      - discoveryTypes
      - isInReview
      - isQualified
      - status
      - email
      - department
      - createdDate
      - lastActive
      - userCostPerMonth
      - potentialSavings
      - displayName
      - username
      - licenseCount
      - isOnline
    PaginationResponse:
      description: The pagination details.
      type: object
      required:
      - page_size
      - page_number
      properties:
        page_size:
          type: integer
          description: The page size you requested.
          example: 100
        page_number:
          type: integer
          format: int64
          description: The page number you requested.
          example: 1
        total_pages:
          type: integer
          format: int64
          description: The total number of pages.
          example: 1
        total_items:
          type: integer
          format: int64
          description: The total number of items.
          example: 1
    SubscriptionInsightsUserDetail:
      title: SubscriptionInsightsUserDetail
      type: object
      properties:
        lastActive:
          description: The date of last user activity in relevant subscription or application.
          type: string
          format: date-time
        subscriptionId:
          description: The unique ID of the subscription.
          type: string
          example: 1519f3e3-7e5a-466b-8a86-63ed2776f819
        subscriptionName:
          description: The name of the subscription.
          type: string
          example: Microsoft 365 E5
        applicationId:
          description: The unique ID of the application.
          type: string
          example: 3519f3f3-7e5a-e66b-8a86-63ed2776f618
        applicationName:
          description: The name of the application.
          type: string
          example: Microsoft Power BI
      required:
      - subscriptionId
      - subscriptionName
      - lastActive
    SubscriptionInsightUsersResponse:
      title: SubscriptionInsightUsersResponse
      description: A collection of users that relate to a subscription insight.
      type: object
      properties:
        items:
          description: A collection of the requested paginated items.
          type: array
          items:
            allOf:
            - $ref: '#/components/schemas/SubscriptionUser'
            - properties:
                details:
                  type: array
                  description: A collection of the user's subscriptions that related to the insight.
                  items:
                    $ref: '#/components/schemas/SubscriptionInsightsUserDetail'
              required:
              - details
        pagination:
          $ref: '#/components/schemas/PaginationResponse'
      required:
      - items
      - pagination
  responses:
    400Response:
      description: 'Bad Request: Your request is invalid or improperly formed. Consequently, the API server could not understand your request.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorValidationResponse'
    500Response:
      description: 'Internal Server Error: Your request failed due to an internal error.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    204Response:
      description: 'No Content: Your request succeeded, but the response message was empty.'
    404Response:
      description: 'Not Found: The operation you requested failed because a resource associated with your request could not be found.'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/NotFoundResponse'
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT