JumpCloud App Catalog API

The App Catalog API from JumpCloud — 2 operation(s) for app catalog.

GitHub OpenAPI

Operations 2

GET /software/catalog/apps List the App Catalog #
GET /software/catalog/apps/{objectId} Get an App Catalog Item #

Specifications

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/jumpcloud:jumpcloud-app-catalog-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

jumpcloud-app-catalog-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  contact:
    name: JumpCloud Support
    url: https://jumpcloud.com/support/contact-jumpcloud-support
  description: '# Overview


    JumpCloud''s V2 API. This set of endpoints allows JumpCloud customers to manage objects, groupings and mappings and interact with the JumpCloud Graph. > **Note:** See JumpCloud Data Centers: Login URLs and Service Endpoints to learn more. ## API Best Practices


    Read the linked Help Article below for guidance on retrying failed requests to JumpCloud''s REST API, as well as best practices for structuring subsequent retry requests. Customizing retry mechanisms based on these recommendations will increase the reliability and dependability of your API calls. Covered topics include:

    1. Important Considerations

    2. Supported HTTP Request Methods

    3. Response codes

    4. API Key rotation

    5. Paginating

    6. Error handling

    7. Retry rates


    JumpCloud Help Center - API Best Practices


    # Directory Objects


    This API offers the ability to interact with some of our core features; otherwise known as Directory Objects. The Directory Objects are:


    * Commands

    * Policies

    * Policy Groups

    * Applications

    * Systems

    * Users

    * User Groups

    * System Groups

    * Radius Servers

    * Directories: Office 365, LDAP,G-Suite, Active Directory

    * Duo accounts and applications. The Directory Object is an important concept to understand in order to successfully use JumpCloud API. ## JumpCloud Graph


    We''ve also introduced the concept of the JumpCloud Graph along with Directory Objects. The Graph is a powerful aspect of our platform which will enable you to associate objects with each other, or establish membership for certain objects to become members of other objects. Specific `GET` endpoints will allow you to traverse the JumpCloud Graph to return all indirect and directly bound objects in your organization. | !alt text |

    |:--:|

    | **This diagram highlights our association and membership model as it relates to Directory Objects.** |


    # API Key


    ## Access Your API Key


    To locate your API Key:


    1. Log into the JumpCloud Admin Console. 2. Go to the username drop down located in the top-right of the Console. 3. Retrieve your API key from API Settings. ## API Key Considerations


    This API key is associated to the currently logged in administrator. Other admins will have different API keys. **WARNING** Please keep this API key secret, as it grants full access to any data accessible via your JumpCloud console account. You can also reset your API key in the same location in the JumpCloud Admin Console. ## Recycling or Resetting Your API Key


    In order to revoke access with the current API key, simply reset your API key. This will render all calls using the previous API key inaccessible. Your API key will be passed in as a header with the header name "x-api-key". ```bash

    curl -H "x-api-key: [YOUR_API_KEY_HERE]" "https://console.jumpcloud.com/api/v2/systemgroups"

    ```


    # System Context


    * Introduction

    * Supported endpoints

    * Response codes

    * Authentication

    * Additional examples

    * Third party


    ## Introduction


    JumpCloud System Context Authorization is an alternative way to authenticate with a subset of JumpCloud''s REST APIs. Using this method, a system can manage its information and resource associations, allowing modern auto provisioning environments to scale as needed. **Notes:**


    * The following documentation applies to Linux Operating Systems only. * Systems that have been automatically enrolled using Apple''s Device Enrollment Program (DEP) or systems enrolled using the User Portal install are not eligible to use the System Context API to prevent unauthorized access to system groups and resources. If a script that utilizes the System Context API is invoked on a system enrolled in this way, it will display an error. ## Supported Endpoints


    JumpCloud System Context Authorization can be used in conjunction with Systems endpoints found in the V1 API and certain System Group endpoints found in the v2 API.'
  title: JumpCloud App Catalog API
  version: '2.0'
servers:
- url: https://console.jumpcloud.com/api/v2
  description: United States (US)
  x-jc-region: us
- url: https://console.eu.jumpcloud.com/api/v2
  description: European Union (EU)
  x-jc-region: eu
