Skip to content
Docs

List Operations

client.operations.list(OperationListParams { project_id, cursor, limit } query, RequestOptionsoptions?): Cursor<Operation { id, created_at, details, 6 more } >
GET/v1/operations

List all operations

ParametersExpand Collapse
query: OperationListParams { project_id, cursor, limit }
project_id: string

Project ID of resources to request

cursor?: string

Pagination cursor returned by a previous request

limit?: number

Maximum number of items to return

maximum100
minimum10
ReturnsExpand Collapse
Operation { id, created_at, details, 6 more }

Operation details.

id: string

Unique identifier for the Operation.

created_at: string

When the Operation was created.

formatdate-time
details: OperationDetails { changes } | null

Structured details about what an operation is changing.

changes: OperationChanges { from, to }

Map of changed field names to their from/to diffs. Keys depend on the parent operation’s kind+type.

from: string | number | boolean | Array<string>

Previous value.

One of the following:
string
number
boolean
Array<string>
to: string | number | boolean | Array<string>

New value.

One of the following:
string
number
boolean
Array<string>

Kind of Operation.

One of the following:
"vm"
"volume"
"vpc"
"firewall_rule"
"nks_cluster"
"nks_node_pool"
project_id: string

Project ID the Operation belongs to.

resource_id: string

ID of the resource that the Operation is acting on.

Status of the Operation.

One of the following:
"pending"
"running"
"done"
"failed"
"unknown"

Type of Operation.

One of the following:
"create"
"update"
"delete"
"restart"
updated_at: string

When the Operation was updated.

formatdate-time

List Operations

import NirvanaLabs from '@nirvana-labs/nirvana';

const client = new NirvanaLabs({
  apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted
});

// Automatically fetches more pages as needed.
for await (const operation of client.operations.list({ project_id: 'project_id' })) {
  console.log(operation.id);
}
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "details": {
        "changes": {
          "foo": {
            "from": "string",
            "to": "string"
          }
        }
      },
      "kind": "vm",
      "project_id": "123e4567-e89b-12d3-a456-426614174000",
      "resource_id": "123e4567-e89b-12d3-a456-426614174000",
      "status": "pending",
      "type": "create",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}
Returns Examples
{
  "items": [
    {
      "id": "123e4567-e89b-12d3-a456-426614174000",
      "created_at": "2025-01-01T00:00:00Z",
      "details": {
        "changes": {
          "foo": {
            "from": "string",
            "to": "string"
          }
        }
      },
      "kind": "vm",
      "project_id": "123e4567-e89b-12d3-a456-426614174000",
      "resource_id": "123e4567-e89b-12d3-a456-426614174000",
      "status": "pending",
      "type": "create",
      "updated_at": "2025-01-01T00:00:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "RhwniMT4B74siYZcPF8TnCdGI1l9rpPvg",
    "previous_cursor": "ARhwnmi1hA7wEbHbMjdYQlOB_ZusP4fYvw",
    "total_count": 125
  }
}