# Quotas

## Get Region Quota

`client.Quotas.Get(ctx, region) (*Quota, error)`

**get** `/v1/quotas/{region}`

Get quota usage and limits for the current organization in a single region

### Parameters

- `region QuotaGetParamsRegion`

  - `const QuotaGetParamsRegionUsSva2 QuotaGetParamsRegion = "us-sva-2"`

### Returns

- `type Quota struct{…}`

  Quota response.

  - `Compute QuotaCompute`

    Compute quota.

    - `MemoryGB QuotaDimensionDetail`

      Quota dimension detail.

      - `Limit int64`

      - `Remaining int64`

      - `Used int64`

    - `Vcpu QuotaDimensionDetail`

      Quota dimension detail.

  - `Networking QuotaNetworking`

    Networking quota.

    - `ConnectConnections QuotaDimensionDetail`

      Quota dimension detail.

    - `PublicIPs QuotaDimensionDetail`

      Quota dimension detail.

    - `VPCs QuotaDimensionDetail`

      Quota dimension detail.

  - `NKS QuotaNKS`

    NKS quota.

    - `Clusters QuotaDimensionDetail`

      Quota dimension detail.

    - `NodePoolMemoryGB QuotaDimensionDetail`

      Quota dimension detail.

    - `NodePoolVcpu QuotaDimensionDetail`

      Quota dimension detail.

    - `PublicIPs QuotaDimensionDetail`

      Quota dimension detail.

  - `Region RegionName`

    Region the resource is in.

    - `const RegionNameUsSva2 RegionName = "us-sva-2"`

  - `Storage QuotaStorage`

    Storage quota.

    - `ABS QuotaDimensionDetail`

      Quota dimension detail.

    - `LocalNvme QuotaDimensionDetail`

      Quota dimension detail.

### 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/quotas"
)

func main() {
  client := nirvana.NewClient(
    option.WithAPIKey("My API Key"),
  )
  quota, err := client.Quotas.Get(context.TODO(), quotas.QuotaGetParamsRegionUsSva2)
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", quota.Compute)
}
```

#### Response

```json
{
  "compute": {
    "memory_gb": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "vcpu": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    }
  },
  "networking": {
    "connect_connections": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "public_ips": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "vpcs": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    }
  },
  "nks": {
    "clusters": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "node_pool_memory_gb": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "node_pool_vcpu": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "public_ips": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    }
  },
  "region": "us-sva-2",
  "storage": {
    "abs": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    },
    "local_nvme": {
      "limit": 32,
      "remaining": 24,
      "used": 8
    }
  }
}
```

## List Quotas

`client.Quotas.List(ctx) (*QuotaList, error)`

**get** `/v1/quotas`

List quota usage and limits for the current organization across all regions

### Returns

- `type QuotaList struct{…}`

  - `Items []Quota`

    - `Compute QuotaCompute`

      Compute quota.

      - `MemoryGB QuotaDimensionDetail`

        Quota dimension detail.

        - `Limit int64`

        - `Remaining int64`

        - `Used int64`

      - `Vcpu QuotaDimensionDetail`

        Quota dimension detail.

    - `Networking QuotaNetworking`

      Networking quota.

      - `ConnectConnections QuotaDimensionDetail`

        Quota dimension detail.

      - `PublicIPs QuotaDimensionDetail`

        Quota dimension detail.

      - `VPCs QuotaDimensionDetail`

        Quota dimension detail.

    - `NKS QuotaNKS`

      NKS quota.

      - `Clusters QuotaDimensionDetail`

        Quota dimension detail.

      - `NodePoolMemoryGB QuotaDimensionDetail`

        Quota dimension detail.

      - `NodePoolVcpu QuotaDimensionDetail`

        Quota dimension detail.

      - `PublicIPs QuotaDimensionDetail`

        Quota dimension detail.

    - `Region RegionName`

      Region the resource is in.

      - `const RegionNameUsSva2 RegionName = "us-sva-2"`

    - `Storage QuotaStorage`

      Storage quota.

      - `ABS QuotaDimensionDetail`

        Quota dimension detail.

      - `LocalNvme QuotaDimensionDetail`

        Quota dimension detail.

  - `Pagination Pagination`

    Pagination response details.

    - `NextCursor string`

    - `PreviousCursor string`

    - `TotalCount int64`

### 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"),
  )
  quotaList, err := client.Quotas.List(context.TODO())
  if err != nil {
    panic(err.Error())
  }
  fmt.Printf("%+v\n", quotaList.Items)
}
```

#### Response

```json
{
  "items": [
    {
      "compute": {
        "memory_gb": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "vcpu": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        }
      },
      "networking": {
        "connect_connections": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "public_ips": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "vpcs": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        }
      },
      "nks": {
        "clusters": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "node_pool_memory_gb": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "node_pool_vcpu": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "public_ips": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        }
      },
      "region": "us-sva-2",
      "storage": {
        "abs": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        },
        "local_nvme": {
          "limit": 32,
          "remaining": 24,
          "used": 8
        }
      }
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
```

