Add or remove devices from a campaign
# Add or Remove Devices in an Upgrade ### `PUT /campaigns/{accountName}/{campaignId}` Allows devices to be added or removed from a software upgrade. ## Uses and Requirements Devices cannot be removed once an upgrade is in a Scheduled state. To remove devices, the campaign must be in one of the following states: - RequestPending - Queued ## HTTP Request [PUT https://thingspace.verizon.com/api/fota/v2/campaigns/{accountName}/{campaignId}](/docs/premium-apis/software-management/software-management-v2/api-endpoints/campaigns-v2/updatecampaignfirmwaredevices) ## Resource Path and Query Parameters | Parameter Name | Data Type | Description | |:----------------|:-----------|:-------------| | **accountName** <br> _required_ | string | Account identifier. | | **campaignId** <br> _required_ | string | Software upgrade identifier, returned in the "id" value of the `POST /{campaigns}/acc` response when the upgrade was scheduled. | ## Header Parameters The request header must contain a current ThingSpace authorization token and a current VZ-M2M session token. For more details on how to get these tokens, visit [Getting Started](https://thingspace.verizon.com/documentation/api-documentation.html#/http/session-management/guides/getting-started). | Parameter Name | Data Type | Description | |:-----------------------|:-----------|:-----------------------------------------------------------------------------| | **Authorization** <br> _required_ | string | HTTP Authorization bearer token: <br> `Authorization: Bearer {token}` | | **VZ-M2M-Token** <br> _required_ | string | A valid session token: <br> `VZ-M2M-Token: {M2Mtoken}` | ## Request Body | Parameter Name | Data Type | Description | | :---------------------------- | :--------- | :----------- | | **addOrRemoveDevice** | object | Adds or removes devices to existing software upgrade information. | | addOrRemoveDevice.Type | string | The type of action you want to take. Valid values include: <ul><li> **append** to add devices </li><li> **remove** to remove devices </li></ul> | | addOrRemoveDevice.deviceList | object | List of device IMEIs | ## Example Request Request a software upgrade. ```json curl -X PUT https://thingspace.verizon.com/api/fota/v2/campaigns/$ACC/$CAMPAIGN_ID -H 'Authorization: Bearer $AUTH_TOKEN' -H 'VZ-M2M-Token: $M2M_TOKEN' -H 'Content-Type: application/json' -d { "addOrRemoveDevice": [ { "type": "remove", "deviceList":[ "900000000000009", "900000000000008", "900000000000007" ] } ] } ``` ## Success Responses **Status 200** | Parameter Name | Data Type | Description | |:----------------|:-----------|:-------------| | **accountName** | string | The account name. | | **campaignId** | string | Software upgrade identifier, returned in the “id” value of the `POST /{campaigns}/{accountName}` response when the upgrade was scheduled. | | **requestId** | string | Request identifier. | ## Example Success Response ```json { "accountName": "0000123456-00001", "campaignId": "60b5d639-eeee-ffff-gggg-069bd94c95bf", "requestId": "string" } ``` ## Failure Responses **Status 400** All error messages are returned in this format: ```json { "errorCode": "error code string", "errorMessage": "error message string" } ``` Error codes and messages are listed on the Error Messages page, along with explanations and suggestions for corrective actions.