# List the campaigns on the connected SideShift account

`GET https://api.tryscouty.com/v1/campaigns/{campaignId}/activation/sideshift/campaigns`

Lists the campaigns on the SideShift account this campaign is connected to, as ids and names, for choosing which one it maps to. error is "unavailable" when SideShift could not be asked.

- Scope: `campaigns:read`
- Kind: read
- MCP tool: `scouty_list_sideshift_campaigns`

## Authorization

Send `Authorization: Bearer $SCOUTY_TOKEN`. The token needs the `campaigns:read` scope.

## Path parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `campaignId` | `integer` | Required | The campaign whose activation flow this is about. |

## Request

### cURL

```bash
curl -s https://api.tryscouty.com/v1/campaigns/42/activation/sideshift/campaigns \
  -H "Authorization: Bearer $SCOUTY_TOKEN"
```

### JavaScript

```js
const response = await fetch("https://api.tryscouty.com/v1/campaigns/42/activation/sideshift/campaigns", {
  headers: {
    Authorization: `Bearer ${process.env.SCOUTY_TOKEN}`,
  },
});
console.log(await response.json());
```

### Python

```python
import os

import requests

token = os.environ["SCOUTY_TOKEN"]
response = requests.get(
    "https://api.tryscouty.com/v1/campaigns/42/activation/sideshift/campaigns",
    headers={"Authorization": f"Bearer {token}"},
)
print(response.json())
```

## Responses

### 200 OK

```json
{
  "campaignId": 42,
  "connected": true,
  "campaigns": [
    {
      "id": "ss-1",
      "name": "Acme Spring"
    },
    {
      "id": "ss-2",
      "name": "Acme Summer"
    }
  ],
  "chosen": "ss-1"
}
```

### 401 Unauthorized

```json
{
  "error": {
    "code": "missing_token",
    "message": "This API needs an Authorization header carrying a bearer token."
  }
}
```

### 403 Forbidden

```json
{
  "error": {
    "code": "insufficient_scope",
    "message": "This token does not carry the campaigns:read scope. Ask the team for one that does."
  }
}
```

### 404 Not Found

```json
{
  "error": {
    "code": "not_found",
    "message": "No such campaign."
  }
}
```

### 429 Too Many Requests

```json
{
  "error": {
    "code": "rate_limited",
    "message": "Too many requests. Please wait for the current minute to end."
  }
}
```

## Errors

| Status | `error.code` | Meaning |
|---|---|---|
| 401 Unauthorized | `missing_token`, `invalid_token`, `token_revoked`, `token_expired`, `token_orphaned` | No token, or one that is not recognized, revoked or expired. |
| 403 Forbidden | `insufficient_scope`, `wrong_principal` | The token does not carry the scope this capability needs. |
| 404 Not Found | `not_found` | No such route, or no such campaign for this client. |
| 429 Too Many Requests | `rate_limited` | Too many requests this minute. Retry-After says how long is left. |

Full reference: https://docs.tryscouty.com/reference
