{"openapi":"3.1.0","info":{"title":"quicksrv API","description":"The quicksrv API lets you create and manage VPS instances programmatically.\n\n**Authentication.** Generate an API key in your panel under\n*Account → API keys*, then send it as a Bearer token:\n\n```\nAuthorization: Bearer qsk_live_xxxxxxxxxxxxxxxxxxxxxxxx\n```\n\nKeys are scoped (`vps:read`, `vps:write`, `vps:create`); `create` implies\n`write` implies `read`.\n\n**Billing.** Creating an instance charges your quicksrv wallet, exactly like\nordering in the panel. If your balance is too low the API responds with\n`402 Payment Required`.","version":"1.0.0"},"servers":[{"url":"/api/v1"},{"url":"https://api.prod.quicksrv.io/api/v1","description":"Production"}],"paths":{"/":{"get":{"tags":["Meta"],"summary":"API root","operationId":"root__get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/whoami":{"get":{"tags":["Meta"],"summary":"Inspect the current API key","description":"Return the identity and scopes associated with the presented API key.","operationId":"whoami_whoami_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/services":{"get":{"tags":["Catalogue"],"summary":"List purchasable VPS plans","description":"List active VPS/dedicated plans you can deploy via ``POST /instances``.\n\nEach plan includes a structured ``specs`` object (vcpu, ram, storage,\ntraffic) so you can size your deployment without scraping the description.","operationId":"list_services_services_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"items":{"$ref":"#/components/schemas/PublicServiceOut"},"type":"array","title":"Response List Services Services Get"}}}}}}},"/services/{service_id}/os-options":{"get":{"tags":["Catalogue"],"summary":"List installable OS options for a plan","description":"Return the OS images you can install on this plan.\n\nUse the returned ``slug`` values for the ``os`` field of ``POST /instances``\nand ``POST /instances/{id}/reinstall``.","operationId":"service_os_options_services__service_id__os_options_get","parameters":[{"name":"service_id","in":"path","required":true,"schema":{"type":"integer","title":"Service Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutConfigOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances":{"get":{"tags":["Instances"],"summary":"List your instances","operationId":"list_instances_instances_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ActiveServiceOut"},"title":"Response List Instances Instances Get"}}}}}},"post":{"tags":["Instances"],"summary":"Create (deploy) a new VPS","description":"Order and provision a new VPS, charging your wallet.\n\nPass ``?dry_run=true`` to validate the request and preview the wallet\ncharge **without** creating, charging, or provisioning anything — useful for\ntesting an integration. A dry run returns a ``200`` preview rather than a\n``201``.\n\nFor real creates, send a unique ``Idempotency-Key`` header to make retries\nsafe — a repeated request with the same key returns the original instance\ninstead of creating (and charging for) another one. Responds ``402`` if the\nwallet balance is insufficient and ``404`` if the plan does not exist.","operationId":"create_instance_instances_post","parameters":[{"name":"dry_run","in":"query","required":false,"schema":{"type":"boolean","default":false,"title":"Dry Run"}},{"name":"Idempotency-Key","in":"header","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Idempotency-Key"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateInstanceRequest"}}}},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveServiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}":{"get":{"tags":["Instances"],"summary":"Get one instance","operationId":"get_instance_instances__instance_id__get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ActiveServiceOut"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/status":{"get":{"tags":["Instances"],"summary":"Live status and metrics","operationId":"instance_status_instances__instance_id__status_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/metrics":{"get":{"tags":["Instances"],"summary":"Historical usage samples","operationId":"instance_metrics_instances__instance_id__metrics_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"range","in":"query","required":false,"schema":{"type":"string","default":"1h","title":"Range"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/tasks":{"get":{"tags":["Instances"],"summary":"Activity feed (operations + audit log)","operationId":"instance_tasks_instances__instance_id__tasks_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":20,"title":"Limit"}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","default":0,"title":"Offset"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/available-plans":{"get":{"tags":["Instances"],"summary":"Plans available for resize","operationId":"available_plans_instances__instance_id__available_plans_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/start":{"post":{"tags":["Instances"],"summary":"Power on","operationId":"start_instance_instances__instance_id__start_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/stop":{"post":{"tags":["Instances"],"summary":"Power off","operationId":"stop_instance_instances__instance_id__stop_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/restart":{"post":{"tags":["Instances"],"summary":"Reboot","operationId":"restart_instance_instances__instance_id__restart_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/reinstall":{"post":{"tags":["Instances"],"summary":"Reinstall the OS","operationId":"reinstall_instance_instances__instance_id__reinstall_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReinstallRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/reset-password":{"post":{"tags":["Instances"],"summary":"Reset root password","operationId":"reset_password_instance_instances__instance_id__reset_password_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/hostname":{"patch":{"tags":["Instances"],"summary":"Change hostname","operationId":"rename_instance_instances__instance_id__hostname_patch","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HostnameRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/rdns":{"post":{"tags":["Instances"],"summary":"Set reverse DNS (PTR)","operationId":"set_rdns_instances__instance_id__rdns_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RdnsRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/resize":{"post":{"tags":["Instances"],"summary":"Upgrade/downgrade plan","operationId":"resize_instance_instances__instance_id__resize_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResizeRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/snapshots":{"get":{"tags":["Snapshots"],"summary":"List snapshots","operationId":"list_snapshots_instances__instance_id__snapshots_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"post":{"tags":["Snapshots"],"summary":"Create a snapshot","operationId":"create_snapshot_instances__instance_id__snapshots_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SnapshotCreateRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/snapshots/{snap_id}/restore":{"post":{"tags":["Snapshots"],"summary":"Restore a snapshot","operationId":"restore_snapshot_instances__instance_id__snapshots__snap_id__restore_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"snap_id","in":"path","required":true,"schema":{"type":"integer","title":"Snap Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/snapshots/{snap_id}":{"delete":{"tags":["Snapshots"],"summary":"Delete a snapshot","operationId":"delete_snapshot_instances__instance_id__snapshots__snap_id__delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"snap_id","in":"path","required":true,"schema":{"type":"integer","title":"Snap Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/backups":{"get":{"tags":["Backups"],"summary":"List backups","operationId":"list_backups_instances__instance_id__backups_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/backups/{backup_id}/restore":{"post":{"tags":["Backups"],"summary":"Restore a backup","operationId":"restore_backup_instances__instance_id__backups__backup_id__restore_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}},{"name":"backup_id","in":"path","required":true,"schema":{"type":"integer","title":"Backup Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/isos":{"get":{"tags":["Boot media"],"summary":"List available ISOs","operationId":"list_isos_instances__instance_id__isos_get","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/iso":{"post":{"tags":["Boot media"],"summary":"Mount an ISO","operationId":"mount_iso_instances__instance_id__iso_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IsoMountRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Boot media"],"summary":"Unmount the ISO","operationId":"unmount_iso_instances__instance_id__iso_delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/instances/{instance_id}/rescue":{"post":{"tags":["Rescue"],"summary":"Enter rescue mode","operationId":"enter_rescue_instances__instance_id__rescue_post","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"tags":["Rescue"],"summary":"Exit rescue mode","operationId":"exit_rescue_instances__instance_id__rescue_delete","parameters":[{"name":"instance_id","in":"path","required":true,"schema":{"type":"integer","title":"Instance Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"ActiveServiceOut":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"order_id":{"type":"integer","title":"Order Id"},"status":{"type":"string","title":"Status"},"suspended_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Suspended Reason"},"provider_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Id"},"ipv4":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ipv4"},"provider_data":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Provider Data"},"auto_renew":{"type":"boolean","title":"Auto Renew","default":true},"expires_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Expires At"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"order":{"$ref":"#/components/schemas/OrderOut"}},"type":"object","required":["id","user_id","order_id","status","expires_at","created_at","order"],"title":"ActiveServiceOut"},"CheckoutConfigOut":{"properties":{"location_label":{"type":"string","title":"Location Label","default":""},"os_options":{"items":{"$ref":"#/components/schemas/OsOptionOut"},"type":"array","title":"Os Options","default":[]}},"type":"object","title":"CheckoutConfigOut","description":"Safe public subset of provider_config — no credentials."},"CreateInstanceRequest":{"properties":{"service_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Service Id","description":"ID of the VPS plan to deploy. See GET /services."},"hostname":{"anyOf":[{"type":"string","maxLength":253,"minLength":1},{"type":"null"}],"title":"Hostname","description":"Desired hostname for the server."},"os":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Os","description":"OS slug to install (e.g. 'ubuntu-24.04')."},"ssh_pubkey":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Ssh Pubkey","description":"Public SSH key to inject (Linux only)."},"root_password":{"anyOf":[{"type":"string","maxLength":20,"minLength":8},{"type":"null"}],"title":"Root Password","description":"Initial root/Administrator password (8-20 chars). Auto-generated if omitted."},"coupon_code":{"anyOf":[{"type":"string","maxLength":64,"minLength":1},{"type":"null"}],"title":"Coupon Code","description":"Optional discount coupon applied at checkout."}},"additionalProperties":false,"type":"object","required":["service_id"],"title":"CreateInstanceRequest","description":"Body for ``POST /instances`` — create and provision a new VPS."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HostnameRequest":{"properties":{"hostname":{"type":"string","maxLength":253,"minLength":1,"title":"Hostname"}},"additionalProperties":false,"type":"object","required":["hostname"],"title":"HostnameRequest"},"IsoMountRequest":{"properties":{"iso_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Iso Id"}},"additionalProperties":false,"type":"object","required":["iso_id"],"title":"IsoMountRequest"},"OrderOut":{"properties":{"id":{"type":"integer","title":"Id"},"user_id":{"type":"integer","title":"User Id"},"service_id":{"type":"integer","title":"Service Id"},"status":{"type":"string","title":"Status"},"config":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Config"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"paid_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Paid At"},"service":{"$ref":"#/components/schemas/ServiceOut"}},"type":"object","required":["id","user_id","service_id","status","created_at","paid_at","service"],"title":"OrderOut"},"OsOptionOut":{"properties":{"slug":{"type":"string","title":"Slug"},"label":{"type":"string","title":"Label"},"version":{"type":"string","title":"Version"},"os_id":{"type":"integer","title":"Os Id"},"icon":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Icon"}},"type":"object","required":["slug","label","version","os_id"],"title":"OsOptionOut"},"PricingOut":{"properties":{"gross":{"type":"number","title":"Gross"},"net":{"type":"number","title":"Net"},"vat_rate":{"type":"number","title":"Vat Rate"},"vat_amount":{"type":"number","title":"Vat Amount"},"treatment":{"type":"string","title":"Treatment"},"charge_amount":{"type":"number","title":"Charge Amount"},"display_amount":{"type":"number","title":"Display Amount"}},"type":"object","required":["gross","net","vat_rate","vat_amount","treatment","charge_amount","display_amount"],"title":"PricingOut","description":"Per-customer pricing breakdown for one service.\n\nComputed on the server from `services.price` (gross) and the current\nuser's VAT treatment.  See `api/pricing.py::compute_pricing`."},"PublicServiceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"number","title":"Price"},"billing_cycle":{"type":"string","title":"Billing Cycle"},"category":{"type":"string","title":"Category"},"specs":{"anyOf":[{"$ref":"#/components/schemas/PublicServiceSpecs"},{"type":"null"}],"description":"Hardware specification of the plan (vcpu, ram, storage, traffic)."}},"type":"object","required":["id","name","slug","price","billing_cycle","category"],"title":"PublicServiceOut","description":"A purchasable plan, trimmed for the public catalogue."},"PublicServiceSpecs":{"properties":{"vcpu":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vcpu","description":"Number of virtual CPU cores.","examples":[4]},"ram":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Ram","description":"Memory, with unit.","examples":["8 GB"]},"storage":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Storage","description":"Disk size and type.","examples":["150 GB NVMe"]},"traffic":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Traffic","description":"Monthly data-transfer allowance.","examples":["Fair use"]}},"additionalProperties":true,"type":"object","title":"PublicServiceSpecs","description":"Hardware specification of a plan.\n\n``vcpu`` is an integer; ``ram``, ``storage`` and ``traffic`` are\nhuman-readable strings (e.g. ``\"8 GB\"``, ``\"150 GB NVMe\"``, ``\"Fair use\"``)\nbecause they carry their own units. ``traffic`` describes the monthly data\ntransfer allowance — it is not the DDoS-mitigation figure quoted in\nmarketing. Any field may be ``null`` if the plan does not declare it."},"RdnsRequest":{"properties":{"ip":{"type":"string","maxLength":45,"minLength":3,"title":"Ip"},"ptr":{"type":"string","maxLength":253,"minLength":1,"title":"Ptr"}},"additionalProperties":false,"type":"object","required":["ip","ptr"],"title":"RdnsRequest"},"ReinstallRequest":{"properties":{"os":{"type":"string","maxLength":64,"minLength":1,"title":"Os"},"os_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0.0},{"type":"null"}],"title":"Os Id"},"password":{"anyOf":[{"type":"string","maxLength":128,"minLength":8},{"type":"null"}],"title":"Password"},"ssh_pubkey":{"anyOf":[{"type":"string","maxLength":4096,"minLength":1},{"type":"null"}],"title":"Ssh Pubkey"}},"additionalProperties":false,"type":"object","required":["os"],"title":"ReinstallRequest"},"ResizeRequest":{"properties":{"service_id":{"type":"integer","exclusiveMinimum":0.0,"title":"Service Id"}},"additionalProperties":false,"type":"object","required":["service_id"],"title":"ResizeRequest","description":"Upgrade or downgrade to another *published* plan in the same data\ncentre. We translate `service_id` to the provider's plan id server-side\nso customers never see SolusVM internals."},"ServiceOut":{"properties":{"id":{"type":"integer","title":"Id"},"name":{"type":"string","title":"Name"},"slug":{"type":"string","title":"Slug"},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Description"},"price":{"type":"number","title":"Price"},"billing_cycle":{"type":"string","title":"Billing Cycle"},"category":{"type":"string","title":"Category"},"specs":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Specs"},"is_active":{"type":"boolean","title":"Is Active"},"out_of_stock":{"type":"boolean","title":"Out Of Stock"},"auto_deploy":{"type":"boolean","title":"Auto Deploy"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"pricing":{"anyOf":[{"$ref":"#/components/schemas/PricingOut"},{"type":"null"}]}},"type":"object","required":["id","name","slug","description","price","billing_cycle","category","specs","is_active","out_of_stock","auto_deploy","created_at"],"title":"ServiceOut"},"SnapshotCreateRequest":{"properties":{"name":{"type":"string","maxLength":64,"minLength":1,"title":"Name"}},"additionalProperties":false,"type":"object","required":["name"],"title":"SnapshotCreateRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"}}}}