- url: https://console.in.jumpcloud.com/api/v2
  description: India (IN)
  x-jc-region: in
tags:
- name: App Catalog
paths:
  /software/catalog/apps:
    get:
      summary: List the App Catalog
      description: 'List the current App Catalog Items.


        #### Sample Request

        ```

        curl -X GET https://console.jumpcloud.com/api/v2/software/catalog/apps \

        -H ''Accept: application/json'' \

        -H ''Content-Type: application/json'' \

        -H ''x-api-key:{API_KEY}''

        ```


        Note: The list results can be filtered by `name`, `operating_system`, and `installer_type` while sorting is only allowed on `name`. Note: The `limit` maximum is 100 App Catalog Items in a single response.'
      operationId: AppCatalog_ListAppCatalogItems
      responses:
        '200':
          description: Success listing App Catalog Items.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/devices.AppCatalogItem'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: filter
        description: "A filter to apply to the query.\n\n\t**Filter structure**: `<field>:<operator>:<value>`.\n\n\t**field** = Populate with a valid field from an endpoint response.\n\n\t**operator** =  Supported operators are: eq, ne, gt, ge, lt, le, between, search, in.\n\n\t**value** = Populate with the value you want to search for. Is case sensitive. Supports wild cards.\n\n\t**Example** `GET /api/v2/groups?filter=name:eq:Test+Group`\n"
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
        allowReserved: true
      - name: fields
        description: The fields on the items listed to return.
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
      - name: skip
        description: The offset into the records to return.
        in: query
        required: false
        schema:
          type: string
          format: int64
      - name: sort
        description: 'An optional comma separated field names used to sort the collection.

          Default sort is ascending, prefix with `-` to sort descending.'
        in: query
        required: false
        explode: true
        schema:
          type: array
          items:
            type: string
        allowReserved: true
      - name: limit
        description: 'The number of resources to return at once.

          If the number of resources returned is less than `limit` there are no more resources to fetch.

          If the number of resources returned is equal to limit there may be more resources to fetch. Increment `skip` by `limit` to get the next set of resources.'
        in: query
        required: false
        schema:
          type: string
          format: int64
      tags:
      - App Catalog
      security:
      - x-api-key: []
      x-dynamic-gateway: true
      x-scopes:
      - systems
      - systems.readonly
      x-codeSamples:
      - lang: Shell
        source: "curl --request GET \\\n  --url 'https://console.jumpcloud.com/api/v2/software/catalog/apps?filter=SOME_ARRAY_VALUE&fields=SOME_ARRAY_VALUE&skip=SOME_STRING_VALUE&sort=SOME_ARRAY_VALUE&limit=SOME_STRING_VALUE' \\\n  --header 'x-api-key: REPLACE_KEY_VALUE'"
      - lang: Python
        source: 'import requests


          url = "https://console.jumpcloud.com/api/v2/software/catalog/apps"


          querystring = {"filter":"SOME_ARRAY_VALUE","fields":"SOME_ARRAY_VALUE","skip":"SOME_STRING_VALUE","sort":"SOME_ARRAY_VALUE","limit":"SOME_STRING_VALUE"}


          headers = {"x-api-key": "REPLACE_KEY_VALUE"}


          response = requests.request("GET", url, headers=headers, params=querystring)


          print(response.text)'
      - lang: Powershell
        source: '$headers=@{}

          $headers.Add("x-api-key", "REPLACE_KEY_VALUE")

          $response = Invoke-RestMethod -Uri ''https://console.jumpcloud.com/api/v2/software/catalog/apps?filter=SOME_ARRAY_VALUE&fields=SOME_ARRAY_VALUE&skip=SOME_STRING_VALUE&sort=SOME_ARRAY_VALUE&limit=SOME_STRING_VALUE'' -Method GET -Headers $headers'
  /software/catalog/apps/{objectId}:
    get:
      summary: Get an App Catalog Item
      description: 'Get an App Catalog Item.


        #### Sample Request

        ```

        curl -X GET https://console.jumpcloud.com/api/v2/software/catalog/apps/{object_id} \

        -H ''Accept: application/json'' \

        -H ''Content-Type: application/json'' \

        -H ''x-api-key:{API_KEY}''

        ```'
      operationId: AppCatalog_GetAppCatalogItem
      responses:
        '200':
          description: Success getting App Catalog Item.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/devices.AppCatalogItem'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorDetails'
        '401':
          description: Unauthorized
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Internal Server Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      parameters:
      - name: objectId
        in: path
        required: true
        schema:
          type: string
          format: byte
      tags:
      - App Catalog
      security:
      - x-api-key: []
      x-dynamic-gateway: true
      x-scopes:
      - systems
      - systems.readonly
      x-codeSamples:
      - lang: Shell
        source: "curl --request GET \\\n  --url https://console.jumpcloud.com/api/v2/software/catalog/apps/{objectId} \\\n  --header 'x-api-key: REPLACE_KEY_VALUE'"
      - lang: Python
        source: 'import requests


          url = "https://console.jumpcloud.com/api/v2/software/catalog/apps/{objectId}"


          headers = {"x-api-key": "REPLACE_KEY_VALUE"}


          response = requests.request("GET", url, headers=headers)


          print(response.text)'
      - lang: Powershell
        source: '$headers=@{}

          $headers.Add("x-api-key", "REPLACE_KEY_VALUE")

          $response = Invoke-RestMethod -Uri ''https://console.jumpcloud.com/api/v2/software/catalog/apps/{objectId}'' -Method GET -Headers $headers'
