--- id: upgrade-downgrade-collectors title: Upgrade or Downgrade Collectors Using the API sidebar_label: Upgrade or Downgrade Collectors slug: /help/docs/api/collector-management/upgrade-downgrade-collectors/ canonical: https://www.sumologic.com/help/docs/api/collector-management/upgrade-downgrade-collectors/ --- View and manage the software versions of your Installed Collectors through HTTP endpoints. Use these HTTP endpoints to upgrade or downgrade Collectors. We recommend you follow our [best practices](/docs/send-data/collection/upgrade-collectors#collector-upgrade-best-practices) when you upgrade your Collectors. :::warning Collector Management APIs are not yet built with OpenAPI specifications and therefore not included in our [Swagger docs](https://api.sumologic.com/docs/). Instead, refer to the below documentation. ::: The upgrade may automatically be done in increments. In this case, you may experience longer upgrade times. There is a community-supported script available on GitHub that allows you to conduct bulk actions to Collectors, see [Collector Management Script](https://github.com/SumoLogic/collector-management-client). ## Timeout If an upgrade task does not complete successfully after 30 minutes, it will automatically time out with a status of `failed`. ## GET methods ### Get upgradable Collectors
GETcollectors/upgrades/collectors

Sends a request to get Collectors you can upgrade. **Request Headers** | Key | Value | |:------------ |:------------------ | | Content-Type | `application/json` | | Accept | `application/json` | **Query Parameters** | Parameter | Type | Required | Default | Description | |:--------- |:------ |:-------- |:-------------- |:------------------------------- | | `toVersion` | String | No | Latest Version | Collector build to upgrade (or downgrade) to. If not specified, upgrades to the latest version. | | `offset` | Int | No | 0 | Offset into the list of Collectors. | | `limit` | Int | No | 50 | Maximum number of Collectors to return. | **Status Code** | Code | Text | Description | |:---- |:---------------------- |:----------------------------------------------- | | `200` | OK | Upgradable Collectors were retrieved and provided in the response payload. | | `415` | Unsupported Media Type | Content-Type wasn't set to `application/json`. | | `400` | Bad Request | A parameter wasn't valid. | **Success Result** A JSON document containing the upgradable collectors. **Sample Session** ```bash title="Sample request" curl -i -u ":" -X GET https://api.sumologic.com/api/v1/collectors/upgrades/collectors ``` ```json title="Sample response" { "collectors": [ { "id": 100000000, "name": "SumoCollector_Local", "hostName": "TestHost", "timeZone": "UTC", "links": [ { "rel": "sources", "href": "/v1/collectors/100000000/sources" } ], "ephemeral": false, "sourceSyncMode": "UI", "collectorType": "Installable", "collectorVersion": "20.1-2749", "osVersion": "10.11.5", "osName": "Mac OS X", "osArch": "x86_64", "lastSeenAlive": 1465848876035, "alive": true } ] } ```

--- ### Get available builds
GET/collectors/upgrades/targets

**Request Headers** | Key | Value | |:------------ |:------------------ | | Content-Type | `application/json` | | Accept | `application/json` | **Query Parameters** None **Status Code** | Code | Text | Description | |:---- |:---------------------- |:------------------------------ | | `200` | OK | The build information has been returned in the response payload. | | `415` | Unsupported Media Type | Content-Type wasn't set to `application/json`. | **Success Result** A JSON document containing the versions of collector builds, which includes the following fields. | Field | Data Type | Description | | :-------| :--------|:------------------------------ | | `version` | string | Version of the collector build. | | `latest` | boolean | Whether it's the latest version. | #### Examples ```bash title="Sample request" curl -i -u ":" -X GET https://api.sumologic.com/api/v1/collectors/upgrades/targets ``` ```json title="Sample response" { "targets": [ { "version": "19.115-37", "latest": false }, ... { "version": "20.1-2749", "latest": true } ] } ```

--- ### Get upgrade task status
GET/collectors/upgrades/{upgradeTaskID}

After obtaining the upgrade job ID, you can obtain the status of the upgrade task from the status endpoint. **Request Headers** | Key | Value | | :----------- | :----------------- | | Content-Type | `application/json` | | Accept | `application/json` | **Query Parameters** | Parameter | Type | Required | Description | |:------------- |:---- |:-------- |:------------------------------ | | `upgradeTaskID` | Long | Yes | Task ID from the upgrade task. | **Status Code** | Code | Text | Description | |:---- |:---------------------- |:--------------------- | | `200` | OK | The upgrade task status has been returned in the response. | | `415` | Unsupported Media Type | Content-Type wasn't set to `application/json`. | | `404` | Not found | The upgrade task ID was not found. | **Success Result** A success result generates a JSON document containing the upgrade task status, including the following fields. |Field |Description | |:------------|:--------------------------------------| |`collectorId` |Collector ID of this upgrade task (long). | |`toVersion` |Target version of this upgrade task (string). | |`requestedTime`|UNIX timestamp when the upgrade task is requested (long). | |status | Status code for the upgrade task (integer):
0 - not started
1 - pending, the upgrade is issued awaiting a response from the Collector.
2 - succeeded
3 - failed
6 - Progressing, the upgrade is running on the Collector.| |`message` |Any additional message, normally a failed reason (string). | **Sample session** ```bash title="Sample request" curl -i -u ":" -X GET https://api.sumologic.com/api/v1/collectors/upgrades/12345 ``` ```json title="Sample response" { "upgrade": { "id": 12345, "collectorId": 100000000, "toVersion": "19.152-1", "requestTime": 1465855411044, "status": 2, "message": "" } } ```

## POST Methods ### Create an upgrade or downgrade task
POST/collectors/upgrades

**Request Headers** |Key |Value | |:-----------|:-----------------| |Content-Type|`application/json`| |Accept |`application/json`| **Query Parameters** None **JSON Payload Parameters** |Parameter |Type |Required|Default |Description | |:----------|:-----|:-------|:-------------|:----------------------------------------------------------------------------------------------| |collectorId|Long |Yes | |Identifier of the Collector to upgrade (or downgrade). | |toVersion |String|No |Latest version|Collector build to upgrade (or downgrade) to. If not specified, upgrades to the latest version.| **Status Code** |Code|Text |Description | |:---|:---------------------|:-----------------------------------------------| |202 |Accepted |The upgrade task has been created successfully. | |415 |Unsupported Media Type|`Content-Type` wasn't set to `application/json`.| |400 |Bad Request |Generic request error by the client. | **Success Result** With success, a JSON document is returned containing the ID and link of the newly created upgrade task. This is an opaque string to use for following upgrade status checking API. **Error Result** A status code 400 will be returned with following error codes. |Code |Description | |:------------------------|:-------| |collector.invalid |The Collector ID was not provided, doesn't exist, or the user doesn't have permission to use it.| |collector.type.invalid |The Collector is not an Installed Collector (it is a Hosted Collector). | |collector.not.alive |The Collector is not running. | |collector.in.upgrading |The Collector is currently being upgraded. | |collector.version.invalid|The upgrade version was not provided, or the version is not valid. | **Sample Session** ```bash title="Sample request" curl -i -u ":" -H "Content-Type: application/json" -X POST -d '{"collectorId":100000000,"toVersion":"19.152-1"}' https://api.sumologic.com/api/v1/collectors/upgrades ``` ```json title="Sample response" { "id": "12345", "link": { "rel": "self", "href": "/v1/collectors/upgrades/12345" } } ```