# Infrastructure Endpoints

### List Cloud Providers

Returns a list of available Cloud Providers. These are Frame IaaS cloud providers, such as Amazon, Azure, and Google, using Frame-managed subscriptions.

<span class="badge badge-get">GET</span> <code>/cloud_providers</code>


<details open>
<summary><strong>Request Example</strong></summary>

```bash
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/cloud_providers"
```

</details>

<details>
<summary><strong>Response Example</strong></summary>

```json
[
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "AWS",
    "external_id": "gateway-prod.2",
    "formation_url": null,
    "name": "amazon"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Azure",
    "external_id": "gateway-prod.4",
    "formation_url": null,
    "name": "azure"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Google",
    "external_id": "gateway-prod.5",
    "formation_url": "https://console.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https%3A%2F%2Fgithub.com%2Fmainframe2%2Fgcp-byo-cloud-shell-deployment.git&cloudshell_git_branch=prod_role_deployment&cloudshell_open_in_editor=deploy.sh",
    "name": "google"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Nutanix-AHV",
    "external_id": "gateway-prod.3",
    "formation_url": null,
    "name": "nutanix"
  }
]
```

```bash
Status: 200 "OK"
```

</details>



---

### List Datacenters

Provides a list of datacenters associated with the cloud service along with what Frame Image Families and Instance Types are available in each datacenter.

<span class="badge badge-get">GET</span> <code>/datacenters</code>

#### Request Parameters

| Parameter                  | Description                                                                                                                                                                              | Param Type   | Data Type | Required |
| -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------ | --------- | -------- |
| external_cloud_service_id  | Filters results based on the ID of a Cloud Service provider (BYO Infrastructure). If you're not using Frame IaaS and you instead brought your own cloud provider, this is what you want. | Search Query | String    | False    |
| external_cloud_provider_id | Filters results based on the Frame IaaS Cloud Provider ID for AWS, Azure, GCP, or Nutanix.                                                                                               | Search Query | String    | False    |


<details open>
<summary><strong>Request Example</strong></summary>

```bash
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/datacenters?external_cloud_service_id=gateway-prod.1337""
```

</details>

<details>
<summary><strong>Response Example</strong></summary>

```json
[
  {
    "availability_zones": [
      "us-east-1a",
      "us-east-1b",
      "us-east-1c",
      "us-east-1d",
      "us-east-1e",
      "us-east-1f"
    ],
    "bare_metal": true,
    "configured": null,
    "display_name": "Northern Virginia",
    "geo_lat": 39.043611,
    "geo_long": -77.4875,
    "id": "gateway-prod.1",
    "image_families": [],
    "name": "aws-va",
    "region": "us-east-1"
  }
  // ...
]
```

```bash
Status: 200 "OK"
```

</details>



---

### List Image Families

Returns all image families and their supported instance types.

<span class="badge badge-get">GET</span> <code>/image_families</code>

#### Request Parameters

| Parameter           | Description                                                                                  | Param Type   | Data Type | Required |
| ------------------- | -------------------------------------------------------------------------------------------- | ------------ | --------- | -------- |
| cloud_provider_name | Filter results by the Cloud Provider's name, e.g. “amazon”, “azure”, “google”, or “nutanix”. | Search Query | String    | False    |
| byo                 | Determines wether or not to filter by BYO (Bring your own infrastructure) or not.            | Search Query | Boolean   | False    |


<details open>
<summary><strong>Request Example</strong></summary>

```bash
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/image_families?external_data_center_id=${external_datacenter_id}&cloud_provider_name=amazon"
```

</details>

<details>
<summary><strong>Response Example</strong></summary>

```json
[
  {
    "display_name": "Windows Server 2016",
    "external_id": "gateway-prod.x",
    "id": "gateway-prod.x",
    "instance_types": [
      {
        "display_name": "Air 4GB",
        "external_id": "gateway-prod.x",
        "gpu": "None",
        "id": "gateway-prod.x",
        "name": "t2.medium",
        "ram": 4,
        "vcpu": 2
      }
    ],
    "master_image_copy_required": false,
    "name": "WindowsServer2016"
  }
  // ...
]
```

