---
title: "Upload Package"
method: POST
path: "/drivers/package"
tags: ["Drivers"]
---

# Upload Package

`POST /drivers/package`

## Request

- Base URL: `https://api.smartthings.com/v1`
- URL: `https://api.smartthings.com/v1/drivers/package`
- Auth: OAuth 2
  - Implicit: `https://auth-global.api.smartthings.com`
  - Scopes: `w:drivers:*`
- TypeScript: <https://skmtc.dev/smartthings/apis/smartthings-api/docs/drivers/package/post.ts> (a function with typed inputs; its response is checked against the schema)

Consumes driver package (`.zip`) that contains driver and profile definitions. The layout of the compressed
ZIP package should reflect the following structure and files definitions.

`config.yaml`
`fingerprints.yaml` (Optional, should not be included in packages for Drivers that don’t define fingerprints)
`src/` (`init.lua`, `...`)
`profiles/` (`{ Profile Name }.yaml`, `{ Other Profile Name }.yaml`)

## Request body

- string, binary

## Response `200`

Retrieved driver

- Driver
  - `driverId` string, ^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$, required: The ID of the Sprocket driver
  - `name` string, ^[a-zA-Z0-9 _\/\\-()\[\]{}\.]{1,50}$, required: The name of the driver
  - `packageKey` string, required: A user scoped package key that's used to lookup the respective driver record
  - `deviceIntegrationProfiles` DeviceIntegrationProfileKey[]
    - `id` string, uuid: Unique identifier for integration profile.
    - `majorVersion` integer: Major Version of the integration profile
  - `permissions` DriverPermission[]
    - `name` string, required: Name of the permission
    - `attributes` PermissionAttributes, required: Additional properties on a driver permission
  - `version` string: The version of the driver revision being returned
  - `fingerprints` DriverFingerprint[]
    - `id` string, ^[a-zA-Z0-9 _/\\\-()\\[\\]{}\.]{1,36}$, required: The identifier for the respective fingerprint, unique per driver
    - `type` 'DTH' | 'ZIGBEE_GENERIC' | 'ZIGBEE_MANUFACTURER' | 'ZWAVE_MANUFACTURER' | 'ZWAVE_GENERIC', required: Type of fingerprint
    - `deviceLabel` string, ^[a-zA-Z0-9 _\/\\-()\[\]{}\.]{1,50}$: Label assigned to device at join time. If this is not set the driver name is used.
    - `zigbeeGeneric` ZigbeeGenericFingerprint
      - `clusters` Clusters
        - `client` integer[]: List of 16-bit cluster identifiers for client clusters
        - `server` integer[]: List of 16-bit cluster identifiers for server clusters
      - `deviceIdentifiers` integer[]: Device Identifiers associated with a generic zigbee fingerprint
      - `zigbeeProfiles` integer[]: Device profiles associated with a generic zigbee fingerprint
      - `deviceIntegrationProfileKey` DeviceIntegrationProfileKey
        - `id` string, uuid: Unique identifier for integration profile.
        - `majorVersion` integer: Major Version of the integration profile
    - `zigbeeManfacturer` ZigbeeManufacturerFingerprint
      - `manufacturer` string: Reported manufacturer of the device
      - `model` string: Reported model of the device
      - `deviceIntegrationProfileKey` DeviceIntegrationProfileKey
        - `id` string, uuid: Unique identifier for integration profile.
        - `majorVersion` integer: Major Version of the integration profile
    - `zwaveManufacturer` ZWaveManufacturerFingerprint
      - `manufacturerId` integer: 16-bit manufacturer identifier assigned by the Z-Wave Specification
      - `productId` integer: 16-bit manufacturer defined product identifier
      - `productType` integer, required: 16-bit manufacturer defined product type
      - `deviceIntegrationProfileKey` DeviceIntegrationProfileKey
        - `id` string, uuid: Unique identifier for integration profile.
        - `majorVersion` integer: Major Version of the integration profile
    - `zwaveGeneric` ZWaveGenericFingerprint
      - `genericType` integer: 8-bit indicator for the generic type of the device
      - `specificType` ZWaveSpecificType[]: List of reported command classes
      - `commandClasses` CommandClasses
        - `either` integer[]: List of 8-bit command class identifiers to match regardless of controlled or supported
        - `controlled` integer[]: List of 8-bit command class identifiers that are controlled
        - `supported` integer[]: List of 8-bit command class identifiers that are supported
      - `deviceIntegrationProfileKey` DeviceIntegrationProfileKey
        - `id` string, uuid: Unique identifier for integration profile.
        - `majorVersion` integer: Major Version of the integration profile

## Changes

- **2022-12-19** `adcacfc2749d`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/smartthings/apis/smartthings-api/changes/drivers/package/post.md)

---

[API](https://skmtc.dev/smartthings/apis/smartthings-api.md) - [All operations](https://skmtc.dev/smartthings/apis/smartthings-api/llms.txt) - [OpenAPI document](https://skmtc.dev/smartthings/apis/smartthings-api/revisions/2788a4236800?raw)
