{
    "openapi": "3.1.2",
    "info": {
        "title": "ASI Cloud Portal",
        "version": "1.0.0",
        "description": "ASI Cloud infrastructure API. Send `Authorization: Bearer` with an organisation API token (or a staff admin token for reads). Organisation tokens read their own organisation and direct child organisations. VM deploy, power, rename, resize, delete, and snapshot calls, every S3 bucket change, and all SSH key, firewall rule and AI Inference calls reject admin tokens. S3 bucket create and rotate-key, SSH key generation and AI Inference key creation return the secret once; it is never stored. `GET \/vm-data` is cursor-paged; `page` greater than 1 returns 422. Product pricing is a separate public API at `\/docs\/products`."
    },
    "servers": [
        {
            "url": "https:\/\/cloud.asi.nz\/api"
        }
    ],
    "security": [
        {
            "http": []
        }
    ],
    "paths": {
        "\/v1\/ai-inference": {
            "get": {
                "operationId": "aiInference.show",
                "description": "Whether it is on, whether it can be turned on (and why not), the base URLs to call, rate limits, and the models\nwith their prices (NZD per million tokens, excluding GST). Before it is turned on, `models` shows what turning it\non would give.",
                "summary": "Get AI Inference status",
                "tags": [
                    "AiInference"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ai-inference\/enable": {
            "post": {
                "operationId": "aiInference.enable",
                "description": "Starts per-token billing: usage is added to the monthly bill and charged to the card on file. Needs a payment\nmethod. Once ASI has turned it off for an organisation, only ASI can turn it back on (409 `disabled_by_asi`).\nCalling it while it is on changes nothing.",
                "summary": "Turn AI Inference on",
                "tags": [
                    "AiInference"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ai-inference\/disable": {
            "post": {
                "operationId": "aiInference.disable",
                "description": "Every API key stops working within a few seconds. Keys and usage are kept, usage so far this month is still\nbilled, and it can be turned back on at any time.",
                "summary": "Turn AI Inference off",
                "tags": [
                    "AiInference"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ai-inference\/keys": {
            "get": {
                "operationId": "aiInference.keys",
                "description": "Revoked and expired keys stay listed until they are deleted. `last_used_at` is updated hourly.",
                "summary": "List API keys",
                "tags": [
                    "AiInference"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "aiInference.createKey",
                "description": "`name`: 1 to 100 characters. `expires_on` (optional, YYYY-MM-DD): the key works to the end of that day, New\nZealand time; leave it out for a key that does not expire. The key works for every model the organisation can\nuse. The response holds `secret`, which is shown once and cannot be retrieved again. At most 20 active keys.",
                "summary": "Create an API key",
                "tags": [
                    "AiInference"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "description": "Present but possibly blank: the key service judges the name, so a blank one gets reason invalid_name."
                                    },
                                    "expires_on": {
                                        "type": [
                                            "string",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Key created. `secret` is shown once and cannot be retrieved again. Send it as the API key (Bearer token) to the base URLs.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "integer"
                                                },
                                                "name": {
                                                    "type": "string"
                                                },
                                                "prefix": {
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "created_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "expires_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "last_used_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "revoked_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "revoked_by_asi": {
                                                    "type": "boolean"
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "name",
                                                "prefix",
                                                "status",
                                                "created_at",
                                                "expires_at",
                                                "last_used_at",
                                                "revoked_at",
                                                "revoked_by_asi"
                                            ]
                                        },
                                        "secret": {
                                            "type": "string"
                                        },
                                        "base_urls": {
                                            "type": "object",
                                            "properties": {
                                                "openai": {
                                                    "type": "string"
                                                },
                                                "anthropic": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "openai",
                                                "anthropic"
                                            ]
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "secret",
                                        "base_urls",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ai-inference\/keys\/{id}": {
            "get": {
                "operationId": "aiInference.showKey",
                "summary": "Get an API key",
                "tags": [
                    "AiInference"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "aiInference.deleteKey",
                "description": "Only a revoked or expired key can be deleted (409 `must_revoke_first` otherwise). It disappears from the list;\nits usage stays on the bills.",
                "summary": "Delete an API key",
                "tags": [
                    "AiInference"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ai-inference\/keys\/{id}\/revoke": {
            "post": {
                "operationId": "aiInference.revokeKey",
                "description": "Anything using the key stops working within a few seconds. This cannot be undone. Revoking a revoked key\nchanges nothing.",
                "summary": "Revoke an API key",
                "tags": [
                    "AiInference"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/billings": {
            "get": {
                "operationId": "billing.index",
                "summary": "Display a listing of the billings",
                "tags": [
                    "Billing"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    },
                    {
                        "name": "month",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "year",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "price_resource_type_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/billings\/summary": {
            "get": {
                "operationId": "billing.summary",
                "summary": "Return monthly billing totals aggregated by resource type.\nUses the latest batch per month (same semantics as getBillingFilteredByLatestBatchId)",
                "tags": [
                    "Billing"
                ],
                "parameters": [
                    {
                        "name": "year",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "year_from",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "year_to",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "month",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/billings\/{id}": {
            "get": {
                "operationId": "billing.show",
                "summary": "Display the specified billing",
                "tags": [
                    "Billing"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "allOf": [
                                                {
                                                    "$ref": "#\/components\/schemas\/BillingResource"
                                                },
                                                {
                                                    "type": "object",
                                                    "required": [
                                                        "organisation",
                                                        "price_resource_type",
                                                        "price"
                                                    ]
                                                }
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Billing not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/classifications": {
            "get": {
                "operationId": "classification.index",
                "summary": "Display a listing of the classifications",
                "tags": [
                    "Classification"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/ClassificationResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/classifications\/{id}": {
            "get": {
                "operationId": "classification.show",
                "summary": "Display the specified classification",
                "tags": [
                    "Classification"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/ClassificationResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Classification not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/firewall-rules": {
            "get": {
                "operationId": "firewallRule.index",
                "description": "`meta` holds the region's public IP and subnet. Connect to a rule at `connect_to`\n(public IP and external port). An empty `source_addresses` means any address.\nWith no network in the region yet, `meta.network_provisioned` is false and the list is empty.",
                "summary": "List firewall rules",
                "tags": [
                    "FirewallRule"
                ],
                "parameters": [
                    {
                        "name": "deployment_preset_id",
                        "in": "query",
                        "description": "Region id from GET \/deployment-presets. Defaults to the default region.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "firewallRule.store",
                "description": "Forwards `external_port` on the region's public IP to `internal_ip`:`internal_port`\n(an address in your subnet, not the gateway). `name`: letters, numbers, hyphens,\nunderscores and spaces, at most 32 characters; it is listed lowercase with hyphens, and that\nlisted name is how you delete the rule. `protocol`: tcp (default) or udp. `source_addresses`:\nIPv4 addresses or CIDRs allowed to connect (at most 20; leave out for any address).\n`expires_in`: never (default), 1h, 4h, 24h or 7d; the rule is removed after that.\nAt most 50 rules per region; an external port, destination or name can only be used once.",
                "summary": "Add a firewall rule",
                "tags": [
                    "FirewallRule"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string"
                                    },
                                    "protocol": {
                                        "type": "string"
                                    },
                                    "external_port": {
                                        "type": "integer"
                                    },
                                    "internal_ip": {
                                        "type": "string"
                                    },
                                    "internal_port": {
                                        "type": "integer"
                                    },
                                    "source_addresses": {
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "expires_in": {
                                        "type": "string"
                                    },
                                    "deployment_preset_id": {
                                        "type": [
                                            "integer",
                                            "null"
                                        ]
                                    }
                                },
                                "required": [
                                    "name",
                                    "external_port",
                                    "internal_ip",
                                    "internal_port"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Rule created. `data.name` is the listed name used to delete it; `data.connect_to` is the public address.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "name": {
                                                    "type": "string"
                                                },
                                                "protocol": {
                                                    "type": "string"
                                                },
                                                "external_port": {
                                                    "type": "integer"
                                                },
                                                "internal_ip": {
                                                    "type": "string"
                                                },
                                                "internal_port": {
                                                    "type": "integer"
                                                },
                                                "source_addresses": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "string"
                                                    }
                                                },
                                                "expires_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "connect_to": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "name",
                                                "protocol",
                                                "external_port",
                                                "internal_ip",
                                                "internal_port",
                                                "source_addresses",
                                                "expires_at",
                                                "connect_to"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/firewall-rules\/{name}": {
            "delete": {
                "operationId": "firewallRule.destroy",
                "description": "`name` is the rule's listed name (lowercase, hyphens). Traffic to its port stops at once.",
                "summary": "Delete a firewall rule",
                "tags": [
                    "FirewallRule"
                ],
                "parameters": [
                    {
                        "name": "name",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "deployment_preset_id",
                        "in": "query",
                        "description": "Region id from GET \/deployment-presets. Defaults to the default region.",
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/guest-os": {
            "get": {
                "operationId": "guestOS.index",
                "summary": "Display a listing of the guest OS",
                "tags": [
                    "GuestOS"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/GuestOSResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/guest-os\/{id}": {
            "get": {
                "operationId": "guestOS.show",
                "summary": "Display the specified guest OS",
                "tags": [
                    "GuestOS"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/GuestOSResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Guest OS not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/guest-os-licenses": {
            "get": {
                "operationId": "guestOSLicense.index",
                "summary": "Display a listing of the guest OS licenses",
                "tags": [
                    "GuestOSLicense"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/GuestOSLicenseResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/guest-os-licenses\/{id}": {
            "get": {
                "operationId": "guestOSLicense.show",
                "summary": "Display the specified guest OS license",
                "tags": [
                    "GuestOSLicense"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/GuestOSLicenseResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Guest OS license not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/operations\/{operationId}": {
            "get": {
                "operationId": "operationStatus.show",
                "description": "Poll the status of an async VM operation. Works for both token types.\nOrg tokens may only query operations that belong to their organisation.",
                "summary": "GET \/api\/v1\/operations\/{operationId}",
                "tags": [
                    "OperationStatus"
                ],
                "parameters": [
                    {
                        "name": "operationId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "operation_id": {
                                                    "type": "string"
                                                },
                                                "status": {
                                                    "anyOf": [
                                                        {
                                                            "type": "string"
                                                        },
                                                        {
                                                            "type": "string",
                                                            "enum": [
                                                                "unknown"
                                                            ]
                                                        }
                                                    ]
                                                },
                                                "operation_type": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "vm_name": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "started_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "error": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "operation_id",
                                                "status",
                                                "operation_type",
                                                "vm_name",
                                                "description",
                                                "started_at",
                                                "error"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Operation not found or has expired."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/organisations": {
            "get": {
                "operationId": "organisation.index",
                "summary": "Display a listing of the organisations",
                "tags": [
                    "Organisation"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/organisations\/{id}": {
            "get": {
                "operationId": "organisation.show",
                "summary": "Display the specified organisation",
                "tags": [
                    "Organisation"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/OrganisationResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Organisation not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/prices": {
            "get": {
                "operationId": "price.index",
                "summary": "Display a listing of the prices",
                "tags": [
                    "Price"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    },
                    {
                        "name": "price_resource_type_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "price_type_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/prices\/{id}": {
            "get": {
                "operationId": "price.show",
                "summary": "Display the specified price",
                "tags": [
                    "Price"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PriceResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Price not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/price-resource-types": {
            "get": {
                "operationId": "priceResourceType.index",
                "summary": "Display a listing of the price resource types",
                "tags": [
                    "PriceResourceType"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/PriceResourceTypeResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/price-resource-types\/{id}": {
            "get": {
                "operationId": "priceResourceType.show",
                "summary": "Display the specified price resource type",
                "tags": [
                    "PriceResourceType"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/PriceResourceTypeResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Price resource type not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets": {
            "get": {
                "operationId": "s3Bucket.index",
                "description": "Organisation tokens see their own buckets and those of direct child organisations.\nFilter with `organisation_id` (numeric id) or `name` (partial match).",
                "summary": "List S3 buckets",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "s3Bucket.store",
                "description": "Requires an organisation token and a payment method. Your organisation prefix\n(for example `s001-`) is added to `name` if it is missing. `permission_groups`\ndefaults to every group; at least `read` or `write` is required. `allowed_cidrs`\nis a list of public IPv4 \/32s and is only accepted when IP allowlists are enabled.\nThe response holds the secret key. It is shown once and cannot be retrieved again.",
                "summary": "Create an S3 bucket",
                "tags": [
                    "S3Bucket"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 63
                                    },
                                    "permission_groups": {
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "items": {
                                            "type": "string"
                                        }
                                    },
                                    "allowed_cidrs": {
                                        "type": [
                                            "array",
                                            "null"
                                        ],
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Bucket created. `credentials.secret_access_key` is shown once and cannot be retrieved again.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/S3BucketResource"
                                        },
                                        "credentials": {
                                            "type": "object",
                                            "properties": {
                                                "access_key_id": {
                                                    "type": "string"
                                                },
                                                "secret_access_key": {
                                                    "type": "string"
                                                },
                                                "endpoint": {
                                                    "type": "string"
                                                },
                                                "addressing_style": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "access_key_id",
                                                "secret_access_key",
                                                "endpoint",
                                                "addressing_style"
                                            ]
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "credentials",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets\/{id}": {
            "get": {
                "operationId": "s3Bucket.show",
                "summary": "Get an S3 bucket",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/S3BucketResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Bucket not found."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "s3Bucket.destroy",
                "description": "The bucket must be empty (409 `bucket_not_empty` otherwise). Its key stops working\nand the name is released. This cannot be undone.",
                "summary": "Delete an empty S3 bucket",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets\/{id}\/rotate-key": {
            "post": {
                "operationId": "s3Bucket.rotateKey",
                "description": "Issues a new key and deletes the current one, which stops working immediately.\nThe response holds the new secret key. It is shown once and cannot be retrieved again.",
                "summary": "Rotate an S3 bucket's access key",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "New key issued. `credentials.secret_access_key` is shown once and cannot be retrieved again.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/S3BucketResource"
                                        },
                                        "credentials": {
                                            "type": "object",
                                            "properties": {
                                                "access_key_id": {
                                                    "type": "string"
                                                },
                                                "secret_access_key": {
                                                    "type": "string"
                                                },
                                                "endpoint": {
                                                    "type": "string"
                                                },
                                                "addressing_style": {
                                                    "type": "string"
                                                }
                                            },
                                            "required": [
                                                "access_key_id",
                                                "secret_access_key",
                                                "endpoint",
                                                "addressing_style"
                                            ]
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "credentials",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets\/{id}\/permissions": {
            "put": {
                "operationId": "s3Bucket.updatePermissions",
                "description": "Replaces the key's permission groups: `read`, `write`, `delete`, `retention`, `restore`.\nAt least `read` or `write` is required. Listing the bucket is always allowed. The\ncurrent key's rights change immediately and no new secret is issued.",
                "summary": "Change an S3 bucket's permissions",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "permission_groups": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                },
                                "required": [
                                    "permission_groups"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets\/{id}\/allowlist": {
            "put": {
                "operationId": "s3Bucket.updateAllowlist",
                "description": "Replaces the list of public IPv4 \/32s (at most 20) the key works from. An empty list\nremoves the restriction. This does not lift the New Zealand-only restriction. The\ncurrent key is restricted immediately and no new secret is issued. Returns 404 while\nIP allowlists are not enabled.",
                "summary": "Change an S3 bucket's IP allowlist",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "allowed_cidrs": {
                                        "type": "array",
                                        "items": {
                                            "type": "string"
                                        }
                                    }
                                },
                                "required": [
                                    "allowed_cidrs"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/s3-buckets\/{id}\/empty-and-delete": {
            "post": {
                "operationId": "s3Bucket.emptyAndDelete",
                "description": "Permanently deletes every object, old version and unfinished upload, then the bucket.\n`confirm_name` must equal the full bucket name. One call empties for up to about 30\nseconds: a larger bucket returns 409 `empty_incomplete` with `retryable: true`, and\ncalling again carries on. Objects under retention or legal hold are never removed\n(409 `objects_locked`). This cannot be undone.",
                "summary": "Empty and delete an S3 bucket",
                "tags": [
                    "S3Bucket"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "confirm_name": {
                                        "type": "string"
                                    }
                                },
                                "required": [
                                    "confirm_name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/sources": {
            "get": {
                "operationId": "source.index",
                "summary": "Display a listing of the sources",
                "tags": [
                    "Source"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    },
                    {
                        "name": "source_type_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "organisation_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "enabled",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/SourceResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Forbidden"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "This endpoint is not available for organisation tokens"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/sources\/{id}": {
            "get": {
                "operationId": "source.show",
                "summary": "Display the specified source",
                "tags": [
                    "Source"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SourceResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Source not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "403": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Forbidden"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "This endpoint is not available for organisation tokens"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/source-data-types": {
            "get": {
                "operationId": "sourceDataType.index",
                "summary": "Display a listing of the source data types",
                "tags": [
                    "SourceDataType"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/SourceDataTypeResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/source-data-types\/{id}": {
            "get": {
                "operationId": "sourceDataType.show",
                "summary": "Display the specified source data type",
                "tags": [
                    "SourceDataType"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SourceDataTypeResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "Source data type not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ssh-keys": {
            "get": {
                "operationId": "sshKey.index",
                "summary": "List SSH keys",
                "tags": [
                    "SshKey"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "sshKey.store",
                "description": "Send `public_key` (one OpenSSH line: ssh-ed25519, ssh-rsa or ecdsa-sha2-nistp256\/384\/521)\nto upload your own key. Leave it out and ASI generates an Ed25519 key pair: the response\nthen holds `private_key`, which is shown once and never stored. At most 10 keys, and one\nnew key per 60 seconds (429 `throttled`).",
                "summary": "Add an SSH key",
                "tags": [
                    "SshKey"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "name": {
                                        "type": "string",
                                        "maxLength": 255
                                    },
                                    "public_key": {
                                        "type": [
                                            "string",
                                            "null"
                                        ],
                                        "maxLength": 16384
                                    }
                                },
                                "required": [
                                    "name"
                                ]
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Key added. When the key was generated, `private_key` (OpenSSH format) is shown once and cannot be retrieved again.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/SshKeyApiResource"
                                        },
                                        "private_key": {
                                            "type": "string"
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/ssh-keys\/{id}": {
            "get": {
                "operationId": "sshKey.show",
                "summary": "Get an SSH key",
                "tags": [
                    "SshKey"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "sshKey.destroy",
                "description": "VMs already deployed with the key keep it; only new deployments can no longer use it.",
                "summary": "Delete an SSH key",
                "tags": [
                    "SshKey"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/support-tickets": {
            "get": {
                "operationId": "supportTicket.index",
                "description": "Most recently updated first. `meta.categories` lists the categories a new ticket can use.",
                "summary": "List support tickets",
                "tags": [
                    "SupportTicket"
                ],
                "parameters": [
                    {
                        "name": "status",
                        "in": "query",
                        "description": "open, closed or all.",
                        "schema": {
                            "type": "string",
                            "default": "all"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The tickets.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "type": "object",
                                                "properties": {
                                                    "id": {
                                                        "type": "string"
                                                    },
                                                    "subject": {
                                                        "type": "string"
                                                    },
                                                    "description": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "status": {
                                                        "type": "string"
                                                    },
                                                    "is_closed": {
                                                        "type": "boolean"
                                                    },
                                                    "priority": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "category": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "created_at": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    },
                                                    "updated_at": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    }
                                                },
                                                "required": [
                                                    "id",
                                                    "subject",
                                                    "description",
                                                    "status",
                                                    "is_closed",
                                                    "priority",
                                                    "category",
                                                    "created_at",
                                                    "updated_at"
                                                ]
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "categories": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": "object",
                                                        "properties": {
                                                            "value": {
                                                                "type": "string"
                                                            },
                                                            "label": {
                                                                "type": "string"
                                                            }
                                                        },
                                                        "required": [
                                                            "value",
                                                            "label"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "status",
                                                "categories"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "supportTicket.store",
                "description": "`subject` (one line, up to 255 characters) and `description` (up to 10,000) are required.\n`priority` is low, medium (default) or high; `category` is a value or label from\n`meta.categories` of the list. ASI's support team is notified through HubSpot. At most one\nnew ticket a minute and 10 a day per organisation (429 `throttled`). After a 503 `upstream`,\ncheck the list before retrying: the ticket may have been opened anyway. Never put passwords,\nkeys or other secrets in a ticket.",
                "summary": "Open a support ticket",
                "tags": [
                    "SupportTicket"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "subject": {
                                        "type": "string"
                                    },
                                    "description": {
                                        "type": "string"
                                    },
                                    "priority": {
                                        "type": "string"
                                    },
                                    "category": {
                                        "type": "string"
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "201": {
                        "description": "Ticket opened.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "subject": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "is_closed": {
                                                    "type": "boolean"
                                                },
                                                "priority": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "category": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "created_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "updated_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "subject",
                                                "description",
                                                "status",
                                                "is_closed",
                                                "priority",
                                                "category",
                                                "created_at",
                                                "updated_at"
                                            ]
                                        },
                                        "message": {
                                            "type": "string"
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/support-tickets\/{ticketId}": {
            "get": {
                "operationId": "supportTicket.show",
                "summary": "Get a support ticket",
                "tags": [
                    "SupportTicket"
                ],
                "parameters": [
                    {
                        "name": "ticketId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "The ticket.",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "id": {
                                                    "type": "string"
                                                },
                                                "subject": {
                                                    "type": "string"
                                                },
                                                "description": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "status": {
                                                    "type": "string"
                                                },
                                                "is_closed": {
                                                    "type": "boolean"
                                                },
                                                "priority": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "category": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "created_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "updated_at": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "id",
                                                "subject",
                                                "description",
                                                "status",
                                                "is_closed",
                                                "priority",
                                                "category",
                                                "created_at",
                                                "updated_at"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/costs": {
            "get": {
                "operationId": "vMData.costs",
                "description": "Lists every VM billed in the month, including VMs deleted since; `current` is true for VMs that exist now (as on\nthe portal's VM list). Pass `current_only=true` to list only those. The summary always covers every VM billed in\nthe month, with `current_vms` counting the ones that exist now.",
                "summary": "Display per-VM cost breakdown for a given month",
                "tags": [
                    "VMData"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data": {
            "get": {
                "operationId": "vMData.index",
                "summary": "Display a listing of the VM data",
                "tags": [
                    "VMData"
                ],
                "parameters": [
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    },
                    {
                        "name": "guest_os_id",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "power_state",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "backup",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "protection_type",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "created_at_from",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "created_at_to",
                        "in": "query",
                        "schema": {
                            "type": "string"
                        }
                    },
                    {
                        "name": "vcpus_min",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "vcpus_max",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "memory_size_gib_min",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    },
                    {
                        "name": "memory_size_gib_max",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 0
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "vmDeployment.deploy",
                "summary": "POST \/api\/v1\/vm-data\nBody: vm_name (required), template_ext_id (required), version_ext_id?, vcpus?,\nmemory_gib?, disk_size_gib?, deployment_preset_id?, ssh_key_id?",
                "tags": [
                    "VmDeployment"
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "ssh_key_id": {
                                        "type": "integer",
                                        "default": 0
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}": {
            "get": {
                "operationId": "vMData.show",
                "summary": "Display the specified VM data",
                "tags": [
                    "VMData"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "$ref": "#\/components\/schemas\/VMDataResource"
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM data not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "delete": {
                "operationId": "vmOperations.destroy",
                "summary": "DELETE \/api\/v1\/vm-data\/{id}",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/history": {
            "get": {
                "operationId": "vMData.history",
                "summary": "Display the change history for a specific VM",
                "tags": [
                    "VMData"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "per_page",
                        "in": "query",
                        "schema": {
                            "type": "integer",
                            "default": 15
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {
                                                "$ref": "#\/components\/schemas\/VMDataHistoryResource"
                                            }
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "current_page": {
                                                    "type": "integer"
                                                },
                                                "from": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "last_page": {
                                                    "type": "integer"
                                                },
                                                "per_page": {
                                                    "type": "integer"
                                                },
                                                "to": {
                                                    "type": [
                                                        "integer",
                                                        "null"
                                                    ]
                                                },
                                                "total": {
                                                    "type": "integer"
                                                }
                                            },
                                            "required": [
                                                "current_page",
                                                "from",
                                                "last_page",
                                                "per_page",
                                                "to",
                                                "total"
                                            ]
                                        },
                                        "links": {
                                            "type": "object",
                                            "properties": {
                                                "first": {
                                                    "type": "string"
                                                },
                                                "last": {
                                                    "type": "string"
                                                },
                                                "prev": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                },
                                                "next": {
                                                    "type": [
                                                        "string",
                                                        "null"
                                                    ]
                                                }
                                            },
                                            "required": [
                                                "first",
                                                "last",
                                                "prev",
                                                "next"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta",
                                        "links"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM data not found"
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-templates": {
            "get": {
                "operationId": "vmDeployment.templates",
                "summary": "GET \/api\/v1\/vm-templates\nOptional query: deployment_preset_id (selects the source\/region)",
                "tags": [
                    "VmDeployment"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/deployment-presets": {
            "get": {
                "operationId": "vmDeployment.presets",
                "summary": "GET \/api\/v1\/deployment-presets\nEnabled presets (regions) that accept new deployments",
                "tags": [
                    "VmDeployment"
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/state": {
            "get": {
                "operationId": "vmOperations.state",
                "summary": "GET \/api\/v1\/vm-data\/{id}\/state\nWorks for both token types",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "503": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "error": {
                                                    "type": "string",
                                                    "const": "Service Unavailable"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Could not retrieve VM state."
                                                }
                                            },
                                            "required": [
                                                "error",
                                                "message"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "error": {
                                                    "type": "string",
                                                    "const": "Service Unavailable"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Could not retrieve VM state from Nutanix."
                                                }
                                            },
                                            "required": [
                                                "error",
                                                "message"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "object",
                                            "properties": {
                                                "vm_id": {
                                                    "type": "integer"
                                                },
                                                "vm_ext_id": {
                                                    "type": "string"
                                                },
                                                "vm_name": {
                                                    "type": "string"
                                                },
                                                "power_state": {
                                                    "type": "boolean"
                                                },
                                                "ip_addresses": {
                                                    "type": "array",
                                                    "items": {
                                                        "type": [
                                                            "string",
                                                            "null"
                                                        ]
                                                    }
                                                }
                                            },
                                            "required": [
                                                "vm_id",
                                                "vm_ext_id",
                                                "vm_name",
                                                "power_state",
                                                "ip_addresses"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Unprocessable"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM is not on a Nutanix source."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM not found."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/snapshots": {
            "get": {
                "operationId": "vmOperations.snapshots",
                "summary": "GET \/api\/v1\/vm-data\/{id}\/snapshots\nWorks for both token types",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "503": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "anyOf": [
                                        {
                                            "type": "object",
                                            "properties": {
                                                "error": {
                                                    "type": "string",
                                                    "const": "Service Unavailable"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Could not retrieve snapshots."
                                                }
                                            },
                                            "required": [
                                                "error",
                                                "message"
                                            ]
                                        },
                                        {
                                            "type": "object",
                                            "properties": {
                                                "error": {
                                                    "type": "string",
                                                    "const": "Service Unavailable"
                                                },
                                                "message": {
                                                    "type": "string",
                                                    "const": "Could not retrieve snapshots from Nutanix."
                                                }
                                            },
                                            "required": [
                                                "error",
                                                "message"
                                            ]
                                        }
                                    ]
                                }
                            }
                        }
                    },
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "data": {
                                            "type": "array",
                                            "items": {}
                                        },
                                        "meta": {
                                            "type": "object",
                                            "properties": {
                                                "total": {
                                                    "type": "integer"
                                                },
                                                "max_allowed": {
                                                    "type": "integer",
                                                    "const": 3
                                                }
                                            },
                                            "required": [
                                                "total",
                                                "max_allowed"
                                            ]
                                        }
                                    },
                                    "required": [
                                        "data",
                                        "meta"
                                    ]
                                }
                            }
                        }
                    },
                    "422": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Unprocessable"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM is not on a Nutanix source."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    },
                    "404": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object",
                                    "properties": {
                                        "error": {
                                            "type": "string",
                                            "const": "Not Found"
                                        },
                                        "message": {
                                            "type": "string",
                                            "const": "VM not found."
                                        }
                                    },
                                    "required": [
                                        "error",
                                        "message"
                                    ]
                                }
                            }
                        }
                    }
                }
            },
            "post": {
                "operationId": "vmOperations.createSnapshot",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/snapshots\nBody: { \"snapshot_name\": \"string|null\" }",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/power-on": {
            "post": {
                "operationId": "vmOperations.powerOn",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/power-on",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/power-off": {
            "post": {
                "operationId": "vmOperations.powerOff",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/power-off",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/rename": {
            "post": {
                "operationId": "vmOperations.rename",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/rename\nBody: { \"new_name\": \"string\" }",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/modify-resources": {
            "post": {
                "operationId": "vmOperations.modifyResources",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/modify-resources\nBody: { \"vcpus\": int, \"memory_gib\": int, \"disk_size_gib\": int|null }",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    }
                ],
                "requestBody": {
                    "content": {
                        "application\/json": {
                            "schema": {
                                "type": "object",
                                "properties": {
                                    "vcpus": {
                                        "type": "integer",
                                        "default": 0
                                    },
                                    "memory_gib": {
                                        "type": "integer",
                                        "default": 0
                                    }
                                }
                            }
                        }
                    }
                },
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/snapshots\/{snapshotExtId}": {
            "delete": {
                "operationId": "vmOperations.deleteSnapshot",
                "summary": "DELETE \/api\/v1\/vm-data\/{id}\/snapshots\/{snapshotExtId}",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "snapshotExtId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        },
        "\/v1\/vm-data\/{id}\/snapshots\/{snapshotExtId}\/restore": {
            "post": {
                "operationId": "vmOperations.restoreSnapshot",
                "summary": "POST \/api\/v1\/vm-data\/{id}\/snapshots\/{snapshotExtId}\/restore",
                "tags": [
                    "VmOperations"
                ],
                "parameters": [
                    {
                        "name": "id",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "integer"
                        }
                    },
                    {
                        "name": "snapshotExtId",
                        "in": "path",
                        "required": true,
                        "schema": {
                            "type": "string"
                        }
                    }
                ],
                "responses": {
                    "200": {
                        "description": "",
                        "content": {
                            "application\/json": {
                                "schema": {
                                    "type": "object"
                                }
                            }
                        }
                    }
                }
            }
        }
    },
    "components": {
        "securitySchemes": {
            "http": {
                "type": "http",
                "scheme": "bearer"
            }
        },
        "schemas": {
            "BillingResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "batch_id": {
                        "type": "integer"
                    },
                    "organisation_id": {
                        "type": "integer"
                    },
                    "month": {
                        "type": "integer"
                    },
                    "year": {
                        "type": "integer"
                    },
                    "price_resource_type_id": {
                        "type": "integer"
                    },
                    "price_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "quantity": {
                        "type": "number"
                    },
                    "amount": {
                        "type": "string"
                    },
                    "full_month_amount": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "organisation": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            },
                            "organisation_id": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "organisation_id"
                        ]
                    },
                    "price_resource_type": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "price": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    }
                },
                "required": [
                    "id",
                    "batch_id",
                    "organisation_id",
                    "month",
                    "year",
                    "price_resource_type_id",
                    "price_id",
                    "quantity",
                    "amount",
                    "full_month_amount",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "BillingResource"
            },
            "ClassificationResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "ClassificationResource"
            },
            "GuestOSLicenseResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "GuestOSLicenseResource"
            },
            "GuestOSResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "family": {
                        "type": "string"
                    },
                    "architecture": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "family",
                    "architecture",
                    "name",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "GuestOSResource"
            },
            "OrganisationResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "organisation_id": {
                        "type": "string"
                    },
                    "parent_organisation_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "billing_type_id": {
                        "type": "integer"
                    },
                    "invoice_reference": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "gst_rate": {
                        "type": "string"
                    },
                    "invoice_currency": {
                        "type": "string"
                    },
                    "create_invoice": {
                        "type": "integer"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "billing_type": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "organisation_id",
                    "parent_organisation_id",
                    "billing_type_id",
                    "invoice_reference",
                    "gst_rate",
                    "invoice_currency",
                    "create_invoice",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "OrganisationResource"
            },
            "PriceResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "organisation_id": {
                        "type": "integer"
                    },
                    "price_resource_type_id": {
                        "type": "integer"
                    },
                    "amount": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "cost": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "min_qty": {
                        "type": "number"
                    },
                    "price_type_id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "organisation": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            },
                            "organisation_id": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "organisation_id"
                        ]
                    },
                    "price_resource_type": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "price_type": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    }
                },
                "required": [
                    "id",
                    "organisation_id",
                    "price_resource_type_id",
                    "amount",
                    "cost",
                    "min_qty",
                    "price_type_id",
                    "name",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "PriceResource"
            },
            "PriceResourceTypeResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "internal_name": {
                        "type": "string"
                    },
                    "order": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "internal_name",
                    "order",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "PriceResourceTypeResource"
            },
            "S3BucketResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "organisation_id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "access_key_id": {
                        "type": "string"
                    },
                    "permission_groups": {
                        "type": "array",
                        "description": "Stored null means every group (buckets created before groups were stored).",
                        "items": {}
                    },
                    "allowed_cidrs": {
                        "type": "array",
                        "description": "Empty means no IP restriction beyond the New Zealand edge.",
                        "items": {
                            "type": "string"
                        }
                    },
                    "endpoint": {
                        "type": "string"
                    },
                    "addressing_style": {
                        "type": "string",
                        "const": "path"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "organisation_id",
                    "name",
                    "access_key_id",
                    "permission_groups",
                    "allowed_cidrs",
                    "endpoint",
                    "addressing_style",
                    "created_at",
                    "updated_at"
                ],
                "title": "S3BucketResource"
            },
            "SourceDataTypeResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "description": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "description",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "SourceDataTypeResource"
            },
            "SourceResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "source_type_id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "base_url": {
                        "type": "string"
                    },
                    "enabled": {
                        "type": "integer"
                    },
                    "organisation_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "source_type": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "organisation": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": [
                                    "integer",
                                    "null"
                                ]
                            },
                            "name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "organisation_id": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "organisation_id"
                        ]
                    }
                },
                "required": [
                    "id",
                    "source_type_id",
                    "name",
                    "base_url",
                    "enabled",
                    "organisation_id",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "SourceResource"
            },
            "SshKeyApiResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "type": {},
                    "fingerprint": {
                        "type": "string"
                    },
                    "public_key": {
                        "type": "string"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "last_used_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "type",
                    "fingerprint",
                    "public_key",
                    "created_at",
                    "last_used_at"
                ],
                "title": "SshKeyApiResource"
            },
            "VMDataHistoryResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "name": {
                        "type": "string"
                    },
                    "total_storage_tib": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "used_storage_tib": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "vcpus": {
                        "type": "integer"
                    },
                    "memory_size_gib": {
                        "type": "integer"
                    },
                    "protection_type": {
                        "type": "boolean"
                    },
                    "power_state": {
                        "type": "boolean"
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    }
                },
                "required": [
                    "id",
                    "name",
                    "total_storage_tib",
                    "used_storage_tib",
                    "vcpus",
                    "memory_size_gib",
                    "protection_type",
                    "power_state",
                    "created_at"
                ],
                "title": "VMDataHistoryResource"
            },
            "VMDataResource": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "integer"
                    },
                    "source_id": {
                        "type": "integer"
                    },
                    "source_data_type_id": {
                        "type": "integer"
                    },
                    "batch_id": {
                        "type": "integer"
                    },
                    "extId": {
                        "type": "string"
                    },
                    "name": {
                        "type": "string"
                    },
                    "organisation_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "total_storage_tib": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "used_storage_tib": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "used_archive_tib": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "vcpus": {
                        "type": "integer"
                    },
                    "memory_size_gib": {
                        "type": "integer"
                    },
                    "protection_type": {
                        "type": "boolean"
                    },
                    "power_state": {
                        "type": "boolean"
                    },
                    "classification_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "backup": {
                        "type": "boolean"
                    },
                    "guest_os_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "guest_os_license_id": {
                        "type": [
                            "integer",
                            "null"
                        ]
                    },
                    "created_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "updated_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "deleted_at": {
                        "type": [
                            "string",
                            "null"
                        ]
                    },
                    "source": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "source_data_type": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    },
                    "organisation": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": "string"
                            },
                            "organisation_id": {
                                "type": "string"
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "organisation_id"
                        ]
                    },
                    "classification": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "description": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "description"
                        ]
                    },
                    "guest_os": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            },
                            "family": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name",
                            "family"
                        ]
                    },
                    "guest_os_license": {
                        "type": [
                            "object",
                            "null"
                        ],
                        "properties": {
                            "id": {
                                "type": "integer"
                            },
                            "name": {
                                "type": [
                                    "string",
                                    "null"
                                ]
                            }
                        },
                        "required": [
                            "id",
                            "name"
                        ]
                    }
                },
                "required": [
                    "id",
                    "source_id",
                    "source_data_type_id",
                    "batch_id",
                    "extId",
                    "name",
                    "organisation_id",
                    "total_storage_tib",
                    "used_storage_tib",
                    "used_archive_tib",
                    "vcpus",
                    "memory_size_gib",
                    "protection_type",
                    "power_state",
                    "classification_id",
                    "backup",
                    "guest_os_id",
                    "guest_os_license_id",
                    "created_at",
                    "updated_at",
                    "deleted_at"
                ],
                "title": "VMDataResource"
            }
        }
    }
}