## Domain Types

### Quota

- `type Quota struct{…}`

  Quota response.

  - `Compute QuotaCompute`

    Compute quota.

    - `MemoryGB QuotaDimensionDetail`

      Quota dimension detail.

      - `Limit int64`

      - `Remaining int64`

      - `Used int64`

    - `Vcpu QuotaDimensionDetail`

      Quota dimension detail.

  - `Networking QuotaNetworking`

    Networking quota.

    - `ConnectConnections QuotaDimensionDetail`

      Quota dimension detail.

    - `PublicIPs QuotaDimensionDetail`

      Quota dimension detail.

    - `VPCs QuotaDimensionDetail`

      Quota dimension detail.

  - `NKS QuotaNKS`

    NKS quota.

    - `Clusters QuotaDimensionDetail`

      Quota dimension detail.

    - `NodePoolMemoryGB QuotaDimensionDetail`

      Quota dimension detail.

    - `NodePoolVcpu QuotaDimensionDetail`

      Quota dimension detail.

    - `PublicIPs QuotaDimensionDetail`

      Quota dimension detail.

  - `Region RegionName`

    Region the resource is in.

    - `const RegionNameUsSva2 RegionName = "us-sva-2"`

  - `Storage QuotaStorage`

    Storage quota.

    - `ABS QuotaDimensionDetail`

      Quota dimension detail.

    - `LocalNvme QuotaDimensionDetail`

      Quota dimension detail.

### Quota Compute

- `type QuotaCompute struct{…}`

  Compute quota.

  - `MemoryGB QuotaDimensionDetail`

    Quota dimension detail.

    - `Limit int64`

    - `Remaining int64`

    - `Used int64`

  - `Vcpu QuotaDimensionDetail`

    Quota dimension detail.

### Quota Dimension Detail

- `type QuotaDimensionDetail struct{…}`

  Quota dimension detail.

  - `Limit int64`

  - `Remaining int64`

  - `Used int64`

### Quota List

- `type QuotaList struct{…}`

  - `Items []Quota`

    - `Compute QuotaCompute`

      Compute quota.

      - `MemoryGB QuotaDimensionDetail`

        Quota dimension detail.

        - `Limit int64`

        - `Remaining int64`

        - `Used int64`

      - `Vcpu QuotaDimensionDetail`

        Quota dimension detail.

    - `Networking QuotaNetworking`

      Networking quota.

      - `ConnectConnections QuotaDimensionDetail`

        Quota dimension detail.

      - `PublicIPs QuotaDimensionDetail`

        Quota dimension detail.

      - `VPCs QuotaDimensionDetail`

        Quota dimension detail.

    - `NKS QuotaNKS`

      NKS quota.

      - `Clusters QuotaDimensionDetail`

        Quota dimension detail.

      - `NodePoolMemoryGB QuotaDimensionDetail`

        Quota dimension detail.

      - `NodePoolVcpu QuotaDimensionDetail`

        Quota dimension detail.

      - `PublicIPs QuotaDimensionDetail`

        Quota dimension detail.

    - `Region RegionName`

      Region the resource is in.

      - `const RegionNameUsSva2 RegionName = "us-sva-2"`

    - `Storage QuotaStorage`

      Storage quota.

      - `ABS QuotaDimensionDetail`

        Quota dimension detail.

      - `LocalNvme QuotaDimensionDetail`

        Quota dimension detail.

  - `Pagination Pagination`

    Pagination response details.

    - `NextCursor string`

    - `PreviousCursor string`

    - `TotalCount int64`

### Quota Networking

- `type QuotaNetworking struct{…}`

  Networking quota.

  - `ConnectConnections QuotaDimensionDetail`

    Quota dimension detail.

    - `Limit int64`

    - `Remaining int64`

    - `Used int64`

  - `PublicIPs QuotaDimensionDetail`

    Quota dimension detail.

  - `VPCs QuotaDimensionDetail`

    Quota dimension detail.

### Quota NKS

- `type QuotaNKS struct{…}`

  NKS quota.

  - `Clusters QuotaDimensionDetail`

    Quota dimension detail.

    - `Limit int64`

    - `Remaining int64`

    - `Used int64`

  - `NodePoolMemoryGB QuotaDimensionDetail`

    Quota dimension detail.

  - `NodePoolVcpu QuotaDimensionDetail`

    Quota dimension detail.

  - `PublicIPs QuotaDimensionDetail`

    Quota dimension detail.

### Quota Storage

- `type QuotaStorage struct{…}`

  Storage quota.

  - `ABS QuotaDimensionDetail`

    Quota dimension detail.

    - `Limit int64`

    - `Remaining int64`

    - `Used int64`

  - `LocalNvme QuotaDimensionDetail`

    Quota dimension detail.
