@nirvana-labs/nirvana-mcp 2.1.1 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -673,6 +673,192 @@ const EMBEDDED_METHODS: MethodEntry[] = [
673
673
  },
674
674
  },
675
675
  },
676
+ {
677
+ name: 'update',
678
+ endpoint: '/v1/organizations/{organization_id}/memberships/{membership_id}',
679
+ httpMethod: 'patch',
680
+ summary: 'Update Organization Membership',
681
+ description:
682
+ 'Change the role of a member of an organization. Owners may assign any role. Admins may assign admin, billing or member, and cannot change the role of an owner. The last owner cannot be demoted, and members cannot change their own role except for an owner stepping down while another owner remains.',
683
+ stainlessPath: '(resource) organizations.memberships > (method) update',
684
+ qualified: 'client.organizations.memberships.update',
685
+ params: [
686
+ 'organization_id: string;',
687
+ 'membership_id: string;',
688
+ "role: 'owner' | 'admin' | 'billing' | 'member';",
689
+ ],
690
+ response:
691
+ "{ id: string; created_at: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; updated_at: string; user_id: string; }",
692
+ markdown:
693
+ "## update\n\n`client.organizations.memberships.update(organization_id: string, membership_id: string, role: 'owner' | 'admin' | 'billing' | 'member'): { id: string; created_at: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; updated_at: string; user_id: string; }`\n\n**patch** `/v1/organizations/{organization_id}/memberships/{membership_id}`\n\nChange the role of a member of an organization. Owners may assign any role. Admins may assign admin, billing or member, and cannot change the role of an owner. The last owner cannot be demoted, and members cannot change their own role except for an owner stepping down while another owner remains.\n\n### Parameters\n\n- `organization_id: string`\n\n- `membership_id: string`\n\n- `role: 'owner' | 'admin' | 'billing' | 'member'`\n Role of the user in the organization.\n\n### Returns\n\n- `{ id: string; created_at: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; updated_at: string; user_id: string; }`\n Organization membership details.\n\n - `id: string`\n - `created_at: string`\n - `organization_id: string`\n - `role: 'owner' | 'admin' | 'billing' | 'member'`\n - `updated_at: string`\n - `user_id: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationMembership = await client.organizations.memberships.update('membership_id', { organization_id: 'organization_id', role: 'owner' });\n\nconsole.log(organizationMembership);\n```",
694
+ perLanguage: {
695
+ typescript: {
696
+ method: 'client.organizations.memberships.update',
697
+ example:
698
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nconst organizationMembership = await client.organizations.memberships.update('membership_id', {\n organization_id: 'organization_id',\n role: 'owner',\n});\n\nconsole.log(organizationMembership.id);",
699
+ },
700
+ http: {
701
+ example:
702
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/$MEMBERSHIP_ID \\\n -X PATCH \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \\\n -d \'{\n "role": "owner"\n }\'',
703
+ },
704
+ go: {
705
+ method: 'client.Organizations.Memberships.Update',
706
+ example:
707
+ 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n\t"github.com/nirvana-labs/nirvana-go/v2/organizations"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\torganizationMembership, err := client.Organizations.Memberships.Update(\n\t\tcontext.TODO(),\n\t\t"organization_id",\n\t\t"membership_id",\n\t\torganizations.MembershipUpdateParams{\n\t\t\tRole: organizations.MembershipUpdateParamsRoleOwner,\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", organizationMembership.ID)\n}\n',
708
+ },
709
+ },
710
+ },
711
+ {
712
+ name: 'delete',
713
+ endpoint: '/v1/organizations/{organization_id}/memberships/{membership_id}',
714
+ httpMethod: 'delete',
715
+ summary: 'Delete Organization Membership',
716
+ description:
717
+ 'Remove a member from an organization. Admins cannot remove an owner, and the last owner cannot be removed.',
718
+ stainlessPath: '(resource) organizations.memberships > (method) delete',
719
+ qualified: 'client.organizations.memberships.delete',
720
+ params: ['organization_id: string;', 'membership_id: string;'],
721
+ markdown:
722
+ "## delete\n\n`client.organizations.memberships.delete(organization_id: string, membership_id: string): void`\n\n**delete** `/v1/organizations/{organization_id}/memberships/{membership_id}`\n\nRemove a member from an organization. Admins cannot remove an owner, and the last owner cannot be removed.\n\n### Parameters\n\n- `organization_id: string`\n\n- `membership_id: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.organizations.memberships.delete('membership_id', { organization_id: 'organization_id' })\n```",
723
+ perLanguage: {
724
+ typescript: {
725
+ method: 'client.organizations.memberships.delete',
726
+ example:
727
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.organizations.memberships.delete('membership_id', {\n organization_id: 'organization_id',\n});",
728
+ },
729
+ http: {
730
+ example:
731
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/$MEMBERSHIP_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"',
732
+ },
733
+ go: {
734
+ method: 'client.Organizations.Memberships.Delete',
735
+ example:
736
+ 'package main\n\nimport (\n\t"context"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\terr := client.Organizations.Memberships.Delete(\n\t\tcontext.TODO(),\n\t\t"organization_id",\n\t\t"membership_id",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n',
737
+ },
738
+ },
739
+ },
740
+ {
741
+ name: 'create',
742
+ endpoint: '/v1/organizations/{organization_id}/memberships/invitations',
743
+ httpMethod: 'post',
744
+ summary: 'Create Organization Invitation',
745
+ description:
746
+ 'Invite an email address to join an organization with a role. The membership is created when the invitee accepts. Owners may invite with any role; admins may invite with admin, billing or member.',
747
+ stainlessPath: '(resource) organizations.memberships.invitations > (method) create',
748
+ qualified: 'client.organizations.memberships.invitations.create',
749
+ params: ['organization_id: string;', 'email: string;', "role: 'owner' | 'admin' | 'billing' | 'member';"],
750
+ response:
751
+ "{ id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }",
752
+ markdown:
753
+ "## create\n\n`client.organizations.memberships.invitations.create(organization_id: string, email: string, role: 'owner' | 'admin' | 'billing' | 'member'): { id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }`\n\n**post** `/v1/organizations/{organization_id}/memberships/invitations`\n\nInvite an email address to join an organization with a role. The membership is created when the invitee accepts. Owners may invite with any role; admins may invite with admin, billing or member.\n\n### Parameters\n\n- `organization_id: string`\n\n- `email: string`\n Email address to invite. Inviting an address that already belongs to a member of the organization fails.\n\n- `role: 'owner' | 'admin' | 'billing' | 'member'`\n Role of the user in the organization.\n\n### Returns\n\n- `{ id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }`\n Organization invitation details.\n\n - `id: string`\n - `created_at: string`\n - `email: string`\n - `expires_at: string`\n - `inviter_user_id: string`\n - `organization_id: string`\n - `role: 'owner' | 'admin' | 'billing' | 'member'`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationInvitation = await client.organizations.memberships.invitations.create('organization_id', { email: 'jane@example.com', role: 'owner' });\n\nconsole.log(organizationInvitation);\n```",
754
+ perLanguage: {
755
+ typescript: {
756
+ method: 'client.organizations.memberships.invitations.create',
757
+ example:
758
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nconst organizationInvitation = await client.organizations.memberships.invitations.create(\n 'organization_id',\n { email: 'jane@example.com', role: 'owner' },\n);\n\nconsole.log(organizationInvitation.id);",
759
+ },
760
+ http: {
761
+ example:
762
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/invitations \\\n -H \'Content-Type: application/json\' \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY" \\\n -d \'{\n "email": "jane@example.com",\n "role": "owner"\n }\'',
763
+ },
764
+ go: {
765
+ method: 'client.Organizations.Memberships.Invitations.New',
766
+ example:
767
+ 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n\t"github.com/nirvana-labs/nirvana-go/v2/organizations"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\torganizationInvitation, err := client.Organizations.Memberships.Invitations.New(\n\t\tcontext.TODO(),\n\t\t"organization_id",\n\t\torganizations.MembershipInvitationNewParams{\n\t\t\tEmail: "jane@example.com",\n\t\t\tRole: organizations.MembershipInvitationNewParamsRoleOwner,\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", organizationInvitation.ID)\n}\n',
768
+ },
769
+ },
770
+ },
771
+ {
772
+ name: 'list',
773
+ endpoint: '/v1/organizations/{organization_id}/memberships/invitations',
774
+ httpMethod: 'get',
775
+ summary: 'List Organization Invitations',
776
+ description:
777
+ 'List the invitations to an organization that are still pending: not yet accepted, revoked or expired. Only owners and admins may list invitations.',
778
+ stainlessPath: '(resource) organizations.memberships.invitations > (method) list',
779
+ qualified: 'client.organizations.memberships.invitations.list',
780
+ params: ['organization_id: string;'],
781
+ response:
782
+ "{ items: { id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }[]; pagination: { next_cursor: string; previous_cursor: string; total_count: number; }; }",
783
+ markdown:
784
+ "## list\n\n`client.organizations.memberships.invitations.list(organization_id: string): { items: organization_invitation[]; pagination: pagination; }`\n\n**get** `/v1/organizations/{organization_id}/memberships/invitations`\n\nList the invitations to an organization that are still pending: not yet accepted, revoked or expired. Only owners and admins may list invitations.\n\n### Parameters\n\n- `organization_id: string`\n\n### Returns\n\n- `{ items: { id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }[]; pagination: { next_cursor: string; previous_cursor: string; total_count: number; }; }`\n\n - `items: { id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }[]`\n - `pagination: { next_cursor: string; previous_cursor: string; total_count: number; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationInvitationList = await client.organizations.memberships.invitations.list('organization_id');\n\nconsole.log(organizationInvitationList);\n```",
785
+ perLanguage: {
786
+ typescript: {
787
+ method: 'client.organizations.memberships.invitations.list',
788
+ example:
789
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nconst organizationInvitationList = await client.organizations.memberships.invitations.list(\n 'organization_id',\n);\n\nconsole.log(organizationInvitationList.items);",
790
+ },
791
+ http: {
792
+ example:
793
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/invitations \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"',
794
+ },
795
+ go: {
796
+ method: 'client.Organizations.Memberships.Invitations.List',
797
+ example:
798
+ 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\torganizationInvitationList, err := client.Organizations.Memberships.Invitations.List(context.TODO(), "organization_id")\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", organizationInvitationList.Items)\n}\n',
799
+ },
800
+ },
801
+ },
802
+ {
803
+ name: 'resend',
804
+ endpoint: '/v1/organizations/{organization_id}/memberships/invitations/{invitation_id}/resend',
805
+ httpMethod: 'post',
806
+ summary: 'Resend Organization Invitation',
807
+ description:
808
+ "Send a pending invitation's email again. Owners may resend any invitation; admins may resend invitations with the admin, billing or member role.",
809
+ stainlessPath: '(resource) organizations.memberships.invitations > (method) resend',
810
+ qualified: 'client.organizations.memberships.invitations.resend',
811
+ params: ['organization_id: string;', 'invitation_id: string;'],
812
+ response:
813
+ "{ id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }",
814
+ markdown:
815
+ "## resend\n\n`client.organizations.memberships.invitations.resend(organization_id: string, invitation_id: string): { id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }`\n\n**post** `/v1/organizations/{organization_id}/memberships/invitations/{invitation_id}/resend`\n\nSend a pending invitation's email again. Owners may resend any invitation; admins may resend invitations with the admin, billing or member role.\n\n### Parameters\n\n- `organization_id: string`\n\n- `invitation_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; email: string; expires_at: string; inviter_user_id: string; organization_id: string; role: 'owner' | 'admin' | 'billing' | 'member'; }`\n Organization invitation details.\n\n - `id: string`\n - `created_at: string`\n - `email: string`\n - `expires_at: string`\n - `inviter_user_id: string`\n - `organization_id: string`\n - `role: 'owner' | 'admin' | 'billing' | 'member'`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationInvitation = await client.organizations.memberships.invitations.resend('invitation_id', { organization_id: 'organization_id' });\n\nconsole.log(organizationInvitation);\n```",
816
+ perLanguage: {
817
+ typescript: {
818
+ method: 'client.organizations.memberships.invitations.resend',
819
+ example:
820
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nconst organizationInvitation = await client.organizations.memberships.invitations.resend(\n 'invitation_id',\n { organization_id: 'organization_id' },\n);\n\nconsole.log(organizationInvitation.id);",
821
+ },
822
+ http: {
823
+ example:
824
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/invitations/$INVITATION_ID/resend \\\n -X POST \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"',
825
+ },
826
+ go: {
827
+ method: 'client.Organizations.Memberships.Invitations.Resend',
828
+ example:
829
+ 'package main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\torganizationInvitation, err := client.Organizations.Memberships.Invitations.Resend(\n\t\tcontext.TODO(),\n\t\t"organization_id",\n\t\t"invitation_id",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", organizationInvitation.ID)\n}\n',
830
+ },
831
+ },
832
+ },
833
+ {
834
+ name: 'delete',
835
+ endpoint: '/v1/organizations/{organization_id}/memberships/invitations/{invitation_id}',
836
+ httpMethod: 'delete',
837
+ summary: 'Revoke Organization Invitation',
838
+ description:
839
+ 'Revoke a pending invitation so it can no longer be accepted. Owners may revoke any invitation; admins may revoke invitations with the admin, billing or member role.',
840
+ stainlessPath: '(resource) organizations.memberships.invitations > (method) delete',
841
+ qualified: 'client.organizations.memberships.invitations.delete',
842
+ params: ['organization_id: string;', 'invitation_id: string;'],
843
+ markdown:
844
+ "## delete\n\n`client.organizations.memberships.invitations.delete(organization_id: string, invitation_id: string): void`\n\n**delete** `/v1/organizations/{organization_id}/memberships/invitations/{invitation_id}`\n\nRevoke a pending invitation so it can no longer be accepted. Owners may revoke any invitation; admins may revoke invitations with the admin, billing or member role.\n\n### Parameters\n\n- `organization_id: string`\n\n- `invitation_id: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.organizations.memberships.invitations.delete('invitation_id', { organization_id: 'organization_id' })\n```",
845
+ perLanguage: {
846
+ typescript: {
847
+ method: 'client.organizations.memberships.invitations.delete',
848
+ example:
849
+ "import NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs({\n apiKey: process.env['NIRVANA_LABS_API_KEY'], // This is the default and can be omitted\n});\n\nawait client.organizations.memberships.invitations.delete('invitation_id', {\n organization_id: 'organization_id',\n});",
850
+ },
851
+ http: {
852
+ example:
853
+ 'curl https://api.nirvanalabs.io/v1/organizations/$ORGANIZATION_ID/memberships/invitations/$INVITATION_ID \\\n -X DELETE \\\n -H "Authorization: Bearer $NIRVANA_LABS_API_KEY"',
854
+ },
855
+ go: {
856
+ method: 'client.Organizations.Memberships.Invitations.Delete',
857
+ example:
858
+ 'package main\n\nimport (\n\t"context"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"),\n\t)\n\terr := client.Organizations.Memberships.Invitations.Delete(\n\t\tcontext.TODO(),\n\t\t"organization_id",\n\t\t"invitation_id",\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n}\n',
859
+ },
860
+ },
861
+ },
676
862
  {
677
863
  name: 'create',
678
864
  endpoint: '/v1/organizations/{organization_id}/address',
@@ -928,7 +1114,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
928
1114
  response:
929
1115
  '{ daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }',
930
1116
  markdown:
931
- "## top_up\n\n`client.organizations.billing.topUp(organization_id: string, amount: string, Idempotency-Key: string): { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n**post** `/v1/organizations/{organization_id}/billing/topup`\n\nCharge the card on file and credit the prepaid balance. An Idempotency-Key header is\nrequired. Reuse the same key when retrying, so a top-up that timed out isn't charged twice.\n\n### Parameters\n\n- `organization_id: string`\n\n- `amount: string`\n Amount to charge and credit, in USD. Must be greater than 0, at most two decimal places, and at most 10000.\n\n- `Idempotency-Key: string`\n\n### Returns\n\n- `{ daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n Forward-looking billing summary for an organization. All costs are run-rate projections from the organization's current active usage (\"≈ $X/mo at current usage\").\n\n - `daily_cost: string`\n - `effective_balance: string`\n - `monthly_cost: string`\n - `recharge_threshold_days: string`\n - `estimated_next_charge_at?: string`\n - `runway_months?: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationBillingSummary = await client.organizations.billing.topUp('organization_id', { amount: '50.00', 'Idempotency-Key': 'Idempotency-Key' });\n\nconsole.log(organizationBillingSummary);\n```",
1117
+ "## top_up\n\n`client.organizations.billing.topUp(organization_id: string, amount: string, Idempotency-Key: string): { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n**post** `/v1/organizations/{organization_id}/billing/topup`\n\nCharge the card on file and credit the prepaid balance. An Idempotency-Key header is\nrequired. Reuse the same key when retrying, so a top-up that timed out isn't charged twice.\n\n### Parameters\n\n- `organization_id: string`\n\n- `amount: string`\n Amount to charge and credit, in USD. Must be at least 1.00, at most two decimal places, and at most 10000.\n\n- `Idempotency-Key: string`\n\n### Returns\n\n- `{ daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n Forward-looking billing summary for an organization. All costs are run-rate projections from the organization's current active usage (\"≈ $X/mo at current usage\").\n\n - `daily_cost: string`\n - `effective_balance: string`\n - `monthly_cost: string`\n - `recharge_threshold_days: string`\n - `estimated_next_charge_at?: string`\n - `runway_months?: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst organizationBillingSummary = await client.organizations.billing.topUp('organization_id', { amount: '50.00', 'Idempotency-Key': 'Idempotency-Key' });\n\nconsole.log(organizationBillingSummary);\n```",
932
1118
  perLanguage: {
933
1119
  typescript: {
934
1120
  method: 'client.organizations.billing.topUp',
@@ -1109,9 +1295,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1109
1295
  qualified: 'client.quotas.get',
1110
1296
  params: ["region: 'us-sva-2';"],
1111
1297
  response:
1112
- "{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; }; }",
1298
+ "{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; longhorn: quota_dimension_detail; }; }",
1113
1299
  markdown:
1114
- "## get\n\n`client.quotas.get(region: 'us-sva-2'): { compute: quota_compute; networking: quota_networking; nks: quota_nks; region: region_name; storage: quota_storage; }`\n\n**get** `/v1/quotas/{region}`\n\nGet quota usage and limits for the current organization in a single region\n\n### Parameters\n\n- `region: 'us-sva-2'`\n\n### Returns\n\n- `{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; }; }`\n Quota response.\n\n - `compute: { memory_gb: { limit: number; remaining: number; used: number; }; vcpu: { limit: number; remaining: number; used: number; }; }`\n - `networking: { public_ips: { limit: number; remaining: number; used: number; }; vpcs: { limit: number; remaining: number; used: number; }; }`\n - `nks: { clusters: { limit: number; remaining: number; used: number; }; node_pool_memory_gb: { limit: number; remaining: number; used: number; }; node_pool_vcpu: { limit: number; remaining: number; used: number; }; public_ips: { limit: number; remaining: number; used: number; }; }`\n - `region: 'us-sva-2'`\n - `storage: { abs: { limit: number; remaining: number; used: number; }; local_nvme: { limit: number; remaining: number; used: number; }; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst quota = await client.quotas.get('us-sva-2');\n\nconsole.log(quota);\n```",
1300
+ "## get\n\n`client.quotas.get(region: 'us-sva-2'): { compute: quota_compute; networking: quota_networking; nks: quota_nks; region: region_name; storage: quota_storage; }`\n\n**get** `/v1/quotas/{region}`\n\nGet quota usage and limits for the current organization in a single region\n\n### Parameters\n\n- `region: 'us-sva-2'`\n\n### Returns\n\n- `{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; longhorn: quota_dimension_detail; }; }`\n Quota response.\n\n - `compute: { memory_gb: { limit: number; remaining: number; used: number; }; vcpu: { limit: number; remaining: number; used: number; }; }`\n - `networking: { public_ips: { limit: number; remaining: number; used: number; }; vpcs: { limit: number; remaining: number; used: number; }; }`\n - `nks: { clusters: { limit: number; remaining: number; used: number; }; node_pool_memory_gb: { limit: number; remaining: number; used: number; }; node_pool_vcpu: { limit: number; remaining: number; used: number; }; public_ips: { limit: number; remaining: number; used: number; }; }`\n - `region: 'us-sva-2'`\n - `storage: { abs: { limit: number; remaining: number; used: number; }; local_nvme: { limit: number; remaining: number; used: number; }; longhorn: { limit: number; remaining: number; used: number; }; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst quota = await client.quotas.get('us-sva-2');\n\nconsole.log(quota);\n```",
1115
1301
  perLanguage: {
1116
1302
  typescript: {
1117
1303
  method: 'client.quotas.get',
@@ -1143,9 +1329,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1143
1329
  qualified: 'client.quotas.list',
1144
1330
  params: ['cursor?: string;', 'limit?: number;', 'region?: string;', 'sort?: string;'],
1145
1331
  response:
1146
- "{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; }; }",
1332
+ "{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; longhorn: quota_dimension_detail; }; }",
1147
1333
  markdown:
1148
- "## list\n\n`client.quotas.list(cursor?: string, limit?: number, region?: string, sort?: string): { compute: quota_compute; networking: quota_networking; nks: quota_nks; region: region_name; storage: quota_storage; }`\n\n**get** `/v1/quotas`\n\nList quota usage and limits for the current organization across all regions\n\n### Parameters\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `region?: string`\n Filter by region\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: region\n\n### Returns\n\n- `{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; }; }`\n Quota response.\n\n - `compute: { memory_gb: { limit: number; remaining: number; used: number; }; vcpu: { limit: number; remaining: number; used: number; }; }`\n - `networking: { public_ips: { limit: number; remaining: number; used: number; }; vpcs: { limit: number; remaining: number; used: number; }; }`\n - `nks: { clusters: { limit: number; remaining: number; used: number; }; node_pool_memory_gb: { limit: number; remaining: number; used: number; }; node_pool_vcpu: { limit: number; remaining: number; used: number; }; public_ips: { limit: number; remaining: number; used: number; }; }`\n - `region: 'us-sva-2'`\n - `storage: { abs: { limit: number; remaining: number; used: number; }; local_nvme: { limit: number; remaining: number; used: number; }; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const quota of client.quotas.list()) {\n console.log(quota);\n}\n```",
1334
+ "## list\n\n`client.quotas.list(cursor?: string, limit?: number, region?: string, sort?: string): { compute: quota_compute; networking: quota_networking; nks: quota_nks; region: region_name; storage: quota_storage; }`\n\n**get** `/v1/quotas`\n\nList quota usage and limits for the current organization across all regions\n\n### Parameters\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `region?: string`\n Filter by region\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: region\n\n### Returns\n\n- `{ compute: { memory_gb: quota_dimension_detail; vcpu: quota_dimension_detail; }; networking: { public_ips: quota_dimension_detail; vpcs: quota_dimension_detail; }; nks: { clusters: quota_dimension_detail; node_pool_memory_gb: quota_dimension_detail; node_pool_vcpu: quota_dimension_detail; public_ips: quota_dimension_detail; }; region: 'us-sva-2'; storage: { abs: quota_dimension_detail; local_nvme: quota_dimension_detail; longhorn: quota_dimension_detail; }; }`\n Quota response.\n\n - `compute: { memory_gb: { limit: number; remaining: number; used: number; }; vcpu: { limit: number; remaining: number; used: number; }; }`\n - `networking: { public_ips: { limit: number; remaining: number; used: number; }; vpcs: { limit: number; remaining: number; used: number; }; }`\n - `nks: { clusters: { limit: number; remaining: number; used: number; }; node_pool_memory_gb: { limit: number; remaining: number; used: number; }; node_pool_vcpu: { limit: number; remaining: number; used: number; }; public_ips: { limit: number; remaining: number; used: number; }; }`\n - `region: 'us-sva-2'`\n - `storage: { abs: { limit: number; remaining: number; used: number; }; local_nvme: { limit: number; remaining: number; used: number; }; longhorn: { limit: number; remaining: number; used: number; }; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const quota of client.quotas.list()) {\n console.log(quota);\n}\n```",
1149
1335
  perLanguage: {
1150
1336
  typescript: {
1151
1337
  method: 'client.quotas.list',
@@ -1510,9 +1696,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1510
1696
  qualified: 'client.regions.get',
1511
1697
  params: ['name: string;'],
1512
1698
  response:
1513
- "{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; }; }",
1699
+ "{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }; }",
1514
1700
  markdown:
1515
- "## get\n\n`client.regions.get(name: string): { availability: region_availability; compute: object; name: string; networking: object; nks: object; storage: object; }`\n\n**get** `/v1/regions/{name}`\n\nGet a region by name\n\n### Parameters\n\n- `name: string`\n\n### Returns\n\n- `{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; }; }`\n Region response with product availability.\n\n - `availability: 'live' | 'preview' | 'maintenance' | 'sunset'`\n - `compute: { vms: boolean; }`\n - `name: string`\n - `networking: { vpcs: boolean; }`\n - `nks: { autoscaling: boolean; clusters: boolean; }`\n - `storage: { abs: boolean; local_nvme: boolean; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst region = await client.regions.get('us-sva-2');\n\nconsole.log(region);\n```",
1701
+ "## get\n\n`client.regions.get(name: string): { availability: region_availability; compute: object; name: string; networking: object; nks: object; storage: object; }`\n\n**get** `/v1/regions/{name}`\n\nGet a region by name\n\n### Parameters\n\n- `name: string`\n\n### Returns\n\n- `{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }; }`\n Region response with product availability.\n\n - `availability: 'live' | 'preview' | 'maintenance' | 'sunset'`\n - `compute: { vms: boolean; }`\n - `name: string`\n - `networking: { vpcs: boolean; }`\n - `nks: { autoscaling: boolean; clusters: boolean; }`\n - `storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst region = await client.regions.get('us-sva-2');\n\nconsole.log(region);\n```",
1516
1702
  perLanguage: {
1517
1703
  typescript: {
1518
1704
  method: 'client.regions.get',
@@ -1553,11 +1739,12 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1553
1739
  'sort?: string;',
1554
1740
  'storage_abs?: boolean;',
1555
1741
  'storage_local_nvme?: boolean;',
1742
+ 'storage_longhorn?: boolean;',
1556
1743
  ],
1557
1744
  response:
1558
- "{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; }; }",
1745
+ "{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }; }",
1559
1746
  markdown:
1560
- "## list\n\n`client.regions.list(availability?: 'live' | 'preview' | 'maintenance' | 'sunset', compute_vms?: boolean, cursor?: string, limit?: number, networking_vpcs?: boolean, nks_autoscaling?: boolean, nks_clusters?: boolean, sort?: string, storage_abs?: boolean, storage_local_nvme?: boolean): { availability: region_availability; compute: object; name: string; networking: object; nks: object; storage: object; }`\n\n**get** `/v1/regions`\n\nList all regions\n\n### Parameters\n\n- `availability?: 'live' | 'preview' | 'maintenance' | 'sunset'`\n Filter by region availability\n\n- `compute_vms?: boolean`\n Only regions where Virtual Machines are available\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `networking_vpcs?: boolean`\n Only regions where VPCs are available\n\n- `nks_autoscaling?: boolean`\n Only regions where NKS node pool autoscaling is available\n\n- `nks_clusters?: boolean`\n Only regions where NKS clusters are available\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: longitude, name, availability\n\n- `storage_abs?: boolean`\n Only regions where Accelerated Block Storage is available\n\n- `storage_local_nvme?: boolean`\n Only regions where locally-attached NVMe storage is available\n\n### Returns\n\n- `{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; }; }`\n Region response with product availability.\n\n - `availability: 'live' | 'preview' | 'maintenance' | 'sunset'`\n - `compute: { vms: boolean; }`\n - `name: string`\n - `networking: { vpcs: boolean; }`\n - `nks: { autoscaling: boolean; clusters: boolean; }`\n - `storage: { abs: boolean; local_nvme: boolean; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const region of client.regions.list()) {\n console.log(region);\n}\n```",
1747
+ "## list\n\n`client.regions.list(availability?: 'live' | 'preview' | 'maintenance' | 'sunset', compute_vms?: boolean, cursor?: string, limit?: number, networking_vpcs?: boolean, nks_autoscaling?: boolean, nks_clusters?: boolean, sort?: string, storage_abs?: boolean, storage_local_nvme?: boolean, storage_longhorn?: boolean): { availability: region_availability; compute: object; name: string; networking: object; nks: object; storage: object; }`\n\n**get** `/v1/regions`\n\nList all regions\n\n### Parameters\n\n- `availability?: 'live' | 'preview' | 'maintenance' | 'sunset'`\n Filter by region availability\n\n- `compute_vms?: boolean`\n Only regions where Virtual Machines are available\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `networking_vpcs?: boolean`\n Only regions where VPCs are available\n\n- `nks_autoscaling?: boolean`\n Only regions where NKS node pool autoscaling is available\n\n- `nks_clusters?: boolean`\n Only regions where NKS clusters are available\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: longitude, name, availability\n\n- `storage_abs?: boolean`\n Only regions where Accelerated Block Storage is available\n\n- `storage_local_nvme?: boolean`\n Only regions where locally-attached NVMe storage is available\n\n- `storage_longhorn?: boolean`\n Only regions where Longhorn replicated block storage is available\n\n### Returns\n\n- `{ availability: 'live' | 'preview' | 'maintenance' | 'sunset'; compute: { vms: boolean; }; name: string; networking: { vpcs: boolean; }; nks: { autoscaling: boolean; clusters: boolean; }; storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }; }`\n Region response with product availability.\n\n - `availability: 'live' | 'preview' | 'maintenance' | 'sunset'`\n - `compute: { vms: boolean; }`\n - `name: string`\n - `networking: { vpcs: boolean; }`\n - `nks: { autoscaling: boolean; clusters: boolean; }`\n - `storage: { abs: boolean; local_nvme: boolean; longhorn: boolean; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const region of client.regions.list()) {\n console.log(region);\n}\n```",
1561
1748
  perLanguage: {
1562
1749
  typescript: {
1563
1750
  method: 'client.regions.list',
@@ -1672,7 +1859,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1672
1859
  stainlessPath: '(resource) compute.vms > (method) create',
1673
1860
  qualified: 'client.compute.vms.create',
1674
1861
  params: [
1675
- "boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; };",
1862
+ "boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; };",
1676
1863
  'instance_type: string;',
1677
1864
  'name: string;',
1678
1865
  'os_image_name: string;',
@@ -1681,13 +1868,13 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1681
1868
  "region: 'us-sva-2';",
1682
1869
  'ssh_key: { public_key: string; };',
1683
1870
  'subnet_id: string;',
1684
- "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[];",
1871
+ "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[];",
1685
1872
  'tags?: string[];',
1686
1873
  ],
1687
1874
  response:
1688
1875
  "{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }",
1689
1876
  markdown:
1690
- "## create\n\n`client.compute.vms.create(boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[], tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/compute/vms`\n\nCreate a VM\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.vms.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n});\n\nconsole.log(operation);\n```",
1877
+ "## create\n\n`client.compute.vms.create(boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[], tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/compute/vms`\n\nCreate a VM\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.vms.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n});\n\nconsole.log(operation);\n```",
1691
1878
  perLanguage: {
1692
1879
  typescript: {
1693
1880
  method: 'client.compute.vms.create',
@@ -1907,7 +2094,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1907
2094
  stainlessPath: '(resource) compute.vms.availability > (method) create',
1908
2095
  qualified: 'client.compute.vms.availability.create',
1909
2096
  params: [
1910
- "boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; };",
2097
+ "boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; };",
1911
2098
  'instance_type: string;',
1912
2099
  'name: string;',
1913
2100
  'os_image_name: string;',
@@ -1916,11 +2103,11 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1916
2103
  "region: 'us-sva-2';",
1917
2104
  'ssh_key: { public_key: string; };',
1918
2105
  'subnet_id: string;',
1919
- "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[];",
2106
+ "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[];",
1920
2107
  'tags?: string[];',
1921
2108
  ],
1922
2109
  markdown:
1923
- "## create\n\n`client.compute.vms.availability.create(boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[], tags?: string[]): void`\n\n**post** `/v1/compute/vms/availability`\n\nCheck VM Create Availability\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.vms.availability.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n})\n```",
2110
+ "## create\n\n`client.compute.vms.availability.create(boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[], tags?: string[]): void`\n\n**post** `/v1/compute/vms/availability`\n\nCheck VM Create Availability\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.vms.availability.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n})\n```",
1924
2111
  perLanguage: {
1925
2112
  typescript: {
1926
2113
  method: 'client.compute.vms.availability.create',
@@ -1990,7 +2177,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1990
2177
  stainlessPath: '(resource) compute.vms.cost > (method) create',
1991
2178
  qualified: 'client.compute.vms.cost.create',
1992
2179
  params: [
1993
- "boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; };",
2180
+ "boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; };",
1994
2181
  'instance_type: string;',
1995
2182
  'name: string;',
1996
2183
  'os_image_name: string;',
@@ -1999,13 +2186,13 @@ const EMBEDDED_METHODS: MethodEntry[] = [
1999
2186
  "region: 'us-sva-2';",
2000
2187
  'ssh_key: { public_key: string; };',
2001
2188
  'subnet_id: string;',
2002
- "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[];",
2189
+ "data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[];",
2003
2190
  'tags?: string[];',
2004
2191
  ],
2005
2192
  response:
2006
2193
  '{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }',
2007
2194
  markdown:
2008
- "## create\n\n`client.compute.vms.cost.create(boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[], tags?: string[]): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/compute/vms/cost`\n\nReturn a priced cost quote for the proposed VM.\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.compute.vms.cost.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n});\n\nconsole.log(costQuote);\n```",
2195
+ "## create\n\n`client.compute.vms.cost.create(boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }, instance_type: string, name: string, os_image_name: string, project_id: string, public_ip_enabled: boolean, region: 'us-sva-2', ssh_key: { public_key: string; }, subnet_id: string, data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[], tags?: string[]): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/compute/vms/cost`\n\nReturn a priced cost quote for the proposed VM.\n\n### Parameters\n\n- `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }`\n Boot volume for the VM.\n - `size: number`\n Size of the Volume in GB.\n - `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n - `tags?: string[]`\n Tags to attach to the Volume.\n\n- `instance_type: string`\n Instance type name.\n\n- `name: string`\n Name of the VM.\n\n- `os_image_name: string`\n Name of the OS Image to use for the VM.\n\n- `project_id: string`\n Project ID to create the VM in.\n\n- `public_ip_enabled: boolean`\n Whether to enable public IP for the VM.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `ssh_key: { public_key: string; }`\n Public SSH key configuration for the VM.\n - `public_key: string`\n Public key to and use to access the VM.\n\n- `subnet_id: string`\n ID of the subnet to use for the VM.\n\n- `data_volumes?: { name: string; size: number; type: 'nvme' | 'abs' | 'longhorn'; tags?: string[]; }[]`\n Data volumes for the VM.\n\n- `tags?: string[]`\n Tags to attach to the VM.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.compute.vms.cost.create({\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n name: 'my-vm',\n os_image_name: 'ubuntu-noble-2026-05-18',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n public_ip_enabled: true,\n region: 'us-sva-2',\n ssh_key: { public_key: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2' },\n subnet_id: '123e4567-e89b-12d3-a456-426614174000',\n});\n\nconsole.log(costQuote);\n```",
2009
2196
  perLanguage: {
2010
2197
  typescript: {
2011
2198
  method: 'client.compute.vms.cost.create',
@@ -2086,12 +2273,12 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2086
2273
  'sort?: string;',
2087
2274
  "status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error';",
2088
2275
  'tags?: string[];',
2089
- "type?: 'nvme' | 'abs';",
2276
+ "type?: 'nvme' | 'abs' | 'longhorn';",
2090
2277
  ],
2091
2278
  response:
2092
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }",
2279
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }",
2093
2280
  markdown:
2094
- "## list\n\n`client.compute.vms.volumes.list(vm_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', tags?: string[], type?: 'nvme' | 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/vms/{vm_id}/volumes`\n\nList VM's Volumes\n\n### Parameters\n\n- `vm_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same VM, filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by Volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the Volume name\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by Volume status\n\n- `tags?: string[]`\n Filter by tags. Repeat the parameter to require several tags; a Volume must carry all of them.\n\n- `type?: 'nvme' | 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const volume of client.compute.vms.volumes.list('vm_id')) {\n console.log(volume);\n}\n```",
2281
+ "## list\n\n`client.compute.vms.volumes.list(vm_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', tags?: string[], type?: 'nvme' | 'abs' | 'longhorn'): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/vms/{vm_id}/volumes`\n\nList VM's Volumes\n\n### Parameters\n\n- `vm_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same VM, filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by Volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the Volume name\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by Volume status\n\n- `tags?: string[]`\n Filter by tags. Repeat the parameter to require several tags; a Volume must carry all of them.\n\n- `type?: 'nvme' | 'abs' | 'longhorn'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const volume of client.compute.vms.volumes.list('vm_id')) {\n console.log(volume);\n}\n```",
2095
2282
  perLanguage: {
2096
2283
  typescript: {
2097
2284
  method: 'client.compute.vms.volumes.list',
@@ -2241,14 +2428,14 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2241
2428
  'project_id: string;',
2242
2429
  "region: 'us-sva-2';",
2243
2430
  'size: number;',
2244
- "type: 'nvme' | 'abs';",
2431
+ "type: 'nvme' | 'abs' | 'longhorn';",
2245
2432
  'tags?: string[];',
2246
2433
  'vm_id?: string;',
2247
2434
  ],
2248
2435
  response:
2249
2436
  "{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }",
2250
2437
  markdown:
2251
- "## create\n\n`client.compute.volumes.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs', tags?: string[], vm_id?: string): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/compute/volumes`\n\nCreate a Volume. Only data volumes can be created.\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.volumes.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n});\n\nconsole.log(operation);\n```",
2438
+ "## create\n\n`client.compute.volumes.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs' | 'longhorn', tags?: string[], vm_id?: string): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/compute/volumes`\n\nCreate a Volume. Only data volumes can be created.\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.volumes.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n});\n\nconsole.log(operation);\n```",
2252
2439
  perLanguage: {
2253
2440
  typescript: {
2254
2441
  method: 'client.compute.volumes.create',
@@ -2281,9 +2468,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2281
2468
  qualified: 'client.compute.volumes.get',
2282
2469
  params: ['volume_id: string;'],
2283
2470
  response:
2284
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }",
2471
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }",
2285
2472
  markdown:
2286
- "## get\n\n`client.compute.volumes.get(volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/volumes/{volume_id}`\n\nGet a Volume.\n\n### Parameters\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst volume = await client.compute.volumes.get('volume_id');\n\nconsole.log(volume);\n```",
2473
+ "## get\n\n`client.compute.volumes.get(volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/volumes/{volume_id}`\n\nGet a Volume.\n\n### Parameters\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst volume = await client.compute.volumes.get('volume_id');\n\nconsole.log(volume);\n```",
2287
2474
  perLanguage: {
2288
2475
  typescript: {
2289
2476
  method: 'client.compute.volumes.get',
@@ -2317,7 +2504,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2317
2504
  response:
2318
2505
  "{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }",
2319
2506
  markdown:
2320
- "## update\n\n`client.compute.volumes.update(volume_id: string, name?: string, size?: number, tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**patch** `/v1/compute/volumes/{volume_id}`\n\nUpdate a Volume. Boot or data volumes can be updated.\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.volumes.update('volume_id');\n\nconsole.log(operation);\n```",
2507
+ "## update\n\n`client.compute.volumes.update(volume_id: string, name?: string, size?: number, tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**patch** `/v1/compute/volumes/{volume_id}`\n\nUpdate a Volume. Boot or data volumes can be updated.\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB. Longhorn volumes cannot be resized.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.compute.volumes.update('volume_id');\n\nconsole.log(operation);\n```",
2321
2508
  perLanguage: {
2322
2509
  typescript: {
2323
2510
  method: 'client.compute.volumes.update',
@@ -2392,13 +2579,13 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2392
2579
  'sort?: string;',
2393
2580
  "status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error';",
2394
2581
  'tags?: string[];',
2395
- "type?: 'nvme' | 'abs';",
2582
+ "type?: 'nvme' | 'abs' | 'longhorn';",
2396
2583
  'vm_id?: string;',
2397
2584
  ],
2398
2585
  response:
2399
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }",
2586
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }",
2400
2587
  markdown:
2401
- "## list\n\n`client.compute.volumes.list(project_id: string, attached?: boolean, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, region?: string, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', tags?: string[], type?: 'nvme' | 'abs', vm_id?: string): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/volumes`\n\nList all volumes\n\n### Parameters\n\n- `project_id: string`\n Project ID of resources to request\n\n- `attached?: boolean`\n Filter by whether the Volume is attached to a VM. Combine with vm_id and both must hold.\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by Volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the Volume name\n\n- `region?: string`\n Filter by region\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by Volume status\n\n- `tags?: string[]`\n Filter by tags. Repeat the parameter to require several tags; a Volume must carry all of them.\n\n- `type?: 'nvme' | 'abs'`\n Filter by storage type\n\n- `vm_id?: string`\n Filter by the VM the Volume is attached to\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const volume of client.compute.volumes.list({ project_id: 'project_id' })) {\n console.log(volume);\n}\n```",
2588
+ "## list\n\n`client.compute.volumes.list(project_id: string, attached?: boolean, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, region?: string, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', tags?: string[], type?: 'nvme' | 'abs' | 'longhorn', vm_id?: string): { id: string; created_at: string; kind: volume_kind; name: string; project_id: string; region: region_name; size: number; status: resource_status; tags: string[]; type: volume_type; updated_at: string; vm_id: string; vm_name: string; }`\n\n**get** `/v1/compute/volumes`\n\nList all volumes\n\n### Parameters\n\n- `project_id: string`\n Project ID of resources to request\n\n- `attached?: boolean`\n Filter by whether the Volume is attached to a VM. Combine with vm_id and both must hold.\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by Volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the Volume name\n\n- `region?: string`\n Filter by region\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by Volume status\n\n- `tags?: string[]`\n Filter by tags. Repeat the parameter to require several tags; a Volume must carry all of them.\n\n- `type?: 'nvme' | 'abs' | 'longhorn'`\n Filter by storage type\n\n- `vm_id?: string`\n Filter by the VM the Volume is attached to\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; project_id: string; region: 'us-sva-2'; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; tags: string[]; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; vm_id: string; vm_name: string; }`\n Volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `project_id: string`\n - `region: 'us-sva-2'`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `tags: string[]`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n - `vm_id: string`\n - `vm_name: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const volume of client.compute.volumes.list({ project_id: 'project_id' })) {\n console.log(volume);\n}\n```",
2402
2589
  perLanguage: {
2403
2590
  typescript: {
2404
2591
  method: 'client.compute.volumes.list',
@@ -2502,12 +2689,12 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2502
2689
  'project_id: string;',
2503
2690
  "region: 'us-sva-2';",
2504
2691
  'size: number;',
2505
- "type: 'nvme' | 'abs';",
2692
+ "type: 'nvme' | 'abs' | 'longhorn';",
2506
2693
  'tags?: string[];',
2507
2694
  'vm_id?: string;',
2508
2695
  ],
2509
2696
  markdown:
2510
- "## create\n\n`client.compute.volumes.availability.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs', tags?: string[], vm_id?: string): void`\n\n**post** `/v1/compute/volumes/availability`\n\nCheck Volume Create Availability\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.volumes.availability.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n})\n```",
2697
+ "## create\n\n`client.compute.volumes.availability.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs' | 'longhorn', tags?: string[], vm_id?: string): void`\n\n**post** `/v1/compute/volumes/availability`\n\nCheck Volume Create Availability\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.volumes.availability.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n})\n```",
2511
2698
  perLanguage: {
2512
2699
  typescript: {
2513
2700
  method: 'client.compute.volumes.availability.create',
@@ -2540,7 +2727,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2540
2727
  qualified: 'client.compute.volumes.availability.update',
2541
2728
  params: ['volume_id: string;', 'name?: string;', 'size?: number;', 'tags?: string[];'],
2542
2729
  markdown:
2543
- "## update\n\n`client.compute.volumes.availability.update(volume_id: string, name?: string, size?: number, tags?: string[]): void`\n\n**patch** `/v1/compute/volumes/{volume_id}/availability`\n\nCheck Volume Update Availability\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.volumes.availability.update('volume_id')\n```",
2730
+ "## update\n\n`client.compute.volumes.availability.update(volume_id: string, name?: string, size?: number, tags?: string[]): void`\n\n**patch** `/v1/compute/volumes/{volume_id}/availability`\n\nCheck Volume Update Availability\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB. Longhorn volumes cannot be resized.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.compute.volumes.availability.update('volume_id')\n```",
2544
2731
  perLanguage: {
2545
2732
  typescript: {
2546
2733
  method: 'client.compute.volumes.availability.update',
@@ -2576,14 +2763,14 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2576
2763
  'project_id: string;',
2577
2764
  "region: 'us-sva-2';",
2578
2765
  'size: number;',
2579
- "type: 'nvme' | 'abs';",
2766
+ "type: 'nvme' | 'abs' | 'longhorn';",
2580
2767
  'tags?: string[];',
2581
2768
  'vm_id?: string;',
2582
2769
  ],
2583
2770
  response:
2584
2771
  '{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }',
2585
2772
  markdown:
2586
- "## create\n\n`client.compute.volumes.cost.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs', tags?: string[], vm_id?: string): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/compute/volumes/cost`\n\nReturn a priced cost quote for the proposed Volume.\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.compute.volumes.cost.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n});\n\nconsole.log(costQuote);\n```",
2773
+ "## create\n\n`client.compute.volumes.cost.create(name: string, project_id: string, region: 'us-sva-2', size: number, type: 'nvme' | 'abs' | 'longhorn', tags?: string[], vm_id?: string): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/compute/volumes/cost`\n\nReturn a priced cost quote for the proposed Volume.\n\n### Parameters\n\n- `name: string`\n Name of the Volume.\n\n- `project_id: string`\n Project ID the Volume belongs to.\n\n- `region: 'us-sva-2'`\n Region the resource is in.\n\n- `size: number`\n Size of the Volume in GB.\n\n- `type: 'nvme' | 'abs' | 'longhorn'`\n Type of the Volume.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n- `vm_id?: string`\n ID of the VM the Volume is attached to.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.compute.volumes.cost.create({\n name: 'my-data-volume',\n project_id: '123e4567-e89b-12d3-a456-426614174000',\n region: 'us-sva-2',\n size: 100,\n type: 'abs',\n});\n\nconsole.log(costQuote);\n```",
2587
2774
  perLanguage: {
2588
2775
  typescript: {
2589
2776
  method: 'client.compute.volumes.cost.create',
@@ -2619,7 +2806,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
2619
2806
  response:
2620
2807
  '{ after: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; before: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; currency: string; diff: { monthly_total_delta: string; usage_dimensions: { after: object; before: object; dimension: string; dimension_display_name: string; monthly_amount_delta: string; }[]; }; priced_at: string; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }',
2621
2808
  markdown:
2622
- "## update\n\n`client.compute.volumes.cost.update(volume_id: string, name?: string, size?: number, tags?: string[]): { after: object; before: object; currency: string; diff: object; priced_at: string; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**patch** `/v1/compute/volumes/{volume_id}/cost`\n\nReturn a priced cost quote for the proposed Volume update plus a diff against the current state.\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Returns\n\n- `{ after: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; before: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; currency: string; diff: { monthly_total_delta: string; usage_dimensions: { after: object; before: object; dimension: string; dimension_display_name: string; monthly_amount_delta: string; }[]; }; priced_at: string; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by PATCH /:id/cost: current-state quote, post-update quote, and signed diff. current_summary and updated_summary omitted when the caller cannot view billing.\n\n - `after: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }`\n - `before: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }`\n - `currency: string`\n - `diff: { monthly_total_delta: string; usage_dimensions: { after: { monthly_amount: string; quantity: number; unit_price: string; }; before: { monthly_amount: string; quantity: number; unit_price: string; }; dimension: string; dimension_display_name: string; monthly_amount_delta: string; }[]; }`\n - `priced_at: string`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuoteUpdate = await client.compute.volumes.cost.update('volume_id');\n\nconsole.log(costQuoteUpdate);\n```",
2809
+ "## update\n\n`client.compute.volumes.cost.update(volume_id: string, name?: string, size?: number, tags?: string[]): { after: object; before: object; currency: string; diff: object; priced_at: string; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**patch** `/v1/compute/volumes/{volume_id}/cost`\n\nReturn a priced cost quote for the proposed Volume update plus a diff against the current state.\n\n### Parameters\n\n- `volume_id: string`\n\n- `name?: string`\n Name of the Volume.\n\n- `size?: number`\n Size of the Volume in GB. Longhorn volumes cannot be resized.\n\n- `tags?: string[]`\n Tags to attach to the Volume.\n\n### Returns\n\n- `{ after: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; before: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }; currency: string; diff: { monthly_total_delta: string; usage_dimensions: { after: object; before: object; dimension: string; dimension_display_name: string; monthly_amount_delta: string; }[]; }; priced_at: string; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by PATCH /:id/cost: current-state quote, post-update quote, and signed diff. current_summary and updated_summary omitted when the caller cannot view billing.\n\n - `after: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }`\n - `before: { monthly_total: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; }`\n - `currency: string`\n - `diff: { monthly_total_delta: string; usage_dimensions: { after: { monthly_amount: string; quantity: number; unit_price: string; }; before: { monthly_amount: string; quantity: number; unit_price: string; }; dimension: string; dimension_display_name: string; monthly_amount_delta: string; }[]; }`\n - `priced_at: string`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuoteUpdate = await client.compute.volumes.cost.update('volume_id');\n\nconsole.log(costQuoteUpdate);\n```",
2623
2810
  perLanguage: {
2624
2811
  typescript: {
2625
2812
  method: 'client.compute.volumes.cost.update',
@@ -3903,9 +4090,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
3903
4090
  qualified: 'client.nks.clusters.persistentVolumeClaims.get',
3904
4091
  params: ['cluster_id: string;', 'persistent_volume_claim_id: string;'],
3905
4092
  response:
3906
- "{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
4093
+ "{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
3907
4094
  markdown:
3908
- "## get\n\n`client.nks.clusters.persistentVolumeClaims.get(cluster_id: string, persistent_volume_claim_id: string): { id: string; cluster_id: string; created_at: string; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims/{persistent_volume_claim_id}`\n\nGet details about an NKS persistent volume claim\n\n### Parameters\n\n- `cluster_id: string`\n\n- `persistent_volume_claim_id: string`\n\n### Returns\n\n- `{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS persistent volume claim details.\n\n - `id: string`\n - `cluster_id: string`\n - `created_at: string`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst persistentVolumeClaim = await client.nks.clusters.persistentVolumeClaims.get('persistent_volume_claim_id', { cluster_id: 'cluster_id' });\n\nconsole.log(persistentVolumeClaim);\n```",
4095
+ "## get\n\n`client.nks.clusters.persistentVolumeClaims.get(cluster_id: string, persistent_volume_claim_id: string): { id: string; cluster_id: string; created_at: string; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims/{persistent_volume_claim_id}`\n\nGet details about an NKS persistent volume claim\n\n### Parameters\n\n- `cluster_id: string`\n\n- `persistent_volume_claim_id: string`\n\n### Returns\n\n- `{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS persistent volume claim details.\n\n - `id: string`\n - `cluster_id: string`\n - `created_at: string`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst persistentVolumeClaim = await client.nks.clusters.persistentVolumeClaims.get('persistent_volume_claim_id', { cluster_id: 'cluster_id' });\n\nconsole.log(persistentVolumeClaim);\n```",
3909
4096
  perLanguage: {
3910
4097
  typescript: {
3911
4098
  method: 'client.nks.clusters.persistentVolumeClaims.get',
@@ -3948,9 +4135,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
3948
4135
  "type?: 'abs';",
3949
4136
  ],
3950
4137
  response:
3951
- "{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
4138
+ "{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
3952
4139
  markdown:
3953
- "## list\n\n`client.nks.clusters.persistentVolumeClaims.list(cluster_id: string, cursor?: string, limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; cluster_id: string; created_at: string; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims`\n\nList all persistent volume claims in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the claim name\n\n- `size_gb_max?: number`\n Only claims of at most this size\n\n- `size_gb_min?: number`\n Only claims of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by persistent volume claim status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS persistent volume claim details.\n\n - `id: string`\n - `cluster_id: string`\n - `created_at: string`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const persistentVolumeClaim of client.nks.clusters.persistentVolumeClaims.list('cluster_id')) {\n console.log(persistentVolumeClaim);\n}\n```",
4140
+ "## list\n\n`client.nks.clusters.persistentVolumeClaims.list(cluster_id: string, cursor?: string, limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; cluster_id: string; created_at: string; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/persistent_volume_claims`\n\nList all persistent volume claims in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the claim name\n\n- `size_gb_max?: number`\n Only claims of at most this size\n\n- `size_gb_min?: number`\n Only claims of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by persistent volume claim status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; cluster_id: string; created_at: string; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS persistent volume claim details.\n\n - `id: string`\n - `cluster_id: string`\n - `created_at: string`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const persistentVolumeClaim of client.nks.clusters.persistentVolumeClaims.list('cluster_id')) {\n console.log(persistentVolumeClaim);\n}\n```",
3954
4141
  perLanguage: {
3955
4142
  typescript: {
3956
4143
  method: 'client.nks.clusters.persistentVolumeClaims.list',
@@ -4097,9 +4284,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4097
4284
  qualified: 'client.nks.clusters.controllers.volumes.get',
4098
4285
  params: ['cluster_id: string;', 'controller_id: string;', 'volume_id: string;'],
4099
4286
  response:
4100
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
4287
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
4101
4288
  markdown:
4102
- "## get\n\n`client.nks.clusters.controllers.volumes.get(cluster_id: string, controller_id: string, volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes/{volume_id}`\n\nGet details about a volume attached to an NKS controller\n\n### Parameters\n\n- `cluster_id: string`\n\n- `controller_id: string`\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS controller volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst nksControllerVolume = await client.nks.clusters.controllers.volumes.get('volume_id', { cluster_id: 'cluster_id', controller_id: 'controller_id' });\n\nconsole.log(nksControllerVolume);\n```",
4289
+ "## get\n\n`client.nks.clusters.controllers.volumes.get(cluster_id: string, controller_id: string, volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes/{volume_id}`\n\nGet details about a volume attached to an NKS controller\n\n### Parameters\n\n- `cluster_id: string`\n\n- `controller_id: string`\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS controller volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst nksControllerVolume = await client.nks.clusters.controllers.volumes.get('volume_id', { cluster_id: 'cluster_id', controller_id: 'controller_id' });\n\nconsole.log(nksControllerVolume);\n```",
4103
4290
  perLanguage: {
4104
4291
  typescript: {
4105
4292
  method: 'client.nks.clusters.controllers.volumes.get',
@@ -4144,9 +4331,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4144
4331
  "type?: 'abs';",
4145
4332
  ],
4146
4333
  response:
4147
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
4334
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
4148
4335
  markdown:
4149
- "## list\n\n`client.nks.clusters.controllers.volumes.list(cluster_id: string, controller_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes`\n\nList all volumes attached to an NKS controller\n\n### Parameters\n\n- `cluster_id: string`\n\n- `controller_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS controller volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksControllerVolume of client.nks.clusters.controllers.volumes.list('controller_id', { cluster_id: 'cluster_id' })) {\n console.log(nksControllerVolume);\n}\n```",
4336
+ "## list\n\n`client.nks.clusters.controllers.volumes.list(cluster_id: string, controller_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/controllers/{controller_id}/volumes`\n\nList all volumes attached to an NKS controller\n\n### Parameters\n\n- `cluster_id: string`\n\n- `controller_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS controller volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksControllerVolume of client.nks.clusters.controllers.volumes.list('controller_id', { cluster_id: 'cluster_id' })) {\n console.log(nksControllerVolume);\n}\n```",
4150
4337
  perLanguage: {
4151
4338
  typescript: {
4152
4339
  method: 'client.nks.clusters.controllers.volumes.list',
@@ -4301,7 +4488,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4301
4488
  response:
4302
4489
  "{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }",
4303
4490
  markdown:
4304
- "## create\n\n`client.nks.clusters.pools.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools`\n\nCreate a node pool in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.nks.clusters.pools.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n});\n\nconsole.log(operation);\n```",
4491
+ "## create\n\n`client.nks.clusters.pools.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): { id: string; created_at: string; details: operation_details; kind: operation_kind; project_id: string; resource_id: string; status: operation_status; type: operation_type; updated_at: string; }`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools`\n\nCreate a node pool in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Returns\n\n- `{ id: string; created_at: string; details: { changes: operation_changes; }; kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'; project_id: string; resource_id: string; status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'; type: 'create' | 'update' | 'delete' | 'restart'; updated_at: string; }`\n Operation details.\n\n - `id: string`\n - `created_at: string`\n - `details: { changes: object; }`\n - `kind: 'vm' | 'volume' | 'vpc' | 'firewall_rule' | 'nks_cluster' | 'nks_node_pool'`\n - `project_id: string`\n - `resource_id: string`\n - `status: 'pending' | 'running' | 'done' | 'failed' | 'unknown'`\n - `type: 'create' | 'update' | 'delete' | 'restart'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst operation = await client.nks.clusters.pools.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n});\n\nconsole.log(operation);\n```",
4305
4492
  perLanguage: {
4306
4493
  typescript: {
4307
4494
  method: 'client.nks.clusters.pools.create',
@@ -4496,7 +4683,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4496
4683
  'tags?: string[];',
4497
4684
  ],
4498
4685
  markdown:
4499
- "## create\n\n`client.nks.clusters.pools.availability.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): void`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools/availability`\n\nCheck if a node pool can be created in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.nks.clusters.pools.availability.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n})\n```",
4686
+ "## create\n\n`client.nks.clusters.pools.availability.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): void`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools/availability`\n\nCheck if a node pool can be created in an NKS cluster\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nawait client.nks.clusters.pools.availability.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n})\n```",
4500
4687
  perLanguage: {
4501
4688
  typescript: {
4502
4689
  method: 'client.nks.clusters.pools.availability.create',
@@ -4576,7 +4763,7 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4576
4763
  response:
4577
4764
  '{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }',
4578
4765
  markdown:
4579
- "## create\n\n`client.nks.clusters.pools.cost.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools/cost`\n\nReturn a priced cost quote for the proposed NKS node pool.\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.nks.clusters.pools.cost.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n});\n\nconsole.log(costQuote);\n```",
4766
+ "## create\n\n`client.nks.clusters.pools.cost.create(cluster_id: string, name: string, node_config: { boot_volume: nks_node_pool_boot_volume; instance_type: string; labels?: string[]; taints?: string[]; }, node_count?: number, tags?: string[]): { currency: string; monthly_total: string; priced_at: string; usage_dimensions: object[]; current_summary?: organization_billing_summary; updated_summary?: organization_billing_summary; }`\n\n**post** `/v1/nks/clusters/{cluster_id}/pools/cost`\n\nReturn a priced cost quote for the proposed NKS node pool.\n\n### Parameters\n\n- `cluster_id: string`\n\n- `name: string`\n Name of the node pool.\n\n- `node_config: { boot_volume: { size: number; type: volume_type; }; instance_type: string; labels?: string[]; taints?: string[]; }`\n Node configuration.\n - `boot_volume: { size: number; type: 'nvme' | 'abs' | 'longhorn'; }`\n Boot volume configuration.\n - `instance_type: string`\n Instance type name used for worker nodes. Immutable after pool creation.\n - `labels?: string[]`\n Kubernetes labels to apply to each node in the pool. Each entry is \"key=value\".\nKeys under kubernetes.io, k8s.io, and nirvanalabs.io prefixes are reserved.\nImmutable after pool creation.\n - `taints?: string[]`\n Kubernetes taints to apply to each node in the pool at creation time.\nEach entry is \"key=value:Effect\" where Effect is NoSchedule, PreferNoSchedule, or NoExecute.\nImmutable after pool creation.\n\n- `node_count?: number`\n Number of nodes. Must be between 0 and 100.\n\n- `tags?: string[]`\n Tags to attach to the node pool.\n\n### Returns\n\n- `{ currency: string; monthly_total: string; priced_at: string; usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]; current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }; }`\n Cost quote returned by POST /cost. current_summary and updated_summary hold the org billing summary now and with this resource; omitted when the caller cannot view billing.\n\n - `currency: string`\n - `monthly_total: string`\n - `priced_at: string`\n - `usage_dimensions: { dimension: string; dimension_display_name: string; monthly_amount: string; quantity: number; unit_price: string; }[]`\n - `current_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n - `updated_summary?: { daily_cost: string; effective_balance: string; monthly_cost: string; recharge_threshold_days: string; estimated_next_charge_at?: string; runway_months?: string; }`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst costQuote = await client.nks.clusters.pools.cost.create('cluster_id', {\n name: 'my-node-pool',\n node_config: {\n boot_volume: { size: 100, type: 'abs' },\n instance_type: 'n1-standard-8',\n},\n});\n\nconsole.log(costQuote);\n```",
4580
4767
  perLanguage: {
4581
4768
  typescript: {
4582
4769
  method: 'client.nks.clusters.pools.cost.create',
@@ -4766,9 +4953,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4766
4953
  qualified: 'client.nks.clusters.pools.nodes.volumes.get',
4767
4954
  params: ['cluster_id: string;', 'pool_id: string;', 'node_id: string;', 'volume_id: string;'],
4768
4955
  response:
4769
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
4956
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
4770
4957
  markdown:
4771
- "## get\n\n`client.nks.clusters.pools.nodes.volumes.get(cluster_id: string, pool_id: string, node_id: string, volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes/{volume_id}`\n\nGet details about a volume attached to an NKS node\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `node_id: string`\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst nksNodeVolume = await client.nks.clusters.pools.nodes.volumes.get('volume_id', {\n cluster_id: 'cluster_id',\n pool_id: 'pool_id',\n node_id: 'node_id',\n});\n\nconsole.log(nksNodeVolume);\n```",
4958
+ "## get\n\n`client.nks.clusters.pools.nodes.volumes.get(cluster_id: string, pool_id: string, node_id: string, volume_id: string): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes/{volume_id}`\n\nGet details about a volume attached to an NKS node\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `node_id: string`\n\n- `volume_id: string`\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\nconst nksNodeVolume = await client.nks.clusters.pools.nodes.volumes.get('volume_id', {\n cluster_id: 'cluster_id',\n pool_id: 'pool_id',\n node_id: 'node_id',\n});\n\nconsole.log(nksNodeVolume);\n```",
4772
4959
  perLanguage: {
4773
4960
  typescript: {
4774
4961
  method: 'client.nks.clusters.pools.nodes.volumes.get',
@@ -4814,9 +5001,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4814
5001
  "type?: 'abs';",
4815
5002
  ],
4816
5003
  response:
4817
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
5004
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
4818
5005
  markdown:
4819
- "## list\n\n`client.nks.clusters.pools.nodes.volumes.list(cluster_id: string, pool_id: string, node_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes`\n\nList all volumes attached to an NKS node\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `node_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksNodeVolume of client.nks.clusters.pools.nodes.volumes.list('node_id', { cluster_id: 'cluster_id', pool_id: 'pool_id' })) {\n console.log(nksNodeVolume);\n}\n```",
5006
+ "## list\n\n`client.nks.clusters.pools.nodes.volumes.list(cluster_id: string, pool_id: string, node_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/nodes/{node_id}/volumes`\n\nList all volumes attached to an NKS node\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `node_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksNodeVolume of client.nks.clusters.pools.nodes.volumes.list('node_id', { cluster_id: 'cluster_id', pool_id: 'pool_id' })) {\n console.log(nksNodeVolume);\n}\n```",
4820
5007
  perLanguage: {
4821
5008
  typescript: {
4822
5009
  method: 'client.nks.clusters.pools.nodes.volumes.list',
@@ -4861,9 +5048,9 @@ const EMBEDDED_METHODS: MethodEntry[] = [
4861
5048
  "type?: 'abs';",
4862
5049
  ],
4863
5050
  response:
4864
- "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }",
5051
+ "{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }",
4865
5052
  markdown:
4866
- "## list\n\n`client.nks.clusters.pools.volumes.list(cluster_id: string, pool_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/volumes`\n\nList all volumes attached to the nodes of an NKS node pool\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksNodeVolume of client.nks.clusters.pools.volumes.list('pool_id', { cluster_id: 'cluster_id' })) {\n console.log(nksNodeVolume);\n}\n```",
5053
+ "## list\n\n`client.nks.clusters.pools.volumes.list(cluster_id: string, pool_id: string, cursor?: string, kind?: 'boot' | 'data', limit?: number, name?: string, size_gb_max?: number, size_gb_min?: number, sort?: string, status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error', type?: 'abs'): { id: string; created_at: string; kind: volume_kind; name: string; node_id: string; size: number; status: resource_status; type: volume_type; updated_at: string; }`\n\n**get** `/v1/nks/clusters/{cluster_id}/pools/{pool_id}/volumes`\n\nList all volumes attached to the nodes of an NKS node pool\n\n### Parameters\n\n- `cluster_id: string`\n\n- `pool_id: string`\n\n- `cursor?: string`\n Pagination cursor returned by a previous request. Only valid for the same filters and sort order.\n\n- `kind?: 'boot' | 'data'`\n Filter by volume kind\n\n- `limit?: number`\n Maximum number of items to return\n\n- `name?: string`\n Filter by a case-insensitive substring of the volume name\n\n- `size_gb_max?: number`\n Only volumes of at most this size\n\n- `size_gb_min?: number`\n Only volumes of at least this size\n\n- `sort?: string`\n Comma-separated sort terms in precedence order, each field:asc or field:desc. Fields: created_at, updated_at, name, status, size_gb\n\n- `status?: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'error'`\n Filter by volume status\n\n- `type?: 'abs'`\n Filter by storage type\n\n### Returns\n\n- `{ id: string; created_at: string; kind: 'boot' | 'data'; name: string; node_id: string; size: number; status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'; type: 'nvme' | 'abs' | 'longhorn'; updated_at: string; }`\n NKS node volume details.\n\n - `id: string`\n - `created_at: string`\n - `kind: 'boot' | 'data'`\n - `name: string`\n - `node_id: string`\n - `size: number`\n - `status: 'pending' | 'creating' | 'updating' | 'ready' | 'deleting' | 'deleted' | 'error'`\n - `type: 'nvme' | 'abs' | 'longhorn'`\n - `updated_at: string`\n\n### Example\n\n```typescript\nimport NirvanaLabs from '@nirvana-labs/nirvana';\n\nconst client = new NirvanaLabs();\n\n// Automatically fetches more pages as needed.\nfor await (const nksNodeVolume of client.nks.clusters.pools.volumes.list('pool_id', { cluster_id: 'cluster_id' })) {\n console.log(nksNodeVolume);\n}\n```",
4867
5054
  perLanguage: {
4868
5055
  typescript: {
4869
5056
  method: 'client.nks.clusters.pools.volumes.list',
@@ -4897,12 +5084,12 @@ const EMBEDDED_READMES: { language: string; content: string }[] = [
4897
5084
  {
4898
5085
  language: 'go',
4899
5086
  content:
4900
- '# Nirvana Labs Go API Library\n\n<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/v2"><img src="https://pkg.go.dev/badge/github.com/nirvana-labs/nirvana-go/v2.svg" alt="Go Reference"></a>\n\nThe Nirvana Labs Go library provides convenient access to the [Nirvana Labs REST API](https://docs.nirvanalabs.io)\nfrom applications written in Go.\n\n\n\n## MCP Server\n\nUse the Nirvana Labs MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40nirvana-labs%2Fnirvana-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuaXJ2YW5hLWxhYnMvbmlydmFuYS1tY3AiXSwiZW52Ijp7Ik5JUlZBTkFfTEFCU19BUElfS0VZIjoiTXkgQVBJIEtleSJ9fQ)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40nirvana-labs%2Fnirvana-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40nirvana-labs%2Fnirvana-mcp%22%5D%2C%22env%22%3A%7B%22NIRVANA_LABS_API_KEY%22%3A%22My%20API%20Key%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Installation\n\n<!-- x-release-please-start-version -->\n\n```go\nimport (\n\t"github.com/nirvana-labs/nirvana-go/v2" // imported as SDK_PackageName\n)\n```\n\n<!-- x-release-please-end -->\n\nOr to pin the version:\n\n<!-- x-release-please-start-version -->\n\n```sh\ngo get -u \'github.com/nirvana-labs/nirvana-go/v2@v2.1.0\'\n```\n\n<!-- x-release-please-end -->\n\n## Requirements\n\nThis library requires Go 1.22+.\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n```go\npackage main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/compute"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n\t"github.com/nirvana-labs/nirvana-go/v2/shared"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"), // defaults to os.LookupEnv("NIRVANA_LABS_API_KEY")\n\t)\n\toperation, err := client.Compute.VMs.New(context.TODO(), compute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", operation.ID)\n}\n\n```\n\n### Request fields\n\nAll request parameters are wrapped in a generic `Field` type,\nwhich we use to distinguish zero values from null or omitted fields.\n\nThis prevents accidentally sending a zero value if you forget a required parameter,\nand enables explicitly sending `null`, `false`, `\'\'`, or `0` on optional parameters.\nAny field not specified is not sent.\n\nTo construct fields with values, use the helpers `String()`, `Int()`, `Float()`, or most commonly, the generic `F[T]()`.\nTo send a null, use `Null[T]()`, and to send a nonconforming value, use `Raw[T](any)`. For example:\n\n```go\nparams := FooParams{\n\tName: SDK_PackageName.F("hello"),\n\n\t// Explicitly send `"description": null`\n\tDescription: SDK_PackageName.Null[string](),\n\n\tPoint: SDK_PackageName.F(SDK_PackageName.Point{\n\t\tX: SDK_PackageName.Int(0),\n\t\tY: SDK_PackageName.Int(1),\n\n\t\t// In cases where the API specifies a given type,\n\t\t// but you want to send something else, use `Raw`:\n\t\tZ: SDK_PackageName.Raw[int64](0.01), // sends a float\n\t}),\n}\n```\n\n### Response objects\n\nAll fields in response structs are value types (not pointers or wrappers).\n\nIf a given field is `null`, not present, or invalid, the corresponding field\nwill simply be its zero value.\n\nAll response structs also include a special `JSON` field, containing more detailed\ninformation about each property, which you can use like so:\n\n```go\nif res.Name == "" {\n\t// true if `"name"` is either not present or explicitly null\n\tres.JSON.Name.IsNull()\n\n\t// true if the `"name"` key was not present in the response JSON at all\n\tres.JSON.Name.IsMissing()\n\n\t// When the API returns data that cannot be coerced to the expected type:\n\tif res.JSON.Name.IsInvalid() {\n\t\traw := res.JSON.Name.Raw()\n\n\t\tlegacyName := struct{\n\t\t\tFirst string `json:"first"`\n\t\t\tLast string `json:"last"`\n\t\t}{}\n\t\tjson.Unmarshal([]byte(raw), &legacyName)\n\t\tname = legacyName.First + " " + legacyName.Last\n\t}\n}\n```\n\nThese `.JSON` structs also include an `Extras` map containing\nany properties in the json response that were not specified\nin the struct. This can be useful for API features not yet\npresent in the SDK.\n\n```go\nbody := res.JSON.ExtraFields["my_unexpected_field"].Raw()\n```\n\n### RequestOptions\n\nThis library uses the functional options pattern. Functions defined in the\n`SDK_PackageOptionName` package return a `RequestOption`, which is a closure that mutates a\n`RequestConfig`. These options can be supplied to the client or at individual\nrequests. For example:\n\n```go\nclient := SDK_PackageName.SDK_ClientInitializerName(\n\t// Adds a header to every request made by the client\n\tSDK_PackageOptionName.WithHeader("X-Some-Header", "custom_header_info"),\n)\n\nclient.Compute.VMs.New(context.TODO(), ...,\n\t// Override the header\n\tSDK_PackageOptionName.WithHeader("X-Some-Header", "some_other_custom_header_info"),\n\t// Add an undocumented field to the request body, using sjson syntax\n\tSDK_PackageOptionName.WithJSONSet("some.json.path", map[string]string{"my": "object"}),\n)\n```\n\nSee the [full list of request options](https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/v2/SDK_PackageOptionName).\n\n### Pagination\n\nThis library provides some conveniences for working with paginated list endpoints.\n\nYou can use `.ListAutoPaging()` methods to iterate through items across all pages:\n\n```go\niter := client.Compute.VMs.ListAutoPaging(context.TODO(), compute.VMListParams{\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tLimit: nirvana.Int(10),\n})\n// Automatically fetches more pages as needed.\nfor iter.Next() {\n\tvm := iter.Current()\n\tfmt.Printf("%+v\\n", vm)\n}\nif err := iter.Err(); err != nil {\n\tpanic(err.Error())\n}\n```\n\nOr you can use simple `.List()` methods to fetch a single page and receive a standard response object\nwith additional helper methods like `.GetNextPage()`, e.g.:\n\n```go\npage, err := client.Compute.VMs.List(context.TODO(), compute.VMListParams{\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tLimit: nirvana.Int(10),\n})\nfor page != nil {\n\tfor _, vm := range page.Items {\n\t\tfmt.Printf("%+v\\n", vm)\n\t}\n\tpage, err = page.GetNextPage()\n}\nif err != nil {\n\tpanic(err.Error())\n}\n```\n\n### Errors\n\nWhen the API returns a non-success status code, we return an error with type\n`*SDK_PackageName.Error`. This contains the `StatusCode`, `*http.Request`, and\n`*http.Response` values of the request, as well as the JSON of the error body\n(much like other response objects in the SDK).\n\nTo handle errors, we recommend that you use the `errors.As` pattern:\n\n```go\n_, err := client.Compute.VMs.New(context.TODO(), compute.VMNewParams{\n\tBootVolume: compute.VMNewParamsBootVolume{\n\t\tSize: 100,\n\t\tType: compute.VolumeTypeABS,\n\t},\n\tInstanceType: "n1-standard-2",\n\tName: "my-vm",\n\tOSImageName: "ubuntu-noble-2025-10-01",\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tPublicIPEnabled: true,\n\tRegion: shared.RegionNameUsSva2,\n\tSSHKey: compute.SSHKeyRequestParam{\n\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t},\n\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n})\nif err != nil {\n\tvar apierr *nirvana.Error\n\tif errors.As(err, &apierr) {\n\t\tprintln(string(apierr.DumpRequest(true))) // Prints the serialized HTTP request\n\t\tprintln(string(apierr.DumpResponse(true))) // Prints the serialized HTTP response\n\t}\n\tpanic(err.Error()) // GET "/v1/compute/vms": 400 Bad Request { ... }\n}\n```\n\nWhen other errors occur, they are returned unwrapped; for example,\nif HTTP transport fails, you might receive `*url.Error` wrapping `*net.OpError`.\n\n### Timeouts\n\nRequests do not time out by default; use context to configure a timeout for a request lifecycle.\n\nNote that if a request is [retried](#retries), the context timeout does not start over.\nTo set a per-retry timeout, use `SDK_PackageOptionName.WithRequestTimeout()`.\n\n```go\n// This sets the timeout for the request, including all the retries.\nctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)\ndefer cancel()\nclient.Compute.VMs.New(\n\tctx,\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\t// This sets the per-retry timeout\n\toption.WithRequestTimeout(20*time.Second),\n)\n```\n\n### File uploads\n\nRequest parameters that correspond to file uploads in multipart requests are typed as\n`param.Field[io.Reader]`. The contents of the `io.Reader` will by default be sent as a multipart form\npart with the file name of "anonymous_file" and content-type of "application/octet-stream".\n\nThe file name and content-type can be customized by implementing `Name() string` or `ContentType()\nstring` on the run-time type of `io.Reader`. Note that `os.File` implements `Name() string`, so a\nfile returned by `os.Open` will be sent with the file name on disk.\n\nWe also provide a helper `SDK_PackageName.FileParam(reader io.Reader, filename string, contentType string)`\nwhich can be used to wrap any `io.Reader` with the appropriate file name and content type.\n\n\n\n### Retries\n\nCertain errors will be automatically retried 2 times by default, with a short exponential backoff.\nWe retry by default all connection errors, 408 Request Timeout, 409 Conflict, 429 Rate Limit,\nand >=500 Internal errors.\n\nYou can use the `WithMaxRetries` option to configure or disable this:\n\n```go\n// Configure the default for all requests:\nclient := nirvana.NewClient(\n\toption.WithMaxRetries(0), // default is 2\n)\n\n// Override per-request:\nclient.Compute.VMs.New(\n\tcontext.TODO(),\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\toption.WithMaxRetries(5),\n)\n```\n\n\n### Accessing raw response data (e.g. response headers)\n\nYou can access the raw HTTP response data by using the `option.WithResponseInto()` request option. This is useful when\nyou need to examine response headers, status codes, or other details.\n\n```go\n// Create a variable to store the HTTP response\nvar response *http.Response\noperation, err := client.Compute.VMs.New(\n\tcontext.TODO(),\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\toption.WithResponseInto(&response),\n)\nif err != nil {\n\t// handle error\n}\nfmt.Printf("%+v\\n", operation)\n\nfmt.Printf("Status Code: %d\\n", response.StatusCode)\nfmt.Printf("Headers: %+#v\\n", response.Header)\n```\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API. If you need to access undocumented\nendpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can use `client.Get`, `client.Post`, and other HTTP verbs.\n`RequestOptions` on the client, such as retries, will be respected when making these requests.\n\n```go\nvar (\n // params can be an io.Reader, a []byte, an encoding/json serializable object,\n // or a "…Params" struct defined in this library.\n params map[string]interface{}\n\n // result can be an []byte, *http.Response, a encoding/json deserializable object,\n // or a model defined in this library.\n result *http.Response\n)\nerr := client.Post(context.Background(), "/unspecified", params, &result)\nif err != nil {\n …\n}\n```\n\n#### Undocumented request params\n\nTo make requests using undocumented parameters, you may use either the `SDK_PackageOptionName.WithQuerySet()`\nor the `SDK_PackageOptionName.WithJSONSet()` methods.\n\n```go\nparams := FooNewParams{\n ID: SDK_PackageName.F("id_xxxx"),\n Data: SDK_PackageName.F(FooNewParamsData{\n FirstName: SDK_PackageName.F("John"),\n }),\n}\nclient.Foo.New(context.Background(), params, SDK_PackageOptionName.WithJSONSet("data.last_name", "Doe"))\n```\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you may either access the raw JSON of the response as a string\nwith `result.JSON.RawJSON()`, or get the raw JSON of a particular field on the result with\n`result.JSON.Foo.Raw()`.\n\nAny fields that are not present on the response struct will be saved and can be accessed by `result.JSON.ExtraFields()` which returns the extra fields as a `map[string]Field`.\n\n### Middleware\n\nWe provide `SDK_PackageOptionName.WithMiddleware` which applies the given\nmiddleware to requests.\n\n```go\nfunc Logger(req *http.Request, next SDK_PackageOptionName.MiddlewareNext) (res *http.Response, err error) {\n\t// Before the request\n\tstart := time.Now()\n\tLogReq(req)\n\n\t// Forward the request to the next handler\n\tres, err = next(req)\n\n\t// Handle stuff after the request\n\tend := time.Now()\n\tLogRes(res, err, start - end)\n\n return res, err\n}\n\nclient := SDK_PackageName.SDK_ClientInitializerName(\n\tSDK_PackageOptionName.WithMiddleware(Logger),\n)\n```\n\nWhen multiple middlewares are provided as variadic arguments, the middlewares\nare applied left to right. If `SDK_PackageOptionName.WithMiddleware` is given\nmultiple times, for example first in the client then the method, the\nmiddleware in the client will run first and the middleware given in the method\nwill run next.\n\nYou may also replace the default `http.Client` with\n`SDK_PackageOptionName.WithHTTPClient(client)`. Only one http client is\naccepted (this overwrites any previous client) and receives requests after any\nmiddleware has been applied.\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/nirvana-labs/nirvana-go/issues) with questions, bugs, or suggestions.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
5087
+ '# Nirvana Labs Go API Library\n\n<a href="https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/v2"><img src="https://pkg.go.dev/badge/github.com/nirvana-labs/nirvana-go/v2.svg" alt="Go Reference"></a>\n\nThe Nirvana Labs Go library provides convenient access to the [Nirvana Labs REST API](https://docs.nirvanalabs.io)\nfrom applications written in Go.\n\n\n\n## MCP Server\n\nUse the Nirvana Labs MCP Server to enable AI assistants to interact with this API, allowing them to explore endpoints, make test requests, and use documentation to help integrate this SDK into your application.\n\n[![Add to Cursor](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en-US/install-mcp?name=%40nirvana-labs%2Fnirvana-mcp&config=eyJjb21tYW5kIjoibnB4IiwiYXJncyI6WyIteSIsIkBuaXJ2YW5hLWxhYnMvbmlydmFuYS1tY3AiXSwiZW52Ijp7Ik5JUlZBTkFfTEFCU19BUElfS0VZIjoiTXkgQVBJIEtleSJ9fQ)\n[![Install in VS Code](https://img.shields.io/badge/_-Add_to_VS_Code-blue?style=for-the-badge&logo=data:image/svg%2bxml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGZpbGw9Im5vbmUiIHZpZXdCb3g9IjAgMCA0MCA0MCI+PHBhdGggZmlsbD0iI0VFRSIgZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMzAuMjM1IDM5Ljg4NGEyLjQ5MSAyLjQ5MSAwIDAgMS0xLjc4MS0uNzNMMTIuNyAyNC43OGwtMy40NiAyLjYyNC0zLjQwNiAyLjU4MmExLjY2NSAxLjY2NSAwIDAgMS0xLjA4Mi4zMzggMS42NjQgMS42NjQgMCAwIDEtMS4wNDYtLjQzMWwtMi4yLTJhMS42NjYgMS42NjYgMCAwIDEgMC0yLjQ2M0w3LjQ1OCAyMCA0LjY3IDE3LjQ1MyAxLjUwNyAxNC41N2ExLjY2NSAxLjY2NSAwIDAgMSAwLTIuNDYzbDIuMi0yYTEuNjY1IDEuNjY1IDAgMCAxIDIuMTMtLjA5N2w2Ljg2MyA1LjIwOUwyOC40NTIuODQ0YTIuNDg4IDIuNDg4IDAgMCAxIDEuODQxLS43MjljLjM1MS4wMDkuNjk5LjA5MSAxLjAxOS4yNDVsOC4yMzYgMy45NjFhMi41IDIuNSAwIDAgMSAxLjQxNSAyLjI1M3YuMDk5LS4wNDVWMzMuMzd2LS4wNDUuMDk1YTIuNTAxIDIuNTAxIDAgMCAxLTEuNDE2IDIuMjU3bC04LjIzNSAzLjk2MWEyLjQ5MiAyLjQ5MiAwIDAgMS0xLjA3Ny4yNDZabS43MTYtMjguOTQ3LTExLjk0OCA5LjA2MiAxMS45NTIgOS4wNjUtLjAwNC0xOC4xMjdaIi8+PC9zdmc+)](https://vscode.stainless.com/mcp/%7B%22name%22%3A%22%40nirvana-labs%2Fnirvana-mcp%22%2C%22command%22%3A%22npx%22%2C%22args%22%3A%5B%22-y%22%2C%22%40nirvana-labs%2Fnirvana-mcp%22%5D%2C%22env%22%3A%7B%22NIRVANA_LABS_API_KEY%22%3A%22My%20API%20Key%22%7D%7D)\n\n> Note: You may need to set environment variables in your MCP client.\n\n## Installation\n\n<!-- x-release-please-start-version -->\n\n```go\nimport (\n\t"github.com/nirvana-labs/nirvana-go/v2" // imported as SDK_PackageName\n)\n```\n\n<!-- x-release-please-end -->\n\nOr to pin the version:\n\n<!-- x-release-please-start-version -->\n\n```sh\ngo get -u \'github.com/nirvana-labs/nirvana-go/v2@v2.1.2\'\n```\n\n<!-- x-release-please-end -->\n\n## Requirements\n\nThis library requires Go 1.22+.\n\n## Usage\n\nThe full API of this library can be found in [api.md](api.md).\n\n```go\npackage main\n\nimport (\n\t"context"\n\t"fmt"\n\n\t"github.com/nirvana-labs/nirvana-go/v2"\n\t"github.com/nirvana-labs/nirvana-go/v2/compute"\n\t"github.com/nirvana-labs/nirvana-go/v2/option"\n\t"github.com/nirvana-labs/nirvana-go/v2/shared"\n)\n\nfunc main() {\n\tclient := nirvana.NewClient(\n\t\toption.WithAPIKey("My API Key"), // defaults to os.LookupEnv("NIRVANA_LABS_API_KEY")\n\t)\n\toperation, err := client.Compute.VMs.New(context.TODO(), compute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t})\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf("%+v\\n", operation.ID)\n}\n\n```\n\n### Request fields\n\nAll request parameters are wrapped in a generic `Field` type,\nwhich we use to distinguish zero values from null or omitted fields.\n\nThis prevents accidentally sending a zero value if you forget a required parameter,\nand enables explicitly sending `null`, `false`, `\'\'`, or `0` on optional parameters.\nAny field not specified is not sent.\n\nTo construct fields with values, use the helpers `String()`, `Int()`, `Float()`, or most commonly, the generic `F[T]()`.\nTo send a null, use `Null[T]()`, and to send a nonconforming value, use `Raw[T](any)`. For example:\n\n```go\nparams := FooParams{\n\tName: SDK_PackageName.F("hello"),\n\n\t// Explicitly send `"description": null`\n\tDescription: SDK_PackageName.Null[string](),\n\n\tPoint: SDK_PackageName.F(SDK_PackageName.Point{\n\t\tX: SDK_PackageName.Int(0),\n\t\tY: SDK_PackageName.Int(1),\n\n\t\t// In cases where the API specifies a given type,\n\t\t// but you want to send something else, use `Raw`:\n\t\tZ: SDK_PackageName.Raw[int64](0.01), // sends a float\n\t}),\n}\n```\n\n### Response objects\n\nAll fields in response structs are value types (not pointers or wrappers).\n\nIf a given field is `null`, not present, or invalid, the corresponding field\nwill simply be its zero value.\n\nAll response structs also include a special `JSON` field, containing more detailed\ninformation about each property, which you can use like so:\n\n```go\nif res.Name == "" {\n\t// true if `"name"` is either not present or explicitly null\n\tres.JSON.Name.IsNull()\n\n\t// true if the `"name"` key was not present in the response JSON at all\n\tres.JSON.Name.IsMissing()\n\n\t// When the API returns data that cannot be coerced to the expected type:\n\tif res.JSON.Name.IsInvalid() {\n\t\traw := res.JSON.Name.Raw()\n\n\t\tlegacyName := struct{\n\t\t\tFirst string `json:"first"`\n\t\t\tLast string `json:"last"`\n\t\t}{}\n\t\tjson.Unmarshal([]byte(raw), &legacyName)\n\t\tname = legacyName.First + " " + legacyName.Last\n\t}\n}\n```\n\nThese `.JSON` structs also include an `Extras` map containing\nany properties in the json response that were not specified\nin the struct. This can be useful for API features not yet\npresent in the SDK.\n\n```go\nbody := res.JSON.ExtraFields["my_unexpected_field"].Raw()\n```\n\n### RequestOptions\n\nThis library uses the functional options pattern. Functions defined in the\n`SDK_PackageOptionName` package return a `RequestOption`, which is a closure that mutates a\n`RequestConfig`. These options can be supplied to the client or at individual\nrequests. For example:\n\n```go\nclient := SDK_PackageName.SDK_ClientInitializerName(\n\t// Adds a header to every request made by the client\n\tSDK_PackageOptionName.WithHeader("X-Some-Header", "custom_header_info"),\n)\n\nclient.Compute.VMs.New(context.TODO(), ...,\n\t// Override the header\n\tSDK_PackageOptionName.WithHeader("X-Some-Header", "some_other_custom_header_info"),\n\t// Add an undocumented field to the request body, using sjson syntax\n\tSDK_PackageOptionName.WithJSONSet("some.json.path", map[string]string{"my": "object"}),\n)\n```\n\nSee the [full list of request options](https://pkg.go.dev/github.com/nirvana-labs/nirvana-go/v2/SDK_PackageOptionName).\n\n### Pagination\n\nThis library provides some conveniences for working with paginated list endpoints.\n\nYou can use `.ListAutoPaging()` methods to iterate through items across all pages:\n\n```go\niter := client.Compute.VMs.ListAutoPaging(context.TODO(), compute.VMListParams{\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tLimit: nirvana.Int(10),\n})\n// Automatically fetches more pages as needed.\nfor iter.Next() {\n\tvm := iter.Current()\n\tfmt.Printf("%+v\\n", vm)\n}\nif err := iter.Err(); err != nil {\n\tpanic(err.Error())\n}\n```\n\nOr you can use simple `.List()` methods to fetch a single page and receive a standard response object\nwith additional helper methods like `.GetNextPage()`, e.g.:\n\n```go\npage, err := client.Compute.VMs.List(context.TODO(), compute.VMListParams{\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tLimit: nirvana.Int(10),\n})\nfor page != nil {\n\tfor _, vm := range page.Items {\n\t\tfmt.Printf("%+v\\n", vm)\n\t}\n\tpage, err = page.GetNextPage()\n}\nif err != nil {\n\tpanic(err.Error())\n}\n```\n\n### Errors\n\nWhen the API returns a non-success status code, we return an error with type\n`*SDK_PackageName.Error`. This contains the `StatusCode`, `*http.Request`, and\n`*http.Response` values of the request, as well as the JSON of the error body\n(much like other response objects in the SDK).\n\nTo handle errors, we recommend that you use the `errors.As` pattern:\n\n```go\n_, err := client.Compute.VMs.New(context.TODO(), compute.VMNewParams{\n\tBootVolume: compute.VMNewParamsBootVolume{\n\t\tSize: 100,\n\t\tType: compute.VolumeTypeABS,\n\t},\n\tInstanceType: "n1-standard-2",\n\tName: "my-vm",\n\tOSImageName: "ubuntu-noble-2025-10-01",\n\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\tPublicIPEnabled: true,\n\tRegion: shared.RegionNameUsSva2,\n\tSSHKey: compute.SSHKeyRequestParam{\n\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t},\n\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n})\nif err != nil {\n\tvar apierr *nirvana.Error\n\tif errors.As(err, &apierr) {\n\t\tprintln(string(apierr.DumpRequest(true))) // Prints the serialized HTTP request\n\t\tprintln(string(apierr.DumpResponse(true))) // Prints the serialized HTTP response\n\t}\n\tpanic(err.Error()) // GET "/v1/compute/vms": 400 Bad Request { ... }\n}\n```\n\nWhen other errors occur, they are returned unwrapped; for example,\nif HTTP transport fails, you might receive `*url.Error` wrapping `*net.OpError`.\n\n### Timeouts\n\nRequests do not time out by default; use context to configure a timeout for a request lifecycle.\n\nNote that if a request is [retried](#retries), the context timeout does not start over.\nTo set a per-retry timeout, use `SDK_PackageOptionName.WithRequestTimeout()`.\n\n```go\n// This sets the timeout for the request, including all the retries.\nctx, cancel := context.WithTimeout(context.Background(), 5*time.Minute)\ndefer cancel()\nclient.Compute.VMs.New(\n\tctx,\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\t// This sets the per-retry timeout\n\toption.WithRequestTimeout(20*time.Second),\n)\n```\n\n### File uploads\n\nRequest parameters that correspond to file uploads in multipart requests are typed as\n`param.Field[io.Reader]`. The contents of the `io.Reader` will by default be sent as a multipart form\npart with the file name of "anonymous_file" and content-type of "application/octet-stream".\n\nThe file name and content-type can be customized by implementing `Name() string` or `ContentType()\nstring` on the run-time type of `io.Reader`. Note that `os.File` implements `Name() string`, so a\nfile returned by `os.Open` will be sent with the file name on disk.\n\nWe also provide a helper `SDK_PackageName.FileParam(reader io.Reader, filename string, contentType string)`\nwhich can be used to wrap any `io.Reader` with the appropriate file name and content type.\n\n\n\n### Retries\n\nCertain errors will be automatically retried 2 times by default, with a short exponential backoff.\nWe retry by default all connection errors, 408 Request Timeout, 409 Conflict, 429 Rate Limit,\nand >=500 Internal errors.\n\nYou can use the `WithMaxRetries` option to configure or disable this:\n\n```go\n// Configure the default for all requests:\nclient := nirvana.NewClient(\n\toption.WithMaxRetries(0), // default is 2\n)\n\n// Override per-request:\nclient.Compute.VMs.New(\n\tcontext.TODO(),\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\toption.WithMaxRetries(5),\n)\n```\n\n\n### Accessing raw response data (e.g. response headers)\n\nYou can access the raw HTTP response data by using the `option.WithResponseInto()` request option. This is useful when\nyou need to examine response headers, status codes, or other details.\n\n```go\n// Create a variable to store the HTTP response\nvar response *http.Response\noperation, err := client.Compute.VMs.New(\n\tcontext.TODO(),\n\tcompute.VMNewParams{\n\t\tBootVolume: compute.VMNewParamsBootVolume{\n\t\t\tSize: 100,\n\t\t\tType: compute.VolumeTypeABS,\n\t\t},\n\t\tInstanceType: "n1-standard-2",\n\t\tName: "my-vm",\n\t\tOSImageName: "ubuntu-noble-2025-10-01",\n\t\tProjectID: "123e4567-e89b-12d3-a456-426614174000",\n\t\tPublicIPEnabled: true,\n\t\tRegion: shared.RegionNameUsSva2,\n\t\tSSHKey: compute.SSHKeyRequestParam{\n\t\t\tPublicKey: "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2",\n\t\t},\n\t\tSubnetID: "123e4567-e89b-12d3-a456-426614174000",\n\t},\n\toption.WithResponseInto(&response),\n)\nif err != nil {\n\t// handle error\n}\nfmt.Printf("%+v\\n", operation)\n\nfmt.Printf("Status Code: %d\\n", response.StatusCode)\nfmt.Printf("Headers: %+#v\\n", response.Header)\n```\n\n### Making custom/undocumented requests\n\nThis library is typed for convenient access to the documented API. If you need to access undocumented\nendpoints, params, or response properties, the library can still be used.\n\n#### Undocumented endpoints\n\nTo make requests to undocumented endpoints, you can use `client.Get`, `client.Post`, and other HTTP verbs.\n`RequestOptions` on the client, such as retries, will be respected when making these requests.\n\n```go\nvar (\n // params can be an io.Reader, a []byte, an encoding/json serializable object,\n // or a "…Params" struct defined in this library.\n params map[string]interface{}\n\n // result can be an []byte, *http.Response, a encoding/json deserializable object,\n // or a model defined in this library.\n result *http.Response\n)\nerr := client.Post(context.Background(), "/unspecified", params, &result)\nif err != nil {\n …\n}\n```\n\n#### Undocumented request params\n\nTo make requests using undocumented parameters, you may use either the `SDK_PackageOptionName.WithQuerySet()`\nor the `SDK_PackageOptionName.WithJSONSet()` methods.\n\n```go\nparams := FooNewParams{\n ID: SDK_PackageName.F("id_xxxx"),\n Data: SDK_PackageName.F(FooNewParamsData{\n FirstName: SDK_PackageName.F("John"),\n }),\n}\nclient.Foo.New(context.Background(), params, SDK_PackageOptionName.WithJSONSet("data.last_name", "Doe"))\n```\n\n#### Undocumented response properties\n\nTo access undocumented response properties, you may either access the raw JSON of the response as a string\nwith `result.JSON.RawJSON()`, or get the raw JSON of a particular field on the result with\n`result.JSON.Foo.Raw()`.\n\nAny fields that are not present on the response struct will be saved and can be accessed by `result.JSON.ExtraFields()` which returns the extra fields as a `map[string]Field`.\n\n### Middleware\n\nWe provide `SDK_PackageOptionName.WithMiddleware` which applies the given\nmiddleware to requests.\n\n```go\nfunc Logger(req *http.Request, next SDK_PackageOptionName.MiddlewareNext) (res *http.Response, err error) {\n\t// Before the request\n\tstart := time.Now()\n\tLogReq(req)\n\n\t// Forward the request to the next handler\n\tres, err = next(req)\n\n\t// Handle stuff after the request\n\tend := time.Now()\n\tLogRes(res, err, start - end)\n\n return res, err\n}\n\nclient := SDK_PackageName.SDK_ClientInitializerName(\n\tSDK_PackageOptionName.WithMiddleware(Logger),\n)\n```\n\nWhen multiple middlewares are provided as variadic arguments, the middlewares\nare applied left to right. If `SDK_PackageOptionName.WithMiddleware` is given\nmultiple times, for example first in the client then the method, the\nmiddleware in the client will run first and the middleware given in the method\nwill run next.\n\nYou may also replace the default `http.Client` with\n`SDK_PackageOptionName.WithHTTPClient(client)`. Only one http client is\naccepted (this overwrites any previous client) and receives requests after any\nmiddleware has been applied.\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/nirvana-labs/nirvana-go/issues) with questions, bugs, or suggestions.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
4901
5088
  },
4902
5089
  {
4903
5090
  language: 'terraform',
4904
5091
  content:
4905
- '# Nirvana Labs Terraform Provider\n\nThe [Nirvana Labs Terraform provider](https://registry.terraform.io/providers/nirvana-labs/nirvana/latest/docs) provides convenient access to\nthe [Nirvana Labs REST API](https://docs.nirvanalabs.io) from Terraform.\n\n\n\n## Requirements\n\nThis provider requires Terraform CLI 1.0 or later. You can [install it for your system](https://developer.hashicorp.com/terraform/install)\non Hashicorp\'s website.\n\n## Usage\n\nAdd the following to your `main.tf` file:\n\n<!-- x-release-please-start-version -->\n\n```hcl\n# Declare the provider and version\nterraform {\n required_providers {\n SDK_ProviderTypeName = {\n source = "nirvana-labs/nirvana"\n version = "~> 2.1.0"\n }\n }\n}\n\n# Initialize the provider\nprovider "nirvana" {\n api_key = "My API Key" # or set NIRVANA_LABS_API_KEY env variable\n}\n\n# Configure a resource\nresource "nirvana_compute_vm" "example_compute_vm" {\n boot_volume = {\n size = 100\n type = "abs"\n tags = ["production", "ethereum"]\n }\n instance_type = "n1-standard-2"\n name = "my-vm"\n os_image_name = "ubuntu-noble-2025-10-01"\n project_id = "123e4567-e89b-12d3-a456-426614174000"\n public_ip_enabled = true\n region = "us-sva-2"\n ssh_key = {\n public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2"\n }\n subnet_id = "123e4567-e89b-12d3-a456-426614174000"\n data_volumes = [{\n name = "my-data-volume"\n size = 100\n type = "abs"\n tags = ["production", "ethereum"]\n }]\n tags = ["production", "ethereum"]\n}\n```\n\n<!-- x-release-please-end -->\n\nInitialize your project by running `terraform init` in the directory.\n\nAdditional examples can be found in the [./examples](./examples) folder within this repository, and you can\nrefer to the full documentation on [the Terraform Registry](https://registry.terraform.io/providers/nirvana-labs/nirvana/latest/docs).\n\n### Provider Options\nWhen you initialize the provider, the following options are supported. It is recommended to use environment variables for sensitive values like access tokens.\nIf an environment variable is provided, then the option does not need to be set in the terraform source.\n\n| Property | Environment variable | Required | Default value |\n| -------- | ---------------------- | -------- | ------------- |\n| api_key | `NIRVANA_LABS_API_KEY` | true | — |\n\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/nirvana-labs/terraform-provider-nirvana/issues) with questions, bugs, or suggestions.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
5092
+ '# Nirvana Labs Terraform Provider\n\nThe [Nirvana Labs Terraform provider](https://registry.terraform.io/providers/nirvana-labs/nirvana/latest/docs) provides convenient access to\nthe [Nirvana Labs REST API](https://docs.nirvanalabs.io) from Terraform.\n\n\n\n## Requirements\n\nThis provider requires Terraform CLI 1.0 or later. You can [install it for your system](https://developer.hashicorp.com/terraform/install)\non Hashicorp\'s website.\n\n## Usage\n\nAdd the following to your `main.tf` file:\n\n<!-- x-release-please-start-version -->\n\n```hcl\n# Declare the provider and version\nterraform {\n required_providers {\n SDK_ProviderTypeName = {\n source = "nirvana-labs/nirvana"\n version = "~> 2.1.2"\n }\n }\n}\n\n# Initialize the provider\nprovider "nirvana" {\n api_key = "My API Key" # or set NIRVANA_LABS_API_KEY env variable\n}\n\n# Configure a resource\nresource "nirvana_compute_vm" "example_compute_vm" {\n boot_volume = {\n size = 100\n type = "abs"\n tags = ["production", "ethereum"]\n }\n instance_type = "n1-standard-2"\n name = "my-vm"\n os_image_name = "ubuntu-noble-2025-10-01"\n project_id = "123e4567-e89b-12d3-a456-426614174000"\n public_ip_enabled = true\n region = "us-sva-2"\n ssh_key = {\n public_key = "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDBIASkmwNiLcdlW6927Zjt1Hf7Kw/PpEZ4Zm+wU9wn2"\n }\n subnet_id = "123e4567-e89b-12d3-a456-426614174000"\n data_volumes = [{\n name = "my-data-volume"\n size = 100\n type = "abs"\n tags = ["production", "ethereum"]\n }]\n tags = ["production", "ethereum"]\n}\n```\n\n<!-- x-release-please-end -->\n\nInitialize your project by running `terraform init` in the directory.\n\nAdditional examples can be found in the [./examples](./examples) folder within this repository, and you can\nrefer to the full documentation on [the Terraform Registry](https://registry.terraform.io/providers/nirvana-labs/nirvana/latest/docs).\n\n### Provider Options\nWhen you initialize the provider, the following options are supported. It is recommended to use environment variables for sensitive values like access tokens.\nIf an environment variable is provided, then the option does not need to be set in the terraform source.\n\n| Property | Environment variable | Required | Default value |\n| -------- | ---------------------- | -------- | ------------- |\n| api_key | `NIRVANA_LABS_API_KEY` | true | — |\n\n\n## Semantic versioning\n\nThis package generally follows [SemVer](https://semver.org/spec/v2.0.0.html) conventions, though certain backwards-incompatible changes may be released as minor versions:\n\n1. Changes to library internals which are technically public but not intended or documented for external use. _(Please open a GitHub issue to let us know if you are relying on such internals.)_\n2. Changes that we do not expect to impact the vast majority of users in practice.\n\nWe take backwards-compatibility seriously and work hard to ensure you can rely on a smooth upgrade experience.\n\nWe are keen for your feedback; please open an [issue](https://www.github.com/nirvana-labs/terraform-provider-nirvana/issues) with questions, bugs, or suggestions.\n\n## Contributing\n\nSee [the contributing documentation](./CONTRIBUTING.md).\n',
4906
5093
  },
4907
5094
  {
4908
5095
  language: 'cli',