# Regions

## Get Region

`client.Regions.Get(ctx, name) (*Region, error)`

**get** `/v1/regions/{name}`

Get a region by name

### Parameters

- `name string`

### Returns

- `type Region struct{…}`

  Region response with product availability.

  - `Availability RegionAvailability`

    Availability status of the region.

    - `const RegionAvailabilityLive RegionAvailability = "live"`

    - `const RegionAvailabilityPreview RegionAvailability = "preview"`

    - `const RegionAvailabilityMaintenance RegionAvailability = "maintenance"`

    - `const RegionAvailabilitySunset RegionAvailability = "sunset"`

  - `Compute RegionCompute`

    Compute products available in this region.

    - `VMs bool`

      VMs indicates if Virtual Machines are available.

  - `Name string`

    Name of the region.

  - `Networking RegionNetworking`

    Networking products available in this region.

    - `Connect bool`

      Connect indicates if Nirvana Connect is available.

    - `VPCs bool`

      VPCs indicates if Virtual Private Clouds are available.

  - `NKS RegionNKS`

    NKS products available in this region.

    - `Autoscaling bool`

      Autoscaling indicates if NKS node pool autoscaling is available.

    - `Clusters bool`

      Clusters indicates if NKS managed Kubernetes clusters are available.

  - `Storage RegionStorage`

    Storage products available in this region.

    - `ABS bool`

      ABS indicates if Accelerated Block Storage is available.

    - `LocalNvme bool`

      LocalNVMe indicates if locally-attached NVMe storage is available.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/nirvana-labs/nirvana-go"
  "github.com/nirvana-labs/nirvana-go/option"
)

func main() {
  client := nirvana.NewClient(
    option.WithAPIKey("My API Key"),
  )
  region, err := client.Regions.Get(context.TODO(), "us-sva-2")
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", region.Availability)
}
```

#### Response

```json
{
  "availability": "live",
  "compute": {
    "vms": true
  },
  "name": "us-sva-2",
  "networking": {
    "connect": true,
    "vpcs": true
  },
  "nks": {
    "autoscaling": false,
    "clusters": false
  },
  "storage": {
    "abs": false,
    "local_nvme": true
  }
}
```

## List Regions

`client.Regions.List(ctx, query) (*Cursor[Region], error)`

**get** `/v1/regions`

List all regions

### Parameters

- `query RegionListParams`

  - `Cursor param.Field[string]`

    Pagination cursor returned by a previous request

  - `Limit param.Field[int64]`

    Maximum number of items to return

### Returns

- `type Region struct{…}`

  Region response with product availability.

  - `Availability RegionAvailability`

    Availability status of the region.

    - `const RegionAvailabilityLive RegionAvailability = "live"`

    - `const RegionAvailabilityPreview RegionAvailability = "preview"`

    - `const RegionAvailabilityMaintenance RegionAvailability = "maintenance"`

    - `const RegionAvailabilitySunset RegionAvailability = "sunset"`

  - `Compute RegionCompute`

    Compute products available in this region.

    - `VMs bool`

      VMs indicates if Virtual Machines are available.

  - `Name string`

    Name of the region.

  - `Networking RegionNetworking`

    Networking products available in this region.

    - `Connect bool`

      Connect indicates if Nirvana Connect is available.

    - `VPCs bool`

      VPCs indicates if Virtual Private Clouds are available.

  - `NKS RegionNKS`

    NKS products available in this region.

    - `Autoscaling bool`

      Autoscaling indicates if NKS node pool autoscaling is available.

    - `Clusters bool`

      Clusters indicates if NKS managed Kubernetes clusters are available.

  - `Storage RegionStorage`

    Storage products available in this region.

    - `ABS bool`

      ABS indicates if Accelerated Block Storage is available.

    - `LocalNvme bool`

      LocalNVMe indicates if locally-attached NVMe storage is available.

### Example

```go
package main

