API Reference
## Move Devices to Another Account ### Uses and Requirements Device Moves vs. Transfers A Device Move involves moving a device from one billing account to another billing account (e.g. 0123456789-00001 to 9876543210-00001). A Device Transfer involves moving a device from one sub-account to another sub-account under the same billing account (e.g. 0123456789-00001 to 0123456789-00002). Device History All device history (usage history, connection history, etc.) from before the move is retained under the original billing account. Data usage and connections that occur after the move are tracked under the new account. Device attributes, such as service plan and custom field values, are retained when possible, or new values can be specified. Usage Notes - You can only move devices that are in the active state. - The suspension history for moved devices is reset to zero days suspended. - Use separate requests to move 3G and 4G devices unless your accounts are set up to allow both types of devices in the same service plan. - Only move devices from one account at a time. If the request includes devices from more than one account, the devices from one account will be moved and the devices from other accounts will fail. - Both accounts that are "move from/move to" must be under the same ECPD - You must have account access to both the "move to" account and the "move from" account Account Requirements - The customer profile must be enabled for IoT Order flow. - Devices cannot be moved between subaccounts under a single billing account. - The billing accounts cannot have customer-defined stage states. ThingSpace sends an asynchronous CarrierService callback message for each device in the request when the device has been moved, or if there was a problem and the move failed. ### Request Components HTTP Request PUT [https://thingspace.verizon.com/api/m2m/v1/devices/actions/move](/docs/standard-apis/connectivity-management/api-endpoints/device-management/move-devices-within-accounts-of-profile/movedeviceswithinaccountsofprofile) Resource Path and Query Parameters None. ### Header Parameters The request header must contain a current ThingSpace authorization bearer token and a valid VZ-M2M session token, and must set the content-type to JSON. | Parameter Name | Data Type | Description | |:-----------------------:|:---------:|:------------------------------------------------------:| | Authorization required | string | HTTP Authorization bearer token. | | VZ-M2M-Token required | string | A valid session token returned by POST /session/login. | | Content-Type required | string | Must be application/json. | ### equest Body The request body identifies the devices that you want to move to another account. You can either specify individual devices in the devices parameter, or you can use the filter parameters to work with devices that match the filter parameter values. | Parameter Name | Data Type | Description | |:----------------------------------------:|:---------------------------:|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------:| | devices optional | array of deviceIds objects | Up to 10,000 devices that you want to move to a different account, specified by device identifier. NOTES Do not include this parameter if you want to use the filter parameter to select devices by metadata values. | | kind, id required for devices | string | The type and value of the device identifier. ESN - decimal, 11 digits ICCID - decimal, up to 20 digits IMEI - decimal, up to 16 digits MDN - decimal, 10 digits MEID - hexadecimal, 14 characters MSISDN - decimal, 11 digits | | filter optional | list of filter parameters | Parameter names and values that you want to use to select the devices to move, instead of specifyng individual devices. If you specify multiple parameters, they will be ANDed together so that only devices that match all of them will be changed. | | account | string | The name of a billing account if you have access to multiple accounts and want to include devices in only one account. (An account name is usually numeric, and must include any leading zeros.) | | groupName | string | The name of a device group, to only include devices in that group. | | servicePlan | string | The name of a service plan, to only include devices with that service plan. | | customFields | list of customfield objects | Custom field names and values, if you want to only include devices that have matching values. | | key required for customFields filter | string | The name of the custom field. Valid names are CustomField1, CustomField2, CustomField3, CustomField4, and CustomField5. | | value required for customFields filter | string | The value of the custom field. | | accountName required | string | The name of the billing account that you want to move the devices to. | | servicePlan optional | string | The service plan code that you want to assign to the devices in the new account. If you do not include this element, ThingSpace will attempt to use the current service plan, which will result in a error if the new account does not have that service plan. | | groupName optional | string | The name of the device group in the new account that the devices should be assigned to. If omitted, ThingSpace will use the current device group name, which will result in an error if the new account does not have a device group with that name. The devices are only assigned to the device group if the move is successful. | | customFields optional | list of customField objects | The names and values of up to five custom fields that you want to set for the devices in the new account. Any existing custom field values will be kept unless you change them by specifying them here. | | key required for customFields | string | The name of the custom field. Valid names are CustomField1, CustomField2, CustomField3, CustomField4, and CustomField5. | | value required for customFields | string | The value of the custom field. | | carrierIpPoolName optional | string | The pool from which device IP addresses will be derived in the new account. If you do not include this element, the default pool will be used. | Example Request Body Move a single device ```json { "devices":[ { "deviceIds":[ { "kind":"ESN", "id":"19110173057" } ] } ], "accountName":"0212345678-00001", "servicePlan":"M2M5GB" } ``` Move all devices that are in a specified device group and that have a specified custom field value ```json { "filter":{ "groupName":"Short-Haul Trucks", "customFields":[ { "key":"CustomField1", "value":"East Region Trucks" } ] }, "accountName":"0212345678-00001", "servicePlan":"M2M5GB" } ``` ### Success Responses Status 200 | Parameter Name | Data Type | Description | |:--------------:|:---------:|:--------------------------------------------------------------------------------------------------:| | requestId | string | A unique string that associates the request with the results that are sent via a callback service. | ### Example Success Response ```json { "requestId": "ec682a8b-e288-4806-934d-24e7a59ed889" } ``` ### Example Success Callback Response ```json { "username":"", "password":"", "requestId":"ec682a8b-e288-4806-934d-24e7a59ed889", "deviceIds":[ { "id":"19110173057", "kind":"Esn" } ], "deviceResponse":{ "usageResponse":[ ], "moveDeviceResponse":{ "deviceIds":[ { "id":"19110173057", "kind":"Esn" } ], "accountName":"0212345678-00001" } }, "status":"Success", "callbackCount":1, "maxCallbackThreshold":4 } ```