```bash
Status: 200 OK
```

</details>



### List Cloud Services

Returns a list of [registered Cloud Service Providers](/books/platform-administrators-guide/page/bring-your-own) configured with Frame.

<span class="badge badge-get">GET</span> <code>/cloud_services</code>

#### Request Parameters

| Name                | Description                                                                                | Param Type   | Data Type | Required |
| ------------------- | ------------------------------------------------------------------------------------------ | ------------ | --------- | -------- |
| organization_id     | Filters results based on a provided Nutanix Organization ID.                               | Search Query | String    | True     |
| name                | Filters results based on a Cloud Service's “name” field.                                   | Search Query | String    | False    |
| cloud_provider_name | Filters results based on the specified cloud provider: amazon, azure, google, or nutanix   | Search Query | String    | False    |
| active              | Filters results by their active status - useful for filtering out inactive cloud services. | Search Query | Boolean   | False    |
| omit_default        | If true, omits Frame's default Cloud Services from the results.                            | Search Query | Boolean   | False    |


<details open>
<summary><strong>Request Example</strong></summary>

```bash
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/cloud_services"
```

</details>

<details>
<summary><strong>Response Example</strong></summary>

```json
[
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "AWS",
    "external_id": "gateway-prod.2",
    "formation_url": null,
    "name": "amazon"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Nutanix-AHV",
    "external_id": "gateway-prod.3",
    "formation_url": null,
    "name": "nutanix"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Azure",
    "external_id": "gateway-prod.4",
    "formation_url": null,
    "name": "azure"
  },
  {
    "byo_compatible": true,
    "datacenters": null,
    "display_name": "Google",
    "external_id": "gateway-prod.5",
    "formation_url": "https://console.cloud.google.com/cloudshell/editor?cloudshell_git_repo=https://yadda.com/etc/",
    "name": "google"
  }
  // ...
]
```

```bash
Status: 200 "OK"
```

</details>



---

### List Cloud Service VPCs

Returns a list of VPCs and their Subnets for a Cloud Service & Datacenter by ID.

<span class="badge badge-get">GET</span> <code>/cloud_services/:cloud_service_id/vpcs</code>

#### Request Parameters

| Parameter        | Description                                             | Param Type   | Data Type | Required |
| ---------------- | ------------------------------------------------------- | ------------ | --------- | -------- |
| cloud_service_id | ID of the Cloud Services hosting VPCs.                  | Search Query | String    | True     |
| datacenter_id    | ID of the Datacenter that you'd like to list VPCs from. | Search Query | String    | True     |


<details open>
<summary><strong>Request Example</strong></summary>

```bash
curl -X GET \
-H "X-Frame-ClientId: ${client_id}" \
-H "X-Frame-Timestamp: ${timestamp}" \
-H "X-Frame-Signature: ${signature}" \
"https://api.console.nutanix.com/v1/cloud_services
```

</details>

<details>
<summary><strong>Response Example</strong></summary>

```json
[
  {
    "cidr": "10.0.0.0/18",
    "id": "vpc-1d0a7baa5a9a1e71f",
    "name": "prod:v8675309:vpc0",
    "resource_group": null,
    "subnets": [
      {
        "az": "us-east-2c",
        "cidr": "10.0.16.0/21",
        "delegated": null,
        "id": "subnet-01586eaf1f4182ed8",
        "name": "prod:v8675309:sn2",
        "nat_gateway": null,
        "private": false,
        "resource_group": null
      },
      {
        "az": "us-east-2b",
        "cidr": "10.0.8.0/21",
        "delegated": null,
        "id": "subnet-0c1a9ce0dc7c1de1e",
        "name": "prod:v8675309:sn1",
        "nat_gateway": null,
        "private": false,
        "resource_group": null
      },
      {
        "az": "us-east-2a",
        "cidr": "10.0.0.0/21",
        "delegated": null,
        "id": "subnet-07c93b527007eb542",
        "name": "prod:v8675309:sn0",
        "nat_gateway": null,
        "private": false,
        "resource_group": null
      }
    ]
  }
  // ... more VPCs and subnets.
]
```

```bash
Status: 200 "OK"
```

</details>