openapi: 3.0.3 info: title: Samsung SmartThings Apps API description: 'The SmartThings API is the RESTful core of the SmartThings smart-home IoT platform. It is used to control devices, read device status, manage Locations, Rooms, and Modes, build Automations with Rules and Scenes, inspect Capabilities, and build SmartApps (Apps and Installed Apps) that subscribe to events and run Schedules. Requests are authenticated with a Personal Access Token (PAT) for testing or an OAuth 2.0 access token for production integrations, passed as `Authorization: Bearer {token}`. This document is grounded in the official SmartThings Swagger definition (https://swagger.api.smartthings.com/public/st-api.yml); some less-common endpoints (Apps, History, Virtual Devices, individual Subscription operations) are modeled from the public docs and SDK where a full path was not directly confirmed.' version: '1.0' contact: name: SmartThings Developers url: https://developer.smartthings.com servers: - url: https://api.smartthings.com/v1 description: SmartThings Cloud API security: - bearerAuth: [] - oauth2: [] tags: - name: Apps description: SmartApp registrations (Lambda or webhook endpoints). paths: /apps: get: operationId: listApps tags: - Apps summary: List Apps description: Lists the SmartApps registered by the authenticated principal. Modeled from the public docs and SDK. responses: '200': description: A list of apps. content: application/json: schema: type: object properties: items: type: array items: $ref: '#/components/schemas/App' '401': $ref: '#/components/responses/Unauthorized' post: operationId: createApp tags: - Apps summary: Create an App requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/App' responses: '200': description: The created app. content: application/json: schema: $ref: '#/components/schemas/App' '401': $ref: '#/components/responses/Unauthorized' /apps/{appNameOrId}: parameters: - name: appNameOrId in: path required: true schema: type: string get: operationId: getApp tags: - Apps summary: Get an App responses: '200': description: The app. content: application/json: schema: $ref: '#/components/schemas/App' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' put: operationId: updateApp tags: - Apps summary: Update an App requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/App' responses: '200': description: The updated app. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' delete: operationId: deleteApp tags: - Apps summary: Delete an App responses: '200': description: Deletion confirmation. '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' components: schemas: App: type: object properties: appId: type: string appName: type: string appType: type: string enum: - LAMBDA_SMART_APP - WEBHOOK_SMART_APP - API_ONLY displayName: type: string description: type: string webhookSmartApp: type: object additionalProperties: true lambdaSmartApp: type: object additionalProperties: true Error: type: object properties: requestId: type: string error: type: object properties: code: type: string message: type: string details: type: array items: type: object additionalProperties: true responses: NotFound: description: The requested resource was not found. content: application/json: schema: $ref: '#/components/schemas/Error' Unauthorized: description: Missing or invalid access token. content: application/json: schema: $ref: '#/components/schemas/Error' securitySchemes: bearerAuth: type: http scheme: bearer description: 'A Personal Access Token (PAT) from https://account.smartthings.com/tokens or an OAuth 2.0 access token, passed as `Authorization: Bearer {token}`.' oauth2: type: oauth2 description: OAuth 2.0 authorization code flow for production integrations. flows: authorizationCode: authorizationUrl: https://api.smartthings.com/oauth/authorize tokenUrl: https://api.smartthings.com/oauth/token scopes: r:devices:*: Read devices x:devices:*: Control devices r:locations:*: Read locations w:locations:*: Manage locations r:scenes:*: Read scenes x:scenes:*: Execute scenes r:rules:*: Read rules w:rules:*: Manage rules