components:
  schemas:
    devices.SoftwareAppInstallType:
      type: string
      enum:
      - INSTALL_TYPE_UNSPECIFIED
      - PREINSTALLED
      - FORCE_INSTALLED
      - BLOCKED
      - AVAILABLE
      - REQUIRED_FOR_SETUP
      - KIOSK
      default: INSTALL_TYPE_UNSPECIFIED
    devices.DetectionRuleRegistry:
      type: object
      properties:
        registryExpectedValue:
          type: string
        registryPath:
          type: string
        registryValueName:
          type: string
    devices.SoftwareAppPermissionGrant:
      type: object
      properties:
        id:
          type: string
        policy:
          $ref: '#/components/schemas/devices.SoftwareAppRuntimePermission'
    devices.SoftwareAppMicrosoftStore:
      type: object
      properties:
        doNotUpdate:
          type: boolean
        nonRemovable:
          type: boolean
        packageFamilyName:
          type: string
    devices.MetadataPKG.ManagedInstallEligibilityStatus:
      type: string
      enum:
      - MANAGED_INSTALL_ELIGIBILITY_NOT_EVALUATED
      - MANAGED_INSTALL_ELIGIBLE
      - MANAGED_INSTALL_INELIGIBLE
      - MANAGED_INSTALL_ELIGIBILITY_UNKNOWN
      default: MANAGED_INSTALL_ELIGIBILITY_NOT_EVALUATED
    devices.MetadataEXE:
      type: object
      properties:
        arch:
          type: string
        author:
          type: string
        installerEngineVersion:
          type: string
        sha256sum:
          type: string
        signatureLabel:
          type: string
        size:
          type: integer
          format: int64
        title:
          type: string
        url:
          type: string
        version:
          type: string
      description: MetadataEXE holds parsed metadata for a Windows .exe installer (NSIS, Inno Setup, etc.).
    devices.ObjectStorageMetadata:
      type: object
      properties:
        metadataExe:
          $ref: '#/components/schemas/devices.MetadataEXE'
        metadataFile:
          $ref: '#/components/schemas/devices.MetadataFile'
        metadataIpa:
          $ref: '#/components/schemas/devices.MetadataIPA'
        metadataMsi:
          $ref: '#/components/schemas/devices.MetadataMSI'
        metadataPkg:
          $ref: '#/components/schemas/devices.MetadataPKG'
    devices.DetectionRuleDisplayName:
      type: object
      properties:
        expectedDisplayName:
          type: string
    devices.AppCatalogItem:
      type: object
      properties:
        iconSha256:
          type: string
        iconUrl:
          type: string
        installableItems:
          type: array
          items:
            $ref: '#/components/schemas/devices.AppCatalogInstallableItem'
        name:
          type: string
        objectId:
          type: string
          format: byte
        version:
          type: string
    devices.SoftwareAppGoogleAndroid:
      type: object
      properties:
        androidFeatures:
          type: array
          items:
            type: string
        appPricing:
          type: string
        appVersion:
          type: string
        author:
          type: string
        autoUpdateMode:
          $ref: '#/components/schemas/devices.SoftwareAppAutoUpdateMode'
        category:
          type: string
        contentRating:
          type: string
        disabled:
          type: boolean
        displayMode:
          type: string
        distributionChannel:
          type: string
        fullDescription:
          type: string
        iconUrl:
          type: string
        installPriority:
          type: integer
          format: int32
        installType:
          $ref: '#/components/schemas/devices.SoftwareAppInstallType'
        managedConfigurationTemplateId:
          type: string
        managedProperties:
          type: boolean
        minSdkVersion:
          type: string
          format: int64
        name:
          type: string
        permissionGrants:
          type: array
          items:
            $ref: '#/components/schemas/devices.SoftwareAppPermissionGrant'
        playStoreUrl:
          type: string
        runtimePermission:
          $ref: '#/components/schemas/devices.SoftwareAppRuntimePermission'
        startUrl:
          type: string
        type:
          $ref: '#/components/schemas/devices.SoftwareAppType'
        updateTime:
          type: string
        versionCode:
          type: string
          format: int64
    devices.WindowsCustomDetectionRules:
      type: object
      properties:
        customScript:
          $ref: '#/components/schemas/devices.DetectionRuleCustomScript'
        displayName:
          $ref: '#/components/schemas/devices.DetectionRuleDisplayName'
        registry:
          $ref: '#/components/schemas/devices.DetectionRuleRegistry'
    devices.MetadataMSI:
      type: object
      properties:
        manufacturer:
          type: string
        productCode:
          type: string
        productName:
          type: string
        productVersion:
          type: string
        sha256sum:
          type: string
        upgradeCode:
          type: string
    devices.MetadataFile:
      type: object
      properties:
        mimeType:
          type: string
        sha256sum:
          type: string
        size:
          type: integer
          format: int64
    devices.AppCatalogInstallableItem:
      type: object
      properties:
        architectures:
          type: array
          items:
            type: string
        installerType:
          type: string
        objectId:
          type: string
          format: byte
        operatingSystem:
          type: string
        softwareApp:
          $ref: '#/components/schemas/devices.SoftwareApp'
        version:
          type: string
    devices.SoftwareAppAppleVpp.DeviceFamily:
      type: string
      enum:
      - MAC
      - IPAD
      - IPHONE
      - IPOD
      default: MAC
    devices.SoftwareAppRuntimePermission:
      type: string
      enum:
      - PERMISSION_POLICY_UNSPECIFIED
      - PROMPT
      - GRANT
      - DENY
      default: PERMISSION_POLICY_UNSPECIFIED
    devices.SoftwareAppPackageManager:
      type: string
      enum:
      - UNKNOWN
      - CHOCOLATEY
      - APPLE_VPP
      - APPLE_CUSTOM
      - GOOGLE_ANDROID
      - WINDOWS_MDM
      - MICROSOFT_STORE
      - WINGET
      - MAC_OS_APP_CATALOG
      - WINDOWS_CUSTOM
      default: UNKNOWN
      description: " - WINDOWS_MDM: Private-repo MSI installers (object storage).\n - WINDOWS_CUSTOM: Private-repo EXE/MSIX and other non-MSI custom installers (object storage); agent uses windowsCustom."
    devices.SoftwareApp.Setting.Format:
      type: string
      enum:
      - PKG
      - APP_IN_DMG
      - PKG_IN_DMG
      - IPA
      - APP_IN_ZIP
      - PKG_IN_ZIP
      - APP_IN_DMG_ZIP
      default: PKG
    devices.SoftwareApp.Setting.AppDeliveryMethod:
      type: string
      enum:
      - IMMEDIATE
      - ON_DEMAND
      default: IMMEDIATE
    ErrorDetails:
      allOf:
      - $ref: '#/components/schemas/Error'
      - type: object
        properties:
          details:
            description: 'Describes a list of objects with more detailed information of the given error. Each detail schema is according to one of the messages defined in Google''s API: https://github.com/googleapis/googleapis/blob/master/google/rpc/error_details.proto'
            type: array
            items:
              type: object
              additionalProperties: true
              description: Object according to Google's API.
    devices.SoftwareAppAppleVpp:
      type: object
      properties:
        appConfiguration:
          type: string
          title: Not adding an instrumentation annotation since this could potentially contain sensitive info
        assignedLicenses:
          type: string
          format: int64
        availableLicenses:
          type: string
          format: int64
        details:
          type: string
        isConfigEnabled:
          type: boolean
        supportedDeviceFamilies:
          type: array
          items:
            $ref: '#/components/schemas/devices.SoftwareAppAppleVpp.DeviceFamily'
        totalLicenses:
          type: string
          format: int64
    devices.SoftwareAppType:
      type: string
      enum:
      - APP_TYPE_UNSPECIFIED
      - PUBLIC
      - PRIVATE
      - WEBAPP
      default: APP_TYPE_UNSPECIFIED
    devices.ObjectStorageReferrer:
      type: object
      properties:
        trackObject:
          $ref: '#/components/schemas/devices.TrackObject'
      description: 'When the status of an object changes we need to know how to contact external objects that refer to us.

        Since a oneof field cannot be repeated we are wrapping it with the ObjectStorageReferrer.'
    devices.MetadataIPA:
      type: object
      properties:
        assetKind:
          type: string
        bundleIdentifier:
          type: string
        bundleVersion:
          type: string
        packageKind:
          type: string
        sha256sum:
          type: string
        shortVersion:
          type: string
        subtitle:
          type: string
        title:
          type: string
    devices.SoftwareApp.Setting.Scope:
      type: string
      enum:
      - SYSTEM
      - USER
      default: SYSTEM
    devices.SoftwareAppDesiredState:
      type: string
      enum:
      - INSTALL
      - UNINSTALL
      default: INSTALL
    devices.WindowsCustomInstallerConfig:
      type: object
      properties:
        successExitCodes:
          type: array
          items:
            type: integer
            format: int32
    devices.SoftwareAppAutoUpdateMode:
      type: string
      enum:
      - AUTO_UPDATE_MODE_UNSPECIFIED
      - AUTO_UPDATE_DEFAULT
      - AUTO_UPDATE_POSTPONED
      - AUTO_UPDATE_HIGH_PRIORITY
      default: AUTO_UPDATE_MODE_UNSPECIFIED
    devices.TrackObject:
      type: object
      properties:
        objectId:
          type: string
          format: byte
        type:
          $ref: '#/components/schemas/directory.Type'
      description: TrackObject is a slimmed down version of a jumpcloud.directory.GraphObject.
    devices.ObjectStorageVersion.Status:
      type: string
      enum:
      - UNKNOWN
      - PENDING
      - VALIDATING
      - AVAILABLE
      - REJECTED
      - INACTIVE
      default: UNKNOWN
    directory.Type:
      type: string
      enum:
      - UNKNOWN
      - USER
      - USER_GROUP
      - SYSTEM
      - SYSTEM_GROUP
      - RADIUS_SERVER
      - RADIUS_SERVER_GROUP
      - APPLICATION
      - APPLICATION_GROUP
      - COMMAND
      - COMMAND_GROUP
      - G_SUITE
      - G_SUITE_GROUP
      - OFFICE_365
      - OFFICE_365_GROUP
      - LDAP_SERVER
      - LDAP_SERVER_GROUP
      - PASSWORD_MANAGER_ITEM
      - PASSWORD_MANAGER_ITEM_GROUP
      - POLICY
      - POLICY_GROUP
      - ACTIVE_DIRECTORY
      - ACTIVE_DIRECTORY_GROUP
      - WORKDAY
      - WORKDAY_GROUP
      - SCIM_CLIENT
      - SCIM_CLIENT_GROUP
      - SOFTWARE_APP
      - SOFTWARE_APP_GROUP
      - IDP_ROUTING_POLICY
      - IDP_ROUTING_POLICY_GROUP
      - RULE
      - RULE_GROUP
      default: UNKNOWN
      description: " - UNKNOWN: Unknown represents a type of directory object from the database the code\ndoesn't recognize; in general it should never ever happen.\n - USER: Groups should be even, non-groups odd for the code to correct traverse; if\nnecessary reserve a space where we do not support a group for that type\nyet."
    devices.DetectionRuleCustomScript:
      type: object
      properties:
        powerShellScript:
          type: string
    devices.SoftwareApp.Setting.AdminManagementIntent:
      type: string
      enum:
      - INTENT_UNSPECIFIED
      - INTENT_FORCE_MANAGED
      - INTENT_FORCE_UNMANAGED
      default: INTENT_UNSPECIFIED
    devices.ObjectStorageVersion:
      type: object
      properties:
        createdAt:
          type: string
          format: date-time
        displayVersion:
          type: string
          description: Optional admin display label for this upload; copied to software_app_settings on successful validation.
        metadata:
          $ref: '#/components/schemas/devices.ObjectStorageMetadata'
        name:
          type: string
        objectId:
          type: string
          format: byte
        rejectedReason:
          type: string
        sha256sum:
          type: string
        size:
          type: integer
          format: int64
        status:
          $ref: '#/components/schemas/devices.ObjectStorageVersion.Status'
        storagePath:
          type: string
        updatedAt:
          type: string
          format: date-time
        version:
          type: integer
          format: int64
      description: The Version is the details of actual blob stored by the underlying storage subsystem.
    Error:
      title: Error
      type: object
      x-examples: {}
      description: ''
      properties:
        code:
          format: int32
          type: integer
          description: HTTP status code
        message:
          type: string
          description: Error message
        status:
          type: string
          description: HTTP status description
    devices.SoftwareApp:
      type: object
      properties:
        createdAt:
          type:
          - string
          - 'null'
          format: date-time
        deletedAt:
          type:
          - string
          - 'null'
          format: date-time
        displayName:
          type: string
        objectId:
          type: string
          format: byte
        organizationObjectId:
          type: string
          format: byte
        settings:
          type: array
          items:
            $ref: '#/components/schemas/devices.SoftwareApp.Setting'
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
    devices.MetadataPKG:
      type: object
      properties:
        assetKind:
          type: string
        bundleIdentifier:
          type: string
        bundleVersion:
          type: string
        managedInstallEligibilityStatus:
          $ref: '#/components/schemas/devices.MetadataPKG.ManagedInstallEligibilityStatus'
        packageKind:
          type: string
        sha256sum:
          type: string
        shortVersion:
          type: string
        subtitle:
          type: string
        title:
          type: string
    devices.SoftwareApp.Setting:
      type: object
      properties:
        adminIntent:
          $ref: '#/components/schemas/devices.SoftwareApp.Setting.AdminManagementIntent'
        allowUpdateDelay:
          type: boolean
        appCatalogInstallableObjectId:
          type: string
          format: byte
        appDeliveryMethod:
          $ref: '#/components/schemas/devices.SoftwareApp.Setting.AppDeliveryMethod'
        appFileName:
          type: string
        appleVpp:
          $ref: '#/components/schemas/devices.SoftwareAppAppleVpp'
        architectures:
          type: array
          items:
            type: string
        assetKind:
          type: string
        assetSha256Size:
          type: integer
          format: int64
        assetSha256Strings:
          type: array
          items:
            type: string
        autoUpdate:
          type: boolean
        autoUpdateNotificationsDisabled:
          type: boolean
        bundleId:
          type: string
        commandLineArguments:
          type: string
        createdAt:
          type:
          - string
          - 'null'
          format: date-time
        description:
          type: string
        desiredState:
          $ref: '#/components/schemas/devices.SoftwareAppDesiredState'
        detectionRules:
          anyOf:
          - $ref: '#/components/schemas/devices.WindowsCustomDetectionRules'
          - type: 'null'
        displayVersion:
          type: string
        downloadUrl:
          type: string
        enterpriseObjectId:
          type: string
          format: byte
        format:
          $ref: '#/components/schemas/devices.SoftwareApp.Setting.Format'
        googleAndroid:
          $ref: '#/components/schemas/devices.SoftwareAppGoogleAndroid'
        iconUrl:
          type: string
        installerConfig:
          anyOf:
          - $ref: '#/components/schemas/devices.WindowsCustomInstallerConfig'
          - type: 'null'
        installerType:
          type: string
          description: Winget installer format (e.g. "msix"); empty means the winget default installer.
        location:
          type: string
        locationObjectId:
          type: string
          format: byte
        managedInstallEligibilityStatus:
          $ref: '#/components/schemas/devices.MetadataPKG.ManagedInstallEligibilityStatus'
        microsoftStore:
          $ref: '#/components/schemas/devices.SoftwareAppMicrosoftStore'
        migrationSafe:
          type: boolean
          description: JumpCloud has validated the MSI->MSIX (or equivalent) migration for this app is safe.
        packageFamilyName:
          type: string
          description: MSIX package family name (DisplayName_PublisherId), used for machine-wide MSIX installs.
        packageId:
          type: string
        packageKind:
          type: string
        packageManager:
          $ref: '#/components/schemas/devices.SoftwareAppPackageManager'
        packageSubtitle:
          type: string
        packageVersion:
          type: string
        packageVersionUpdatedAt:
          type:
          - string
          - 'null'
          format: date-time
        scope:
          $ref: '#/components/schemas/devices.SoftwareApp.Setting.Scope'
        shortVersion:
          type: string
        silentInstallFlags:
          type: array
          items:
            type: string
          description: Optional silent install flags (e.g. comma-separated in UI).
        storedPackage:
          $ref: '#/components/schemas/devices.ObjectStorageItem'
        storedPackageObjectId:
          type: string
          format: byte
        teamId:
          type: string
        uninstallOnUnbind:
          type: boolean
        unsafeUninstall:
          type: boolean
        updateTool:
          type: string
        updateToolArguments:
          type: string
        updatedAt:
          type:
          - string
          - 'null'
          format: date-time
        versionlessDownloadUrl:
          type: boolean
    devices.ObjectStorageItem:
      type: object
      properties:
        objectId:
          type: string
          format: byte
        references:
          type: array
          items:
            $ref: '#/components/schemas/devices.ObjectStorageReferrer'
        versions:
          type: array
          items:
            $ref: '#/components/schemas/devices.ObjectStorageVersion'
  securitySchemes:
    x-api-key:
      description: API key used to authenticate requests.
      in: header
      name: x-api-key
      type: apiKey