import (
  "context"
  "fmt"

  "github.com/nirvana-labs/nirvana-go"
  "github.com/nirvana-labs/nirvana-go/option"
  "github.com/nirvana-labs/nirvana-go/regions"
)

func main() {
  client := nirvana.NewClient(
    option.WithAPIKey("My API Key"),
  )
  page, err := client.Regions.List(context.TODO(), regions.RegionListParams{

  })
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", page)
}
```

#### Response

```json
{
  "items": [
    {
      "availability": "live",
      "compute": {
        "vms": true
      },
      "name": "us-sva-2",
      "networking": {
        "connect": true,
        "vpcs": true
      },
      "nks": {
        "autoscaling": false,
        "clusters": false
      },
      "storage": {
        "abs": false,
        "local_nvme": true
      }
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### Region

- `type Region struct{…}`

  Region response with product availability.

  - `Availability RegionAvailability`

    Availability status of the region.

    - `const RegionAvailabilityLive RegionAvailability = "live"`

    - `const RegionAvailabilityPreview RegionAvailability = "preview"`

    - `const RegionAvailabilityMaintenance RegionAvailability = "maintenance"`

    - `const RegionAvailabilitySunset RegionAvailability = "sunset"`

  - `Compute RegionCompute`

    Compute products available in this region.

    - `VMs bool`

      VMs indicates if Virtual Machines are available.

  - `Name string`

    Name of the region.

  - `Networking RegionNetworking`

    Networking products available in this region.

    - `Connect bool`

      Connect indicates if Nirvana Connect is available.

    - `VPCs bool`

      VPCs indicates if Virtual Private Clouds are available.

  - `NKS RegionNKS`

    NKS products available in this region.

    - `Autoscaling bool`

      Autoscaling indicates if NKS node pool autoscaling is available.

    - `Clusters bool`

      Clusters indicates if NKS managed Kubernetes clusters are available.

  - `Storage RegionStorage`

    Storage products available in this region.

    - `ABS bool`

      ABS indicates if Accelerated Block Storage is available.

    - `LocalNvme bool`

      LocalNVMe indicates if locally-attached NVMe storage is available.

### Region Availability

- `type RegionAvailability string`

  Availability status of the region.

  - `const RegionAvailabilityLive RegionAvailability = "live"`

  - `const RegionAvailabilityPreview RegionAvailability = "preview"`

  - `const RegionAvailabilityMaintenance RegionAvailability = "maintenance"`

  - `const RegionAvailabilitySunset RegionAvailability = "sunset"`

### Region List

- `type RegionList struct{…}`

  - `Items []Region`

    - `Availability RegionAvailability`

      Availability status of the region.

      - `const RegionAvailabilityLive RegionAvailability = "live"`

      - `const RegionAvailabilityPreview RegionAvailability = "preview"`

      - `const RegionAvailabilityMaintenance RegionAvailability = "maintenance"`

      - `const RegionAvailabilitySunset RegionAvailability = "sunset"`

    - `Compute RegionCompute`

      Compute products available in this region.

      - `VMs bool`

        VMs indicates if Virtual Machines are available.

    - `Name string`

      Name of the region.

    - `Networking RegionNetworking`

      Networking products available in this region.

      - `Connect bool`

        Connect indicates if Nirvana Connect is available.

      - `VPCs bool`

        VPCs indicates if Virtual Private Clouds are available.

    - `NKS RegionNKS`

      NKS products available in this region.

      - `Autoscaling bool`

        Autoscaling indicates if NKS node pool autoscaling is available.

      - `Clusters bool`

        Clusters indicates if NKS managed Kubernetes clusters are available.

    - `Storage RegionStorage`

      Storage products available in this region.

      - `ABS bool`

        ABS indicates if Accelerated Block Storage is available.

      - `LocalNvme bool`

        LocalNVMe indicates if locally-attached NVMe storage is available.

  - `Pagination Pagination`

    Pagination response details.

    - `NextCursor string`

    - `PreviousCursor string`

    - `TotalCount int64`
