# exchange resources — NCM API

Beta. The addressable things inside a NetCloud Exchange network, each carrying its name, IP or FQDN, protocols, port ranges and tags. Full lifecycle: list, create, update and delete. Resources belong to exchange sites and come in FQDN and IP-subnet variants, so define the site before the resources on it.

Base URL: https://api.cradlepointecm.com/api/v3

### GET /beta/exchange_resources

Get Exchange Resources

Retrieve a list of exchange resources with cursor pagination.

> **Beta:** This endpoint is served on a `/beta/` path. Beta endpoints are still evolving and may change without the stability guarantees of GA endpoints.

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| filter[exchange_site] | query | ULIDPattern | no | The identifier of the exchange site to filter resources by |
| filter[exchange_network] | query | ULIDPattern | no | The identifier of the exchange network to filter resources by |
| filter[type] | query | ResourceType | no | The type of the resource in exchange, selected from predefined resource types |
| filter[exchange_resource_template][is_null] | query | boolean | no | Specifies if the resource is an exchange resource template resource. |
| page[size] | query | integer | no | Set number of entries returned in every page. |
| page[before] | query | string | no | Retrieve the previous page based on the `before` field of a paginated response. |
| page[after] | query | string | no | Retrieve the next page based on the `after` field of a paginated response. |

**Example request**

```bash
curl "https://api.cradlepointecm.com/api/v3/beta/exchange_resources" \
  -H "Authorization: Bearer <token>"
```

**Response 200** — Successful response

```json
{
  "links": {
    "next": null,
    "prev": null
  },
  "data": [
    {
      "type": "exchange_ipsubnet_resources",
      "id": "01JT46DFVFY4AR50M4Z5A8XM1H",
      "attributes": {
        "name": "Beorn's 3CX",
        "tags": [],
        "protocols": null,
        "port_ranges": null,
        "editable": true,
        "created_at": "2025-04-30T20:32:37.237057Z",
        "updated_at": "2025-05-07T22:22:27.997842Z",
        "ip": "65.103.216.18/32",
        "static_prime_ip": null
      },
      "relationships": {
        "exchange_network": {
          "data": {
            "type": "exchange_networks",
            "id": "01JSMRN4C366XXXJ5ZGTT042TX"
          }
        },
        "exchange_site": {
          "data": {
            "type": "exchange_sites",
            "id": "01JSMRN4C3GH2FMAMZT71P6E0R"
          }
        },
        "exchange_resource_template": {
          "data": null
        }
      }
    }
  ]
}
```

**Response 400** — Bad Request

### POST /beta/exchange_resources

Create Exchange Resource

Create a new exchange resource.

> **Beta:** This endpoint is served on a `/beta/` path. Beta endpoints are still evolving and may change without the stability guarantees of GA endpoints.

**Request body**

**Example request**

```bash
curl -X POST "https://api.cradlepointecm.com/api/v3/beta/exchange_resources" \
  -H "Authorization: Bearer <token>"
```

**Response 201** — Resource created successfully

**Response 400** — Bad Request

### GET /beta/exchange_resources/{resourceId}

Get Exchange Resource by ID

Retrieve a single exchange resource by its ULID identifier.

> **Beta:** This endpoint is served on a `/beta/` path. Beta endpoints are still evolving and may change without the stability guarantees of GA endpoints.

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| resourceId | path | string | yes | The ULID identifier of the exchange resource |

**Example request**

```bash
curl "https://api.cradlepointecm.com/api/v3/beta/exchange_resources/{resourceId}" \
  -H "Authorization: Bearer <token>"
```

**Response 200** — OK

**Response 400** — Bad Request

### PUT /beta/exchange_resources/{resourceId}

Update Exchange Resource

Update an existing exchange resource by its ULID identifier.

> **Beta:** This endpoint is served on a `/beta/` path. Beta endpoints are still evolving and may change without the stability guarantees of GA endpoints.

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| resourceId | path | string | yes | The ULID identifier of the exchange resource |

**Request body**

**Example request**

```bash
curl -X PUT "https://api.cradlepointecm.com/api/v3/beta/exchange_resources/{resourceId}" \
  -H "Authorization: Bearer <token>"
```

**Response 200** — OK

```json
{
  "data": {
    "type": "exchange_fqdn_resources",
    "id": "4P4W8HCCWFKCBKER9CC8BCAR3",
    "attributes": {
      "name": "HTTP Server",
      "editable": true,
      "protocols": [
        "TCP"
      ],
      "tags": [
        "string"
      ],
      "port_ranges": [
        {
          "lower_limit": 21,
          "upper_limit": 22
        }
      ],
      "created_at": "2023-08-02T16:55:12.109698Z",
      "updated_at": "2023-08-02T16:55:12.109698Z",
      "domain": "my-resource.domain.com"
    },
    "relationships": {
      "exchange_network": {
        "data": {
          "id": "",
          "type": "exchange_networks"
        }
      },
      "exchange_site": {
        "data": {
          "id": "string",
          "type": "exchange_sites"
        }
      },
      "exchange_resource_template": {
        "data": {
          "id": "",
          "type": "exchange_resource_templates"
        }
      }
    }
  }
}
```

**Response 400** — Bad Request

**Response 404** — Not Found

### DELETE /beta/exchange_resources/{resourceId}

Delete Exchange Resource

Delete an existing exchange resource by its ULID identifier.

> **Beta:** This endpoint is served on a `/beta/` path. Beta endpoints are still evolving and may change without the stability guarantees of GA endpoints.

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| resourceId | path | string | yes | The ULID identifier of the exchange resource |

**Example request**

```bash
curl -X DELETE "https://api.cradlepointecm.com/api/v3/beta/exchange_resources/{resourceId}" \
  -H "Authorization: Bearer <token>"
```

**Response 204** — Resource deleted successfully

**Response 404** — Not Found