x-tagGroups:
- name: API Reference
  tags:
  - Access Requests
  - Access Risk Settings
  - Active Directory
  - Administrators
  - Agent Groups
  - Agents
  - Aggregated Policy Stats
  - App Catalog
  - Apple MDM
  - Applications
  - Assets
  - Authentication Policies
  - Bulk Job Requests
  - Commands
  - Custom Emails
  - Directories
  - Directory Insights
  - Duo
  - Email Subscriptions
  - FeatureTrials
  - G Suite
  - G Suite Import
  - GCEP
  - Google EMM
  - Graph
  - Groups
  - IP Lists
  - Identity Providers
  - Identity Risk
  - Image
  - LDAP Servers
  - Logos
  - Managed Service Provider
  - Microsoft MDM
  - Monitoring and Alerting
  - Notifications Channels
  - Object Storage
  - Office 365
  - Office 365 Import
  - Organization Feature Settings
  - Organizations
  - Password Manager
  - Password Policy
  - Password Vault
  - PasswordManagerItem
  - Policies
  - Policy Group Associations
  - Policy Group Members & Membership
  - Policy Group Templates
  - Policy Groups
  - Policytemplates
  - Privileged Access
  - Providers
  - Push Verification
  - RADIUS Servers
  - Reports
  - Roles
  - Rules
  - SCIM Import
  - SaaS App Management
  - Samba Domains
  - Sample Data
  - Saved Views
  - Scope Groups
  - Service Accounts
  - Slack Notifications
  - Software Apps
  - Subscriptions
  - System Group Associations
  - System Group Members & Membership
  - System Groups
  - System Insights
  - Systems
  - Systems Organization Settings
  - Translation Rules
  - User Group Associations


# --- truncated at 32 KB (35 KB total) ---
# Full source: https://artifacts.apis.io/jumpcloud/openapi/jumpcloud-app-catalog-api-openapi.yml