openapi: 3.1.0 info: title: Afero Cloud OTA Firmware API version: v1 description: 'The Afero Cloud API is the RESTful control plane for the Afero IoT platform: it lists the devices and users on an Afero account, reports real-time device state, executes attribute read/write actions against connected devices, and manages the over-the-air (OTA) firmware pipeline — firmware types, firmware pool images, binary upload, device-type associations, firmware tags, and firmware pushes. All requests are made over TLS to https://api.afero.io and are authenticated with an OAuth 2.0 bearer access token obtained from the /oauth/token endpoint using the partner OAuth Client ID and Client Secret issued in the Afero Profile Editor. This OpenAPI was DERIVED by API Evangelist from Afero''s public developer documentation (resource URLs, HTTP methods, request headers, request payload model schemas, response model schemas and examples transcribed verbatim from the docs); it is NOT a provider-published specification. Afero publishes no machine-readable spec: https://api.afero.io/api-docs and https://api.afero.io/v1/openapi.json both answer HTTP 401 (authenticated access required), probed 2026-08-02.' contact: name: Afero Developer Documentation url: https://afero-docs.readthedocs.io/en/latest/CloudAPIs/ email: sales@afero.io license: name: Afero Developer Terms of Service url: https://cdn.afero.io/tos/developer/v1/developer.html x-apievangelist-derived-from: https://afero-docs.readthedocs.io/en/latest/CloudAPIs/ x-apievangelist-derived-on: '2026-08-02' x-apievangelist-provider-published: false x-apievangelist-split-from: openapi/_original/afero-cloud-api-openapi.yml externalDocs: description: Afero Developer Docs url: https://afero-docs.readthedocs.io/en/latest/ servers: - url: https://api.afero.io description: Afero Cloud API production base URL tags: - name: OTA description: 'Over-the-air firmware management: firmware types, the firmware pool, binaries, device type associations, tags and pushes.' externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints/ paths: /v1/ota/partners/{partnerId}/types: post: operationId: createFirmwareType tags: - OTA summary: Create a partner firmware type description: Creates a new partner firmware type. Firmware types categorize firmware; platform firmware types occupy 1-100 and MCU firmware types 101-200. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FirmwareTypeCreate' responses: '201': description: The created firmware type. content: application/json: schema: $ref: '#/components/schemas/FirmwareType' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] get: operationId: listFirmwareTypes tags: - OTA summary: Retrieve partner firmware types description: Retrieves the firmware types defined for the partner. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true responses: '200': description: The partner's firmware types. content: application/json: schema: type: array items: $ref: '#/components/schemas/FirmwareType' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/types/{type}: get: operationId: getFirmwareType tags: - OTA summary: Retrieve a firmware type by type description: Retrieves the partner firmware type identified by the given type number. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true responses: '200': description: The firmware type. content: application/json: schema: type: array items: $ref: '#/components/schemas/FirmwareType' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] put: operationId: updateFirmwareType tags: - OTA summary: Update a partner firmware type description: Updates the name and description of a partner firmware type. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/FirmwareTypeUpdate' responses: '204': description: The firmware type was updated. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/pool: post: operationId: createPoolFirmwareImage tags: - OTA summary: Create a firmware record in the firmware pool description: Creates a new firmware record in the partner firmware image pool. The optional `associations` map keys are partner IDs and its values are arrays of device type IDs; associations can be created or deleted at any time after the pool image exists. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PoolFirmwareImageCreate' responses: '201': description: The created pool firmware record. content: application/json: schema: $ref: '#/components/schemas/FirmwareType' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] get: operationId: listPoolFirmwareImages tags: - OTA summary: Retrieve firmware images from the pool description: Retrieves a paged result set of firmware images in the partner firmware pool. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: tags in: query description: Comma-separated list of tags on which to filter. schema: type: string required: false - name: page in: query description: Zero-based index of the page to retrieve. schema: type: integer required: false - name: size in: query description: The number of elements per page. Default page size is 50. schema: type: integer required: false - name: sort in: query description: The field and sort direction; e.g. `updatedTimestamp`, `description`. schema: type: string required: false responses: '200': description: A page of pool firmware images. content: application/json: schema: $ref: '#/components/schemas/PoolFirmwareImagePage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/binaries: post: operationId: uploadFirmwareBinary tags: - OTA summary: Upload a firmware binary to a temporary location description: Uploads a firmware file to a temporary location, either as a raw file stream (`application/octet-stream`) or as a browser-style upload (`multipart/form-data`). The returned `value` is the file identifier of the uploaded file — the SHA-256 hash of the file. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true requestBody: required: true content: application/octet-stream: schema: type: string format: binary multipart/form-data: schema: type: object properties: file: type: string format: binary responses: '200': description: The temporary file identifier (SHA-256 of the file). content: application/json: schema: $ref: '#/components/schemas/Value' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/binaries/moveToRepository: post: operationId: moveBinaryToRepository tags: - OTA summary: Move a binary into the firmware repository description: Moves an uploaded file from the temporary location into the permanent firmware image repository. Send the response body of uploadFirmwareBinary as the payload. The response `value` is the repository URL of the firmware binary, which must be used to update the firmware pool record — otherwise the OTA service cannot send updates. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Value' responses: '200': description: The repository URL of the firmware binary. content: application/json: schema: $ref: '#/components/schemas/Value' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/pool/types/{type}: get: operationId: listPoolFirmwareImagesByType tags: - OTA summary: Retrieve pool firmware images of a type description: Retrieves a paged result set of pool firmware images of a specific firmware type. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: tags in: query description: Comma-separated list of tags on which to filter. schema: type: string required: false - name: page in: query description: Zero-based index of the page to retrieve. schema: type: integer required: false - name: size in: query description: The number of elements per page. Default page size is 50. schema: type: integer required: false - name: sort in: query description: The field and sort direction; e.g. `updatedTimestamp`, `description`. schema: type: string required: false responses: '200': description: A page of pool firmware images. content: application/json: schema: $ref: '#/components/schemas/PoolFirmwareImagePage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/pool/types/{type}/names/{name}/versions/{version}/exists: get: operationId: poolFirmwareImageExists tags: - OTA summary: Check whether a pool firmware image exists description: Checks whether a firmware image with the given type, name and version string already exists in the pool. `excludeFirmwareImageId` lets a client exclude the record it is about to update. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: name in: path description: The name of the firmware image. schema: type: string required: true - name: version in: path description: The version string of the firmware image. schema: type: string required: true - name: excludeFirmwareImageId in: query description: The ID of a record to exclude from the check. schema: type: string required: false responses: '200': description: Whether a matching pool image exists. content: application/json: schema: $ref: '#/components/schemas/BooleanValue' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/pool/types/{type}/versionNumbers/{versionNumber}/associations: get: operationId: listPoolFirmwareImageAssociations tags: - OTA summary: Retrieve device type associations of a pool firmware image description: Retrieves all device type associations of the given pool firmware image. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: versionNumber in: path description: The globally unique, platform-generated version number of the firmware image. schema: type: string required: true responses: '200': description: The device type associations. content: application/json: schema: type: array items: $ref: '#/components/schemas/FirmwareAssociation' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/pool/types/{type}/versionNumbers/{versionNumber}: put: operationId: updatePoolFirmwareImage tags: - OTA summary: Update a firmware image in the pool description: Updates the name, description, version string, binary URL and tags of a pool firmware image. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: versionNumber in: path description: The globally unique, platform-generated version number of the firmware image. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/PoolFirmwareImageUpdate' responses: '204': description: The pool firmware image was updated. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages: post: operationId: createDeviceTypeFirmwareImage tags: - OTA summary: Associate a firmware image with a device type description: Creates an association between a generic firmware image record in the firmware pool and a specific device type, so the image becomes eligible for OTA. `versionNumber` is required. Afero recommends sending the object returned by one of the firmware pool GET endpoints unmodified — modifying it causes errors and prevents OTAs from succeeding. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/DeviceTypeFirmwareImageCreate' responses: '201': description: The created device type firmware image. content: application/json: schema: $ref: '#/components/schemas/DeviceTypeFirmwareImage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] get: operationId: listDeviceTypeFirmwareImages tags: - OTA summary: Retrieve firmware images associated with a device type description: Retrieves a paged result set of firmware image records associated with a device type. Records of type 4 (DEVICE_DESCRIPTION) carry the two additional fields `deviceDescriptionId` and `deviceProfileId`. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true - name: tags in: query description: Comma-separated list of tags on which to filter. schema: type: string required: false - name: page in: query description: Zero-based index of the page to retrieve. schema: type: integer required: false - name: size in: query description: The number of elements per page. Default page size is 50. schema: type: integer required: false - name: sort in: query description: The field and sort direction; e.g. `updatedTimestamp`, `description`. schema: type: string required: false responses: '200': description: A page of device type firmware images. content: application/json: schema: $ref: '#/components/schemas/DeviceTypeFirmwareImagePage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/types/{type}: get: operationId: listDeviceTypeFirmwareImagesByType tags: - OTA summary: Retrieve device type firmware images by firmware type description: Retrieves a paged result set of firmware image records for a device type filtered to one firmware type. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: tags in: query description: Comma-separated list of tags on which to filter. schema: type: string required: false - name: page in: query description: Zero-based index of the page to retrieve. schema: type: integer required: false - name: size in: query description: The number of elements per page. Default page size is 50. schema: type: integer required: false - name: sort in: query description: The field and sort direction; e.g. `updatedTimestamp`, `description`. schema: type: string required: false responses: '200': description: A page of device type firmware images. content: application/json: schema: $ref: '#/components/schemas/DeviceTypeFirmwareImagePage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/types/{type}/versionNumbers/{versionNumber}: get: operationId: getDeviceTypeFirmwareImage tags: - OTA summary: Retrieve a device type firmware image by type and version number description: Retrieves the single firmware image record associated with a device type for the given firmware type and version number. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: versionNumber in: path description: The globally unique, platform-generated version number of the firmware image. schema: type: string required: true - name: page in: query description: Zero-based index of the page to retrieve. schema: type: integer required: false - name: size in: query description: The number of elements per page. Default page size is 50. schema: type: integer required: false - name: sort in: query description: The field and sort direction; e.g. `updatedTimestamp`, `description`. schema: type: string required: false responses: '200': description: The device type firmware image. content: application/json: schema: $ref: '#/components/schemas/DeviceTypeFirmwareImage' '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] delete: operationId: deleteDeviceTypeFirmwareImage tags: - OTA summary: Dissociate a firmware image from a device type description: 'Dissociates a firmware image from a device type. NOTE: the Afero docs page heading names this operation DELETE while the HTTP METHOD line on the same section reads PUT — the heading is used here and the discrepancy is recorded in the API Evangelist review.' externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true - name: type in: path description: The firmware type. Platform firmware types are 1-100; MCU firmware types are 101-200. schema: type: integer required: true - name: versionNumber in: path description: The globally unique, platform-generated version number of the firmware image. schema: type: string required: true responses: '204': description: The firmware image was dissociated. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/deviceTypes/{deviceTypeId}/firmwareImages/{firmwareImageId}/push: put: operationId: pushFirmwareImageToDevice tags: - OTA summary: Push a firmware image to a device description: Pushes a firmware image to a target device. The payload `value` is the device ID of the target device. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true - name: deviceTypeId in: path description: The device type ID. schema: type: string required: true - name: firmwareImageId in: path description: The ID of the firmware image to push to a device. schema: type: string required: true requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/Value' responses: '202': description: The firmware push was accepted. '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] /v1/ota/partners/{partnerId}/tags: get: operationId: listFirmwareTags tags: - OTA summary: Retrieve all firmware tags description: Retrieves all firmware tags defined for the partner. externalDocs: url: https://afero-docs.readthedocs.io/en/latest/API-OTAEndpoints-Funcs/ parameters: - name: partnerId in: path description: The partner ID. schema: type: string required: true responses: '200': description: The partner's firmware tags. content: application/json: schema: type: array items: type: string '401': $ref: '#/components/responses/Unauthorized' '403': $ref: '#/components/responses/Forbidden' '404': $ref: '#/components/responses/NotFound' security: - bearerAuth: [] components: securitySchemes: bearerAuth: type: http scheme: bearer description: 'The OAuth 2.0 access token returned by POST /oauth/token, sent as `Authorization: Bearer `. Tokens expire (approximately four hours per the Afero docs).' schemas: FirmwareAssociation: type: object properties: name: type: string partnerId: type: string email: type: string deviceTypeId: type: string deviceTypeName: type: string firmwareImageId: type: string description: An integer represented as a string; these values may exceed 53-bit precision. FirmwareTypeCreate: type: object required: - name - type properties: name: type: string description: type: string type: type: integer description: Platform firmware types 1-100; MCU firmware types 101-200. Error: type: object description: The Afero Cloud API error envelope, observed live on api.afero.io (2026-08-02). properties: timestamp: type: integer description: Epoch milliseconds the error was produced. status: type: integer description: The HTTP status code. error: type: string description: The short error code, e.g. `unauthorized`. error_description: type: string description: Human readable description of the error. service_name: type: string description: The Afero service that produced the error, e.g. `ClientApi`. region: type: string description: The Afero cloud region, e.g. `us-west-2`. PoolFirmwareImageUpdate: type: object properties: name: type: string description: type: string version: type: string url: type: string tags: type: array items: type: string FirmwareType: type: object properties: id: type: string description: An integer represented as a string; these values may exceed 53-bit precision. name: type: string description: type: string type: type: integer partnerId: type: string createdTimestamp: type: integer updatedTimestamp: type: integer versionAttributeId: type: integer description: The device attribute ID that reports this firmware type's version — the firmware type plus 2000. Value: type: object required: - value properties: value: type: string BooleanValue: type: object properties: value: type: boolean DeviceTypeFirmwareImageCreate: type: object required: - name - type - versionNumber - version - url properties: name: type: string description: type: string type: type: integer versionNumber: type: string version: type: string url: type: string tags: type: array items: type: string associations: type: object additionalProperties: type: array items: type: string DeviceTypeFirmwareImage: type: object properties: id: type: string name: type: string description: type: string type: type: integer versionNumber: type: string description: An integer represented as a string; these values may exceed 53-bit precision. version: type: string url: type: string tags: type: array items: type: string createdTimestamp: type: integer updatedTimestamp: type: integer partnerId: type: string deviceTypeId: type: string deviceDescriptionId: type: string description: Present on firmware type 4 (DEVICE_DESCRIPTION) records. deviceProfileId: type: string description: Present on firmware type 4 (DEVICE_DESCRIPTION) records. Page: type: object description: The Afero paged result set envelope. Default page size is 50. properties: number: type: integer description: Zero-based index of this page. size: type: integer totalPages: type: integer numberOfElements: type: integer totalElements: type: integer sort: type: string PoolFirmwareImagePage: allOf: - $ref: '#/components/schemas/Page' - type: object properties: content: type: array items: $ref: '#/components/schemas/PoolFirmwareImage' DeviceTypeFirmwareImagePage: allOf: - $ref: '#/components/schemas/Page' - type: object properties: content: type: array items: $ref: '#/components/schemas/DeviceTypeFirmwareImage' FirmwareTypeUpdate: type: object required: - name properties: name: type: string description: type: string PoolFirmwareImageCreate: type: object required: - name - type - version - url properties: name: type: string description: type: string type: type: integer version: type: string description: The user-friendly version string. url: type: string description: The firmware repository URL of the binary. tags: type: array items: type: string associations: type: object description: Map of partner ID to an array of device type IDs. additionalProperties: type: array items: type: string PoolFirmwareImage: type: object properties: id: type: string description: An integer represented as a string; these values may exceed 53-bit precision. name: type: string description: type: string type: type: integer versionNumber: type: string description: An integer represented as a string; these values may exceed 53-bit precision. version: type: string url: type: string tags: type: array items: type: string createdTimestamp: type: integer updatedTimestamp: type: integer partnerId: type: string responses: Unauthorized: description: Full authentication is required to access this resource. content: application/json: schema: $ref: '#/components/schemas/Error' example: timestamp: 1785679681261 status: 401 error: unauthorized error_description: Full authentication is required to access this resource service_name: ClientApi region: us-west-2 Forbidden: description: The authenticated principal does not hold the required account or partner privilege. content: application/json: schema: $ref: '#/components/schemas/Error' NotFound: description: The requested resource does not exist. content: application/json: schema: $ref: '#/components/schemas/Error' security: - bearerAuth: []