{
  "openapi" : "3.1.0",
  "info" : {
    "description" : "Customer API v1 of dataflair.\n\nQuickstart\n\n1. Create an API key in the customer panel (Account, API keys). It is shown once and starts with ihk_live_.\n2. Send it with every request: Authorization: Bearer ihk_live_...\n3. First call: GET https://api.dataflair.cloud/api/v2/v1/account\n4. Price an order with POST /v1/quotes, then place it with POST /v1/orders and an Idempotency-Key header. Repeating the request with the same key never orders twice. Send expected_total from the quote to be safe against price changes (409 price_changed).\n5. Lists return {data, pagination}. Pass pagination.next_cursor as cursor until has_more is false.\n6. Errors return {error: {code, message, request_id, details, doc_url}}. Branch on code, never on message. All codes are listed under x-error-codes.\n\nMoney is always in cents: Money {amount, currency}; Price {net, gross, tax, tax_rate, tax_mode}.\nAsynchronous operations answer 202 with an Action; poll GET /v1/actions/{id} until status is success or error.\n\nRate limits per class (headers X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset; 429 with Retry-After):\n- read: 600 requests per minute per key, 1200 per account\n- live: 60 requests per minute per key, 120 per account\n- write: 120 requests per minute per key, 240 per account\n- order: 60 requests per minute per key, 120 per account\n\nCompatibility: within v1 only additive changes are made. Clients must ignore unknown fields and tolerate unknown enum values.",
    "title" : "dataflair API",
    "version" : "v1"
  },
  "servers" : [ {
    "url" : "https://api.dataflair.cloud/api/v2",
    "description" : "Production"
  } ],
  "tags" : [ {
    "description" : "Account credit, reseller billing and invoices.",
    "name" : "billing"
  }, {
    "description" : "Place orders paid from account credit or reseller postpaid, and follow them.",
    "name" : "orders"
  }, {
    "description" : "Read the KVM and dedicated servers of the account.",
    "name" : "servers"
  }, {
    "description" : "Stock levels of orderable products.",
    "name" : "availability"
  }, {
    "description" : "API metadata and machine-readable documentation.",
    "name" : "meta"
  }, {
    "description" : "The customer account that owns the API key.",
    "name" : "account"
  }, {
    "description" : "Live availability of domain names.",
    "name" : "domains"
  }, {
    "description" : "Products, OS images, locations and domain extensions that can be ordered.",
    "name" : "catalog"
  }, {
    "description" : "Binding price calculation for an order, without placing it.",
    "name" : "quotes"
  }, {
    "description" : "Metrics, custom ISO images and rescue mode of KVM servers.",
    "name" : "server-tools"
  }, {
    "description" : "Webhook endpoints that receive signed event notifications. Every delivery is a POST with a JSON body {id, type, created_at, data} and the headers Ih-Event-Id, Ih-Event-Type and Ih-Signature: t=<unix seconds>,v1=<hex>. v1 is HMAC-SHA256 with the endpoint secret (the full whsec_ string as UTF-8 key) over the string <t>.<raw request body>. To verify, recompute the HMAC over the unmodified body, compare it in constant time with v1 and reject a t that is more than 5 minutes away from your clock. Delivery is at least once: deduplicate by Ih-Event-Id. A delivery counts as successful on a 2xx answer within 10 seconds; redirects are not followed. Failed deliveries are retried after 1 m, 5 m, 30 m, 2 h, 6 h and 12 h (7 attempts in total). Target URLs must use https on port 443 or a port above 1024 and must resolve to public addresses only; the address is checked again on every delivery.",
    "name" : "webhooks"
  }, {
    "description" : "Power actions, reinstallation, console, reverse DNS, cancellation and the action log of KVM and dedicated servers.",
    "name" : "server-actions"
  } ],
  "paths" : {
    "/v1" : {
      "get" : {
        "description" : "Entry point of API v1 with the link to the OpenAPI document. No API key is required.",
        "operationId" : "getApiRoot",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "docs_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json",
                  "health_url" : "https://api.dataflair.cloud/api/v2/v1/health",
                  "object" : "api_root",
                  "openapi_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json",
                  "version" : "v1"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ApiRoot"
                }
              }
            },
            "description" : "The API root.",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ ],
        "summary" : "Describe the API",
        "tags" : [ "meta" ],
        "x-error-codes" : [ "rate_limited", "internal_error" ],
        "x-required-scope" : "public"
      }
    },
    "/v1/account" : {
      "get" : {
        "description" : "Returns the customer account that owns the presented API key and a summary of the key. Requires a valid key, no particular scope.",
        "operationId" : "getAccount",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "person" : {
                    "description" : "person",
                    "value" : {
                      "object" : "account",
                      "id" : "acc_p_7Kq2mZr9TbX4wNc8LdY3vA",
                      "type" : "person",
                      "display_name" : "Erika Mustermann",
                      "email" : "erika@example.com",
                      "customer_number" : 100245,
                      "country" : "DE",
                      "currency" : "EUR",
                      "reseller" : null,
                      "created_at" : "2025-03-14T09:26:53Z",
                      "api_key" : {
                        "id" : "pak_Q8wR3nT6yU1iO4pA7sD2fG",
                        "name" : "provisioning",
                        "scopes" : [ "servers:read", "orders:write" ],
                        "expires_at" : null
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Account"
                }
              }
            },
            "description" : "The account of the API key.",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the account of the API key",
        "tags" : [ "account" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "authenticated"
      }
    },
    "/v1/actions/{id}" : {
      "get" : {
        "description" : "An action of the account whose server still belongs to the account; otherwise 404.",
        "operationId" : "getAction",
        "parameters" : [ {
          "description" : "Action id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get an action",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/availability" : {
      "get" : {
        "description" : "Stock levels in tiers, never exact capacities. max_orderable is capped at 10 and is not a reservation; larger quantities on request. Always a list, also for one product.",
        "operationId" : "getAvailability",
        "parameters" : [ {
          "description" : "Product ids, comma separated or as repeated parameter, at most 50.",
          "explode" : true,
          "in" : "query",
          "name" : "product_ids",
          "required" : true,
          "schema" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "maxItems" : 50
          }
        }, {
          "description" : "Requested quantity, default 1.",
          "in" : "query",
          "name" : "quantity",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "available" : true,
                    "checked_at" : "2026-11-11T09:30:00Z",
                    "delivery" : "instant",
                    "max_orderable" : 10,
                    "object" : "availability",
                    "product_id" : "pack_p_3b7f20e1a9c6",
                    "quantity_orderable" : true,
                    "quantity_requested" : 1,
                    "stock_level" : "in_stock"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/AvailabilityList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Check product availability",
        "tags" : [ "availability" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "feature_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/billing/balance" : {
      "get" : {
        "description" : "Available account credit in cents. credit_limit and postpaid_exposure are only set for accounts with an active reseller profile, otherwise null.",
        "operationId" : "getBalance",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "available" : {
                    "amount" : 1190,
                    "currency" : "EUR"
                  },
                  "credit_limit" : {
                    "amount" : 1190,
                    "currency" : "EUR"
                  },
                  "object" : "balance",
                  "postpaid_exposure" : {
                    "amount" : 1190,
                    "currency" : "EUR"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Balance"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the account balance",
        "tags" : [ "billing" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "billing:read"
      }
    },
    "/v1/billing/reseller" : {
      "get" : {
        "description" : "Billing mode, discount tier, credit limit and open postpaid exposure. Without an active reseller profile the answer is 403 reseller_profile_required.",
        "operationId" : "getResellerBilling",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "billing_mode" : "prepaid",
                  "credit_limit" : {
                    "amount" : 1190,
                    "currency" : "EUR"
                  },
                  "object" : "reseller_billing",
                  "postpaid_exposure" : {
                    "amount" : 1190,
                    "currency" : "EUR"
                  },
                  "tier_percent" : 19.0
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ResellerBilling"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "reseller_profile_required" : {
                    "summary" : "reseller_profile_required",
                    "value" : {
                      "error" : {
                        "code" : "reseller_profile_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/reseller_profile_required",
                        "message" : "This needs an active reseller profile.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable, reseller_profile_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the reseller billing profile",
        "tags" : [ "billing" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "reseller_profile_required", "rate_limited", "internal_error" ],
        "x-required-scope" : "billing:read"
      }
    },
    "/v1/catalog/locations" : {
      "get" : {
        "description" : "Locations derived from the data centers of the hosts. Empty when no location can be derived.",
        "operationId" : "listLocations",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "country" : "DE",
                    "id" : "fra1",
                    "name" : "web-1",
                    "object" : "location"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/LocationList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List locations",
        "tags" : [ "catalog" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/catalog/os-images" : {
      "get" : {
        "description" : "Operating system images. With product_id only the images offered for that product.",
        "operationId" : "listOsImages",
        "parameters" : [ {
          "description" : "Restrict to the images of this product.",
          "in" : "query",
          "name" : "product_id",
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "default" : true,
                    "id" : "debian-12",
                    "license_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "min_disk_gb" : 2,
                    "name" : "web-1",
                    "object" : "os_image",
                    "type" : "linux"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/OsImageList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List OS images",
        "tags" : [ "catalog" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/catalog/products" : {
      "get" : {
        "description" : "Products released for the API, sorted by id; instant dedicated servers are always listed. Released products that cannot be ordered right now stay listed with orderable false and unavailable_reason inactive, sold_out or not_available; quotes and orders for them answer 422 product_unavailable. Amounts are integer cents; gross is the amount charged. your_price is only set for accounts with an active reseller profile. Supported families: kvm, kvm_configurable, dedicated, dedicated_configurable, gameserver, failover_ip. Dedicated servers carry hardware, configurable dedicated servers a dedicated_configurator whose cheapest choices make up the listed price, game servers a game block with the starting price of the tier.",
        "operationId" : "listProducts",
        "parameters" : [ {
          "description" : "Product family filter: kvm, kvm_configurable, dedicated, dedicated_configurable, gameserver or failover_ip.",
          "in" : "query",
          "name" : "family",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "addons" : [ {
                      "code" : "extra_ipv4",
                      "max" : 2,
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    } ],
                    "billing_periods" : [ {
                      "months" : 1,
                      "period" : "monthly",
                      "price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      },
                      "your_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    } ],
                    "configurable" : {
                      "additional_disk_gb" : {
                        "max" : 2,
                        "min" : 2,
                        "step" : 2,
                        "unit" : "core",
                        "unit_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      },
                      "cores" : {
                        "max" : 2,
                        "min" : 2,
                        "step" : 2,
                        "unit" : "core",
                        "unit_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      },
                      "disk_gb" : {
                        "max" : 2,
                        "min" : 2,
                        "step" : 2,
                        "unit" : "core",
                        "unit_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      },
                      "host_capped" : true,
                      "memory_mb" : {
                        "max" : 2,
                        "min" : 2,
                        "step" : 2,
                        "unit" : "core",
                        "unit_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      },
                      "traffic_gb" : {
                        "max" : 2,
                        "min" : 2,
                        "step" : 2,
                        "unit" : "core",
                        "unit_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      }
                    },
                    "dedicated_configurator" : {
                      "crypto_fee" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      },
                      "groups" : [ {
                        "choices" : [ ],
                        "key" : "key-example",
                        "required" : true
                      } ]
                    },
                    "delivery" : "instant",
                    "description" : "description-example",
                    "family" : "kvm",
                    "game" : {
                      "game_name" : "game-name-example",
                      "game_slug" : "game-slug-example",
                      "location_selectable" : true,
                      "variant_keys" : [ "variant-keys-example" ]
                    },
                    "hardware" : {
                      "cpu_model" : "cpu-model-example",
                      "disks" : [ "disks-example" ],
                      "ipv4" : 2,
                      "ipv6" : 2,
                      "location" : "fra1",
                      "memory_description" : "memory-description-example",
                      "processor_family" : "processor-family-example",
                      "traffic_description" : "traffic-description-example",
                      "traffic_gb" : 20000,
                      "uplink" : "uplink-example"
                    },
                    "id" : "pack_p_3b7f20e1a9c6",
                    "list_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "locations" : [ "locations-example" ],
                    "name" : "web-1",
                    "object" : "product",
                    "orderable" : true,
                    "os_image_ids" : [ "debian-12" ],
                    "price_valid_until" : "2026-11-11T09:30:00Z",
                    "setup_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "specs" : {
                      "additional_disk_gb" : 2,
                      "backup_slots" : 2,
                      "bandwidth_mbps" : 1000,
                      "cores" : 4,
                      "disk_gb" : 160,
                      "ipv4" : 2,
                      "ipv6_prefix" : "/64",
                      "memory_mb" : 8192,
                      "traffic_gb" : 20000
                    },
                    "unavailable_reason" : "unavailable-reason-example",
                    "updated_at" : "2026-11-11T09:30:00Z",
                    "your_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ProductList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List orderable products",
        "tags" : [ "catalog" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/catalog/products/{id}" : {
      "get" : {
        "description" : "One product in the same shape as the list. Unreleased or hidden products answer 404.",
        "operationId" : "getProduct",
        "parameters" : [ {
          "description" : "Product id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "addons" : [ {
                    "code" : "extra_ipv4",
                    "max" : 2,
                    "unit_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "billing_periods" : [ {
                    "months" : 1,
                    "period" : "monthly",
                    "price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "your_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "configurable" : {
                    "additional_disk_gb" : {
                      "max" : 2,
                      "min" : 2,
                      "step" : 2,
                      "unit" : "core",
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    },
                    "cores" : {
                      "max" : 2,
                      "min" : 2,
                      "step" : 2,
                      "unit" : "core",
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    },
                    "disk_gb" : {
                      "max" : 2,
                      "min" : 2,
                      "step" : 2,
                      "unit" : "core",
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    },
                    "host_capped" : true,
                    "memory_mb" : {
                      "max" : 2,
                      "min" : 2,
                      "step" : 2,
                      "unit" : "core",
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    },
                    "traffic_gb" : {
                      "max" : 2,
                      "min" : 2,
                      "step" : 2,
                      "unit" : "core",
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    }
                  },
                  "dedicated_configurator" : {
                    "crypto_fee" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "groups" : [ {
                      "choices" : [ {
                        "label" : "label-example",
                        "monthly_price" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        },
                        "setup_fee" : {
                          "gross" : {
                            "amount" : 1190,
                            "currency" : "EUR"
                          },
                          "net" : {
                            "amount" : 1000,
                            "currency" : "EUR"
                          },
                          "tax" : {
                            "amount" : 190,
                            "currency" : "EUR"
                          },
                          "tax_mode" : "unknown",
                          "tax_rate" : 19.0
                        }
                      } ],
                      "key" : "key-example",
                      "required" : true
                    } ]
                  },
                  "delivery" : "instant",
                  "description" : "description-example",
                  "family" : "kvm",
                  "game" : {
                    "game_name" : "game-name-example",
                    "game_slug" : "game-slug-example",
                    "location_selectable" : true,
                    "variant_keys" : [ "variant-keys-example" ]
                  },
                  "hardware" : {
                    "cpu_model" : "cpu-model-example",
                    "disks" : [ "disks-example" ],
                    "ipv4" : 2,
                    "ipv6" : 2,
                    "location" : "fra1",
                    "memory_description" : "memory-description-example",
                    "processor_family" : "processor-family-example",
                    "traffic_description" : "traffic-description-example",
                    "traffic_gb" : 20000,
                    "uplink" : "uplink-example"
                  },
                  "id" : "pack_p_3b7f20e1a9c6",
                  "list_price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "locations" : [ "locations-example" ],
                  "name" : "web-1",
                  "object" : "product",
                  "orderable" : true,
                  "os_image_ids" : [ "debian-12" ],
                  "price_valid_until" : "2026-11-11T09:30:00Z",
                  "setup_price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "specs" : {
                    "additional_disk_gb" : 2,
                    "backup_slots" : 2,
                    "bandwidth_mbps" : 1000,
                    "cores" : 4,
                    "disk_gb" : 160,
                    "ipv4" : 2,
                    "ipv6_prefix" : "/64",
                    "memory_mb" : 8192,
                    "traffic_gb" : 20000
                  },
                  "unavailable_reason" : "unavailable-reason-example",
                  "updated_at" : "2026-11-11T09:30:00Z",
                  "your_price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Product"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get an orderable product",
        "tags" : [ "catalog" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/catalog/tlds" : {
      "get" : {
        "description" : "Domain extensions with register, renew, transfer, restore and registry lock prices.",
        "operationId" : "listTlds",
        "parameters" : [ {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "object" : "tld",
                    "register" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "registry_lock" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "renew" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "restore" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "tld" : "de",
                    "transfer" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/TldList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List domain extensions",
        "tags" : [ "catalog" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/domains/check" : {
      "post" : {
        "description" : "Checks 1 to 50 domain names live at the registrar within 20 seconds in total. A registrar failure or timeout affects only that domain (status unknown, reason timeout). Premium names are not sellable. Unicode names are converted to punycode.",
        "operationId" : "checkDomains",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "domains" : [ "domains-example" ]
              },
              "schema" : {
                "$ref" : "#/components/schemas/DomainCheckRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "available" : true,
                    "domain" : "example.de",
                    "object" : "domain_check",
                    "premium" : true,
                    "price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "reason" : "reason-example",
                    "status" : "available"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/DomainCheckList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "415" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "unsupported_media_type" : {
                    "summary" : "unsupported_media_type",
                    "value" : {
                      "error" : {
                        "code" : "unsupported_media_type",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/unsupported_media_type",
                        "message" : "The body must be application/json.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code unsupported_media_type.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Check domain availability",
        "tags" : [ "domains" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "unsupported_media_type", "validation_failed", "upstream_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/health" : {
      "get" : {
        "description" : "Liveness of API v1. No API key is required.",
        "operationId" : "getHealth",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "ok" : {
                    "description" : "ok",
                    "value" : {
                      "object" : "health",
                      "status" : "ok",
                      "api_version" : "v1"
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Health"
                }
              }
            },
            "description" : "The API is reachable.",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ ],
        "summary" : "Check API health",
        "tags" : [ "meta" ],
        "x-error-codes" : [ "rate_limited", "internal_error" ],
        "x-required-scope" : "public"
      }
    },
    "/v1/invoices" : {
      "get" : {
        "description" : "Issued invoices of the account, newest first. Drafts are never listed.",
        "operationId" : "listInvoices",
        "parameters" : [ {
          "description" : "unpaid, paid or cancelled.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "due_at" : "2026-11-11T09:30:00Z",
                    "id" : "RE-2026-010428",
                    "issued_at" : "2026-11-11T09:30:00Z",
                    "number" : "RE-2026-010428",
                    "object" : "invoice",
                    "order_ids" : [ "order_7f3a2b9c41d8" ],
                    "paid_at" : "2026-11-11T09:30:00Z",
                    "pdf_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json",
                    "status" : "unpaid",
                    "total" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/InvoiceList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List invoices",
        "tags" : [ "billing" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "validation_failed", "rate_limited", "internal_error" ],
        "x-required-scope" : "billing:read"
      }
    },
    "/v1/invoices/{id}" : {
      "get" : {
        "description" : "One issued invoice of the account. An invoice of another account answers 404.",
        "operationId" : "getInvoice",
        "parameters" : [ {
          "description" : "Invoice id. The id of an invoice is its invoice number, also returned as number.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "due_at" : "2026-11-11T09:30:00Z",
                  "id" : "RE-2026-010428",
                  "issued_at" : "2026-11-11T09:30:00Z",
                  "number" : "RE-2026-010428",
                  "object" : "invoice",
                  "order_ids" : [ "order_7f3a2b9c41d8" ],
                  "paid_at" : "2026-11-11T09:30:00Z",
                  "pdf_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json",
                  "status" : "unpaid",
                  "total" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Invoice"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get an invoice",
        "tags" : [ "billing" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "billing:read"
      }
    },
    "/v1/invoices/{id}/pdf" : {
      "get" : {
        "description" : "The invoice as application/pdf. Ownership is checked before the PDF is loaded; an invoice of another account answers 404.",
        "operationId" : "getInvoicePdf",
        "parameters" : [ {
          "description" : "Invoice id. The id of an invoice is its invoice number, also returned as number.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/pdf" : {
                "example" : "string",
                "schema" : {
                  "type" : "string",
                  "format" : "binary"
                }
              }
            },
            "description" : "The invoice PDF",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Download an invoice PDF",
        "tags" : [ "billing" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "upstream_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "billing:read"
      }
    },
    "/v1/openapi.json" : {
      "get" : {
        "description" : "Returns this OpenAPI 3.1 document. No API key is required.",
        "operationId" : "getOpenApiDocument",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : { },
                "schema" : {
                  "type" : "object"
                }
              }
            },
            "description" : "The OpenAPI 3.1 document of API v1.",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ ],
        "summary" : "Get the OpenAPI document",
        "tags" : [ "meta" ],
        "x-error-codes" : [ "rate_limited", "internal_error" ],
        "x-required-scope" : "public"
      }
    },
    "/v1/orders" : {
      "get" : {
        "description" : "Orders of the account, newest first. Filters: status (pending_payment, processing, completed, failed, cancelled), external_reference, label=key=value (repeatable, all must match), created_after (ISO-8601). Cursor paging with limit 1-100.",
        "operationId" : "listOrders",
        "parameters" : [ {
          "description" : "pending_payment, processing, completed, failed or cancelled.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Exact external_reference.",
          "in" : "query",
          "name" : "external_reference",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "key=value, repeatable, all must match.",
          "in" : "query",
          "name" : "label",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "ISO-8601 timestamp.",
          "in" : "query",
          "name" : "created_after",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "completed_at" : "2026-11-11T09:30:00Z",
                    "created_at" : "2026-11-11T09:30:00Z",
                    "delivered_quantity" : 1,
                    "external_reference" : "whmcs-service-8812",
                    "id" : "order_7f3a2b9c41d8",
                    "invoice" : {
                      "id" : "RE-2026-010428",
                      "number" : "RE-2026-010428"
                    },
                    "labels" : {
                      "customer" : "c-1042"
                    },
                    "object" : "order",
                    "paid_at" : "2026-11-11T09:30:00Z",
                    "payment_method" : "account_credit",
                    "product_id" : "pack_p_3b7f20e1a9c6",
                    "quantity" : 1,
                    "recurring" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "server_ids" : [ "pack_c_5d1e9a0b7c24" ],
                    "status" : "pending_payment",
                    "status_reason" : "payment_unconfirmed",
                    "total" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "type" : "kvm_server_product",
                    "updated_at" : "2026-11-11T09:30:00Z"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/OrderList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List orders",
        "tags" : [ "orders" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "validation_failed", "rate_limited", "internal_error" ],
        "x-required-scope" : "orders:read"
      },
      "post" : {
        "description" : "Places an order with the body of a quote plus external_reference, labels and dry_run. The Idempotency-Key header is required: the same key with the same body answers the stored response with Idempotent-Replayed: true, a different body 409 idempotency_conflict, a request still running 409 idempotency_in_progress with Retry-After. external_reference is unique per account. payment_method is account_credit (default) or reseller_postpaid. dry_run=true runs every check and answers 200 order_preview without writing anything. Success answers 202 with the order and a Location header. A refusal after the order was created cancels it at once and frees its external_reference. expected_total.gross (cents) binds the order to a quote: if total_due_now changed, the answer is 409 price_changed with details.expected and details.actual, without order and without charge. If the payment outcome cannot be confirmed, the answer is 202 with status pending_payment and status_reason payment_unconfirmed.",
        "operationId" : "createOrder",
        "parameters" : [ {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "billing_period" : "monthly",
                "expected_total" : {
                  "amount" : 1340,
                  "currency" : "EUR"
                },
                "external_reference" : "whmcs-service-8812",
                "labels" : {
                  "customer" : "c-1042"
                },
                "options" : {
                  "extra_ipv4" : 1,
                  "os_image_id" : "debian-12"
                },
                "payment_method" : "account_credit",
                "product_id" : "pack_p_3b7f20e1a9c6",
                "quantity" : 1
              },
              "schema" : {
                "$ref" : "#/components/schemas/OrderCreateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "errors" : [ { } ],
                  "object" : "order_preview",
                  "quote" : {
                    "availability" : {
                      "available" : true,
                      "checked_at" : "2026-11-11T09:30:00Z",
                      "delivery" : "instant",
                      "max_orderable" : 10,
                      "object" : "availability",
                      "product_id" : "pack_p_3b7f20e1a9c6",
                      "quantity_orderable" : true,
                      "quantity_requested" : 1,
                      "stock_level" : "in_stock"
                    },
                    "billing_period" : "monthly",
                    "delivery" : "instant",
                    "discount" : {
                      "percent" : 19.0,
                      "type" : "reseller_tier"
                    },
                    "family" : "kvm",
                    "lines" : [ {
                      "code" : "code-example",
                      "description" : "description-example",
                      "quantity" : 1,
                      "total" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      },
                      "unit_price" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      }
                    } ],
                    "object" : "quote",
                    "payment" : {
                      "balance_after" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "method" : "account_credit",
                      "sufficient" : true
                    },
                    "product_id" : "pack_p_3b7f20e1a9c6",
                    "quantity" : 1,
                    "recurring" : {
                      "amount" : {
                        "gross" : {
                          "amount" : 1190,
                          "currency" : "EUR"
                        },
                        "net" : {
                          "amount" : 1000,
                          "currency" : "EUR"
                        },
                        "tax" : {
                          "amount" : 190,
                          "currency" : "EUR"
                        },
                        "tax_mode" : "unknown",
                        "tax_rate" : 19.0
                      },
                      "months" : 1,
                      "period" : "monthly"
                    },
                    "total_due_now" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "valid_until" : "2026-11-11T09:30:00Z",
                    "your_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  },
                  "would_succeed" : true
                },
                "schema" : {
                  "$ref" : "#/components/schemas/OrderPreview"
                }
              }
            },
            "description" : "dry_run preview",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "completed_at" : "2026-11-11T09:30:00Z",
                  "created_at" : "2026-11-11T09:30:00Z",
                  "delivered_quantity" : 1,
                  "external_reference" : "whmcs-service-8812",
                  "id" : "order_7f3a2b9c41d8",
                  "invoice" : {
                    "id" : "RE-2026-010428",
                    "number" : "RE-2026-010428"
                  },
                  "labels" : {
                    "customer" : "c-1042"
                  },
                  "object" : "order",
                  "paid_at" : "2026-11-11T09:30:00Z",
                  "payment_method" : "account_credit",
                  "product_id" : "pack_p_3b7f20e1a9c6",
                  "quantity" : 1,
                  "recurring" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "server_ids" : [ "pack_c_5d1e9a0b7c24" ],
                  "status" : "pending_payment",
                  "status_reason" : "payment_unconfirmed",
                  "total" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "type" : "kvm_server_product",
                  "updated_at" : "2026-11-11T09:30:00Z"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            },
            "description" : "Order accepted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "402" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "insufficient_credit" : {
                    "summary" : "insufficient_credit",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_credit",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_credit",
                        "message" : "The account credit does not cover the order.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_credit.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "reseller_profile_required" : {
                    "summary" : "reseller_profile_required",
                    "value" : {
                      "error" : {
                        "code" : "reseller_profile_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/reseller_profile_required",
                        "message" : "This needs an active reseller profile.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable, reseller_profile_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "external_reference_conflict" : {
                    "summary" : "external_reference_conflict",
                    "value" : {
                      "error" : {
                        "code" : "external_reference_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/external_reference_conflict",
                        "message" : "The external_reference is already in use.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "out_of_stock" : {
                    "summary" : "out_of_stock",
                    "value" : {
                      "error" : {
                        "code" : "out_of_stock",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/out_of_stock",
                        "message" : "No unit of this product is free right now.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "price_changed" : {
                    "summary" : "price_changed",
                    "value" : {
                      "error" : {
                        "code" : "price_changed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/price_changed",
                        "message" : "The price differs from expected_total.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code external_reference_conflict, price_changed, out_of_stock, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "415" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "unsupported_media_type" : {
                    "summary" : "unsupported_media_type",
                    "value" : {
                      "error" : {
                        "code" : "unsupported_media_type",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/unsupported_media_type",
                        "message" : "The body must be application/json.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code unsupported_media_type.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "credit_limit_exceeded" : {
                    "summary" : "credit_limit_exceeded",
                    "value" : {
                      "error" : {
                        "code" : "credit_limit_exceeded",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/credit_limit_exceeded",
                        "message" : "The order exceeds the postpaid credit limit.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_option" : {
                    "summary" : "invalid_option",
                    "value" : {
                      "error" : {
                        "code" : "invalid_option",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_option",
                        "message" : "An option is not valid for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "payment_method_unavailable" : {
                    "summary" : "payment_method_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "payment_method_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/payment_method_unavailable",
                        "message" : "The payment method is not available on the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "postpaid_unavailable" : {
                    "summary" : "postpaid_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "postpaid_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/postpaid_unavailable",
                        "message" : "Postpaid billing is not available for this account.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "product_unavailable" : {
                    "summary" : "product_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "product_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/product_unavailable",
                        "message" : "The product cannot be ordered.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "quantity_unavailable" : {
                    "summary" : "quantity_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "quantity_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quantity_unavailable",
                        "message" : "The quantity is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "quota_exceeded" : {
                    "summary" : "quota_exceeded",
                    "value" : {
                      "error" : {
                        "code" : "quota_exceeded",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quota_exceeded",
                        "message" : "The account already holds the maximum allowed for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, product_unavailable, quantity_unavailable, invalid_option, payment_method_unavailable, postpaid_unavailable, credit_limit_exceeded, quota_exceeded.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_locked" : {
                    "summary" : "account_locked",
                    "value" : {
                      "error" : {
                        "code" : "account_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_locked",
                        "message" : "The account is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code account_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Place an order",
        "tags" : [ "orders" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "unsupported_media_type", "validation_failed", "insufficient_credit", "resource_not_found", "external_reference_conflict", "price_changed", "product_unavailable", "quantity_unavailable", "invalid_option", "payment_method_unavailable", "postpaid_unavailable", "credit_limit_exceeded", "reseller_profile_required", "account_locked", "feature_unavailable", "quota_exceeded", "out_of_stock", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-idempotency-key-required" : true,
        "x-required-scope" : "orders:write"
      }
    },
    "/v1/orders/{id}" : {
      "get" : {
        "description" : "One order of the account with its derived status, status_reason, delivered servers, external_reference and labels. An order of another account answers 404.",
        "operationId" : "getOrder",
        "parameters" : [ {
          "description" : "Order id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "completed_at" : "2026-11-11T09:30:00Z",
                  "created_at" : "2026-11-11T09:30:00Z",
                  "delivered_quantity" : 1,
                  "external_reference" : "whmcs-service-8812",
                  "id" : "order_7f3a2b9c41d8",
                  "invoice" : {
                    "id" : "RE-2026-010428",
                    "number" : "RE-2026-010428"
                  },
                  "labels" : {
                    "customer" : "c-1042"
                  },
                  "object" : "order",
                  "paid_at" : "2026-11-11T09:30:00Z",
                  "payment_method" : "account_credit",
                  "product_id" : "pack_p_3b7f20e1a9c6",
                  "quantity" : 1,
                  "recurring" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "server_ids" : [ "pack_c_5d1e9a0b7c24" ],
                  "status" : "pending_payment",
                  "status_reason" : "payment_unconfirmed",
                  "total" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "type" : "kvm_server_product",
                  "updated_at" : "2026-11-11T09:30:00Z"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Order"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get an order",
        "tags" : [ "orders" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "orders:read"
      }
    },
    "/v1/quotes" : {
      "post" : {
        "description" : "Prices an order through the same calculation as POST /v1/orders and stores nothing. total_due_now is exactly the amount the payment will charge, recurring the amount of every renewal. billing_period is monthly, quarterly, semi_annually or yearly; domains are yearly. payment_method is account_credit (default) or reseller_postpaid. Hourly billed products answer 422 product_unavailable with reason hourly_not_supported.",
        "operationId" : "createQuote",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "billing_period" : "monthly",
                "options" : {
                  "extra_ipv4" : 1,
                  "os_image_id" : "debian-12"
                },
                "payment_method" : "account_credit",
                "product_id" : "pack_p_3b7f20e1a9c6",
                "quantity" : 1
              },
              "schema" : {
                "$ref" : "#/components/schemas/QuoteRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "availability" : {
                    "available" : true,
                    "checked_at" : "2026-11-11T09:30:00Z",
                    "delivery" : "instant",
                    "max_orderable" : 10,
                    "object" : "availability",
                    "product_id" : "pack_p_3b7f20e1a9c6",
                    "quantity_orderable" : true,
                    "quantity_requested" : 1,
                    "stock_level" : "in_stock"
                  },
                  "billing_period" : "monthly",
                  "delivery" : "instant",
                  "discount" : {
                    "percent" : 19.0,
                    "type" : "reseller_tier"
                  },
                  "family" : "kvm",
                  "lines" : [ {
                    "code" : "code-example",
                    "description" : "description-example",
                    "quantity" : 1,
                    "total" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "unit_price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    }
                  } ],
                  "object" : "quote",
                  "payment" : {
                    "balance_after" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "method" : "account_credit",
                    "sufficient" : true
                  },
                  "product_id" : "pack_p_3b7f20e1a9c6",
                  "quantity" : 1,
                  "recurring" : {
                    "amount" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "months" : 1,
                    "period" : "monthly"
                  },
                  "total_due_now" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "valid_until" : "2026-11-11T09:30:00Z",
                  "your_price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Quote"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "reseller_profile_required" : {
                    "summary" : "reseller_profile_required",
                    "value" : {
                      "error" : {
                        "code" : "reseller_profile_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/reseller_profile_required",
                        "message" : "This needs an active reseller profile.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable, reseller_profile_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "out_of_stock" : {
                    "summary" : "out_of_stock",
                    "value" : {
                      "error" : {
                        "code" : "out_of_stock",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/out_of_stock",
                        "message" : "No unit of this product is free right now.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code out_of_stock.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "415" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "unsupported_media_type" : {
                    "summary" : "unsupported_media_type",
                    "value" : {
                      "error" : {
                        "code" : "unsupported_media_type",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/unsupported_media_type",
                        "message" : "The body must be application/json.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code unsupported_media_type.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_option" : {
                    "summary" : "invalid_option",
                    "value" : {
                      "error" : {
                        "code" : "invalid_option",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_option",
                        "message" : "An option is not valid for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "payment_method_unavailable" : {
                    "summary" : "payment_method_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "payment_method_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/payment_method_unavailable",
                        "message" : "The payment method is not available on the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "postpaid_unavailable" : {
                    "summary" : "postpaid_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "postpaid_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/postpaid_unavailable",
                        "message" : "Postpaid billing is not available for this account.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "product_unavailable" : {
                    "summary" : "product_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "product_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/product_unavailable",
                        "message" : "The product cannot be ordered.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "quantity_unavailable" : {
                    "summary" : "quantity_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "quantity_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quantity_unavailable",
                        "message" : "The quantity is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "quota_exceeded" : {
                    "summary" : "quota_exceeded",
                    "value" : {
                      "error" : {
                        "code" : "quota_exceeded",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quota_exceeded",
                        "message" : "The account already holds the maximum allowed for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, product_unavailable, quantity_unavailable, invalid_option, payment_method_unavailable, postpaid_unavailable, quota_exceeded.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Calculate a quote",
        "tags" : [ "quotes" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "unsupported_media_type", "validation_failed", "resource_not_found", "product_unavailable", "quantity_unavailable", "invalid_option", "payment_method_unavailable", "postpaid_unavailable", "reseller_profile_required", "quota_exceeded", "out_of_stock", "rate_limited", "internal_error" ],
        "x-required-scope" : "catalog:read"
      }
    },
    "/v1/servers" : {
      "get" : {
        "description" : "KVM and dedicated servers owned by the account, newest first. The power status comes from the cached VM state and never calls the hypervisor. Labels and external_reference are inherited from the order that delivered the server.",
        "operationId" : "listServers",
        "parameters" : [ {
          "description" : "kvm or dedicated.",
          "in" : "query",
          "name" : "family",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Power status: running, stopped, paused or unknown.",
          "in" : "query",
          "name" : "status",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Exact external_reference, inherited from the order.",
          "in" : "query",
          "name" : "external_reference",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "key=value, repeatable, all must match.",
          "in" : "query",
          "name" : "label",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "auto_renew" : true,
                    "billing_period" : "monthly",
                    "cancellation" : {
                      "mode" : "end_of_term",
                      "scheduled_at" : "2026-11-11T09:30:00Z"
                    },
                    "created_at" : "2026-11-11T09:30:00Z",
                    "external_reference" : "whmcs-service-8812",
                    "family" : "kvm",
                    "hostname" : "web-1.example.com",
                    "id" : "pack_c_5d1e9a0b7c24",
                    "ipv4" : [ "203.0.113.10" ],
                    "ipv6" : [ "2001:db8::10" ],
                    "ipv6_prefixes" : [ "2001:db8:10::/64" ],
                    "labels" : {
                      "customer" : "c-1042"
                    },
                    "location" : "fra1",
                    "lock" : {
                      "reason" : "maintenance",
                      "since" : "2026-11-11T09:30:00Z"
                    },
                    "name" : "web-1",
                    "next_renewal_at" : "2026-11-11T09:30:00Z",
                    "object" : "server",
                    "order_id" : "order_7f3a2b9c41d8",
                    "os" : "os-example",
                    "price" : {
                      "gross" : {
                        "amount" : 1190,
                        "currency" : "EUR"
                      },
                      "net" : {
                        "amount" : 1000,
                        "currency" : "EUR"
                      },
                      "tax" : {
                        "amount" : 190,
                        "currency" : "EUR"
                      },
                      "tax_mode" : "unknown",
                      "tax_rate" : 19.0
                    },
                    "product_id" : "pack_p_3b7f20e1a9c6",
                    "product_status" : "open",
                    "specs" : {
                      "cores" : 4,
                      "cpu_model" : "cpu-model-example",
                      "disk_gb" : 160,
                      "memory_description" : "memory-description-example",
                      "memory_mb" : 8192,
                      "traffic_gb" : 20000
                    },
                    "status" : "running",
                    "suspended" : false,
                    "updated_at" : "2026-11-11T09:30:00Z"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List servers",
        "tags" : [ "servers" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "validation_failed", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/servers/{id}" : {
      "get" : {
        "description" : "One server of the account with specs, addresses, renewal, price, labels and the service lock if one applies. A server of another account answers 404.",
        "operationId" : "getServer",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "auto_renew" : true,
                  "billing_period" : "monthly",
                  "cancellation" : {
                    "mode" : "end_of_term",
                    "scheduled_at" : "2026-11-11T09:30:00Z"
                  },
                  "created_at" : "2026-11-11T09:30:00Z",
                  "external_reference" : "whmcs-service-8812",
                  "family" : "kvm",
                  "hostname" : "web-1.example.com",
                  "id" : "pack_c_5d1e9a0b7c24",
                  "ipv4" : [ "203.0.113.10" ],
                  "ipv6" : [ "2001:db8::10" ],
                  "ipv6_prefixes" : [ "2001:db8:10::/64" ],
                  "labels" : {
                    "customer" : "c-1042"
                  },
                  "location" : "fra1",
                  "lock" : {
                    "reason" : "maintenance",
                    "since" : "2026-11-11T09:30:00Z"
                  },
                  "name" : "web-1",
                  "next_renewal_at" : "2026-11-11T09:30:00Z",
                  "object" : "server",
                  "order_id" : "order_7f3a2b9c41d8",
                  "os" : "os-example",
                  "price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "product_id" : "pack_p_3b7f20e1a9c6",
                  "product_status" : "open",
                  "specs" : {
                    "cores" : 4,
                    "cpu_model" : "cpu-model-example",
                    "disk_gb" : 160,
                    "memory_description" : "memory-description-example",
                    "memory_mb" : 8192,
                    "traffic_gb" : 20000
                  },
                  "status" : "running",
                  "suspended" : false,
                  "updated_at" : "2026-11-11T09:30:00Z"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Server"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get a server",
        "tags" : [ "servers" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      },
      "patch" : {
        "description" : "Stores labels and external_reference on the server itself; from then on they replace the values inherited from the order. labels replaces the whole map, null clears it. The server record itself is not changed. A reference used by another server of the account answers 409 external_reference_conflict, a dedicated server 422 invalid_state.",
        "operationId" : "updateServer",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "external_reference" : "whmcs-service-8812",
                "labels" : {
                  "customer" : "c-1042"
                }
              },
              "schema" : {
                "$ref" : "#/components/schemas/ServerUpdateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "auto_renew" : true,
                  "billing_period" : "monthly",
                  "cancellation" : {
                    "mode" : "end_of_term",
                    "scheduled_at" : "2026-11-11T09:30:00Z"
                  },
                  "created_at" : "2026-11-11T09:30:00Z",
                  "external_reference" : "whmcs-service-8812",
                  "family" : "kvm",
                  "hostname" : "web-1.example.com",
                  "id" : "pack_c_5d1e9a0b7c24",
                  "ipv4" : [ "203.0.113.10" ],
                  "ipv6" : [ "2001:db8::10" ],
                  "ipv6_prefixes" : [ "2001:db8:10::/64" ],
                  "labels" : {
                    "customer" : "c-1042"
                  },
                  "location" : "fra1",
                  "lock" : {
                    "reason" : "maintenance",
                    "since" : "2026-11-11T09:30:00Z"
                  },
                  "name" : "web-1",
                  "next_renewal_at" : "2026-11-11T09:30:00Z",
                  "object" : "server",
                  "order_id" : "order_7f3a2b9c41d8",
                  "os" : "os-example",
                  "price" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "product_id" : "pack_p_3b7f20e1a9c6",
                  "product_status" : "open",
                  "specs" : {
                    "cores" : 4,
                    "cpu_model" : "cpu-model-example",
                    "disk_gb" : 160,
                    "memory_description" : "memory-description-example",
                    "memory_mb" : 8192,
                    "traffic_gb" : 20000
                  },
                  "status" : "running",
                  "suspended" : false,
                  "updated_at" : "2026-11-11T09:30:00Z"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Server"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "external_reference_conflict" : {
                    "summary" : "external_reference_conflict",
                    "value" : {
                      "error" : {
                        "code" : "external_reference_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/external_reference_conflict",
                        "message" : "The external_reference is already in use.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code external_reference_conflict.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "415" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "unsupported_media_type" : {
                    "summary" : "unsupported_media_type",
                    "value" : {
                      "error" : {
                        "code" : "unsupported_media_type",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/unsupported_media_type",
                        "message" : "The body must be application/json.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code unsupported_media_type.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Change labels and external_reference of a server",
        "tags" : [ "servers" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "unsupported_media_type", "validation_failed", "resource_not_found", "external_reference_conflict", "invalid_state", "feature_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/actions" : {
      "get" : {
        "description" : "Actions started through this API on the server, newest first. Actions started in the customer panel are not listed.",
        "operationId" : "listServerActions",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "error" : {
                      "code" : "code-example",
                      "message" : "message-example"
                    },
                    "finished_at" : "2026-11-11T09:30:00Z",
                    "id" : "act_2e8d4f61a0b9",
                    "object" : "action",
                    "progress" : 100,
                    "resource" : {
                      "id" : "id-example",
                      "type" : "server"
                    },
                    "started_at" : "2026-11-11T09:30:00Z",
                    "status" : "running",
                    "type" : "start"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ActionList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List the actions of a server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/servers/{id}/actions/power" : {
      "post" : {
        "description" : "Submits the power change to the hypervisor and answers 202 with the action. The action stays running until the hypervisor task has ended and then turns into success or error. A change the hypervisor does not accept answers 502 upstream_unavailable. A suspended or locked server answers 423 resource_locked, a running migration 409 action_in_progress, a missing or unknown type 422 validation_failed. On a dedicated server the change goes to the provider and the action is finished at once (stop is a hard power off, reboot and reset both restart); a provider without power control answers 503 feature_unavailable.",
        "operationId" : "runServerPowerAction",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "type" : "reboot"
              },
              "schema" : {
                "$ref" : "#/components/schemas/PowerActionRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Action accepted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Run a power action",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/actions/reinstall" : {
      "post" : {
        "description" : "Wipes the server and installs the image. Answers 202 with a running action. The root password stays unchanged and is not part of the answer. The action ends as success or error (code reinstall_failed) when the installation finishes. An unknown or unfitting image answers 422, a running deployment, reinstallation or migration or a second parallel request 409 action_in_progress, a locked server 423, a start the hypervisor refuses 502 reinstall_failed (details.action_id names the failed action). Idempotency-Key is not replayed for this action. A dedicated server takes an image from /v1/servers/{id}/os-images; its action is finished as soon as the provider accepted the start.",
        "operationId" : "reinstallServer",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "os_image_id" : "debian-12"
              },
              "schema" : {
                "$ref" : "#/components/schemas/ReinstallRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Reinstallation started",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "reinstall_failed" : {
                    "summary" : "reinstall_failed",
                    "value" : {
                      "error" : {
                        "code" : "reinstall_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/reinstall_failed",
                        "message" : "The reinstallation could not be started.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code reinstall_failed, upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Reinstall a server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "reinstall_failed", "upstream_unavailable", "feature_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/backups" : {
      "get" : {
        "description" : "Customer backups of the server with the slot usage. Read from the stored backup list, never from the hypervisor.",
        "operationId" : "listServerBackups",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "created_at" : "2026-11-11T09:30:00Z",
                    "description" : "description-example",
                    "id" : "bk_81f0c3a2d6e5",
                    "object" : "backup",
                    "protected" : true,
                    "size_bytes" : 21474836480,
                    "status" : "creating"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  },
                  "slots" : {
                    "total" : 2,
                    "used" : 2
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/BackupList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List the backups of a server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      },
      "post" : {
        "description" : "Starts a backup and answers 202 with a running action that ends when the backup is finished or failed. A start the hypervisor refuses answers 502 backup_failed. All slots in use answers 422 invalid_state (reason backup_slots_exhausted), a running backup, restore or migration 409 action_in_progress, a suspended or locked server 423.",
        "operationId" : "createServerBackup",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "description" : "before upgrade"
              },
              "schema" : {
                "$ref" : "#/components/schemas/BackupCreateRequest"
              }
            }
          }
        },
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Backup started",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "backup_failed" : {
                    "summary" : "backup_failed",
                    "value" : {
                      "error" : {
                        "code" : "backup_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/backup_failed",
                        "message" : "The backup could not be started.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code backup_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Create a backup",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "backup_failed", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/backups/{backupId}" : {
      "delete" : {
        "description" : "Deletes a backup of this server and answers 200 with the finished action. A backup of another server answers 404, a deletion the hypervisor refuses 502 upstream_unavailable.",
        "operationId" : "deleteServerBackup",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Backup id of this server.",
          "in" : "path",
          "name" : "backupId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Backup deleted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Delete a backup",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/backups/{backupId}/restore" : {
      "post" : {
        "description" : "Restores a finished backup of this server and answers 202 with a running action. A backup of another server answers 404, an unfinished backup 422 invalid_state, a start the hypervisor refuses 502 restore_failed.",
        "operationId" : "restoreServerBackup",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Backup id of this server.",
          "in" : "path",
          "name" : "backupId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Restore started",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "restore_failed" : {
                    "summary" : "restore_failed",
                    "value" : {
                      "error" : {
                        "code" : "restore_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/restore_failed",
                        "message" : "The restore could not be started.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code restore_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Restore a backup",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "restore_failed", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/cancellation" : {
      "delete" : {
        "description" : "Takes back a pending end_of_term cancellation. A cancellation scheduled by support or no pending cancellation answers 422 invalid_state.",
        "operationId" : "revertServerCancellation",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "credit" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "effective_at" : "2026-11-11T09:30:00Z",
                  "mode" : "end_of_term",
                  "object" : "cancellation",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "state" : "scheduled",
                  "termination_pending" : true
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Cancellation"
                }
              }
            },
            "description" : "Cancellation reverted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Revert an end_of_term cancellation",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "resource_locked", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      },
      "post" : {
        "description" : "end_of_term stops the automatic renewal and ends the server at its next renewal date. immediate ends the server now and needs the Idempotency-Key header; the remaining paid time is forfeited, so credit is always zero. A server that is not active or suspended answers 422 invalid_state.",
        "operationId" : "cancelServer",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "mode" : "end_of_term"
              },
              "schema" : {
                "$ref" : "#/components/schemas/CancellationRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "credit" : {
                    "gross" : {
                      "amount" : 1190,
                      "currency" : "EUR"
                    },
                    "net" : {
                      "amount" : 1000,
                      "currency" : "EUR"
                    },
                    "tax" : {
                      "amount" : 190,
                      "currency" : "EUR"
                    },
                    "tax_mode" : "unknown",
                    "tax_rate" : 19.0
                  },
                  "effective_at" : "2026-11-11T09:30:00Z",
                  "mode" : "end_of_term",
                  "object" : "cancellation",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "state" : "scheduled",
                  "termination_pending" : true
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Cancellation"
                }
              }
            },
            "description" : "Cancellation accepted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Cancel a KVM server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/console" : {
      "post" : {
        "description" : "Creates a console session and answers 200 with a URL that opens the browser console and its expiry. The URL is a credential: it is not stored with an action and not logged. A stopped server answers 422 invalid_state. For a dedicated server the URL comes from the provider and expires_at is null.",
        "operationId" : "openServerConsole",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "expires_at" : "2026-11-11T09:30:00Z",
                  "object" : "server_console",
                  "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerConsole"
                }
              }
            },
            "description" : "Console session created",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Open the console of a server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "resource_locked", "upstream_unavailable", "feature_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/isos" : {
      "get" : {
        "description" : "The images of the account, whether each one can be used on this server, and the image mounted on it. available is false with unavailable_reason when images cannot be used here.",
        "operationId" : "parityListServerIsos",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "available" : true,
                  "data" : [ {
                    "created_at" : "2026-11-11T09:30:00Z",
                    "id" : "id-example",
                    "mounted_here" : true,
                    "name" : "web-1",
                    "object" : "server_iso",
                    "size_bytes" : 21474836480,
                    "status" : "pending",
                    "usable_here" : true
                  } ],
                  "mounted_iso_id" : "mounted-iso-id-example",
                  "object" : "server_iso_state",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "unavailable_reason" : "unavailable-reason-example"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerIsoState"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List the custom ISO images for a server",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      },
      "post" : {
        "description" : "Starts the download of a public http or https link to an .iso or .img file and answers 202 with the image in status downloading. Every address the host name resolves to is checked: a link into a private, loopback or link-local network answers 422 validation_failed with reason private_network. Too many images answers 422 quota_exceeded.",
        "operationId" : "parityAddServerIso",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
              },
              "schema" : {
                "$ref" : "#/components/schemas/ServerIsoUpload"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "created_at" : "2026-11-11T09:30:00Z",
                  "id" : "id-example",
                  "mounted_here" : true,
                  "name" : "web-1",
                  "object" : "server_iso",
                  "size_bytes" : 21474836480,
                  "status" : "pending",
                  "usable_here" : true
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerIso"
                }
              }
            },
            "description" : "Download started",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "quota_exceeded" : {
                    "summary" : "quota_exceeded",
                    "value" : {
                      "error" : {
                        "code" : "quota_exceeded",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quota_exceeded",
                        "message" : "The account already holds the maximum allowed for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state, quota_exceeded.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Download a custom ISO image",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "quota_exceeded", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/isos/unmount" : {
      "post" : {
        "description" : "Ejects the mounted image and restores the previous boot order. Nothing mounted answers 422 invalid_state with reason not_mounted.",
        "operationId" : "parityUnmountServerIso",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Image ejected",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Eject the custom ISO image",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/isos/{isoId}/mount" : {
      "post" : {
        "description" : "Mounts a ready image of this account and makes it boot first. The server has to be stopped and started for this to take effect. An image of another account answers 404, an image that is not ready, on another cluster or already mounted 422 invalid_state.",
        "operationId" : "parityMountServerIso",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Image id of this account.",
          "in" : "path",
          "name" : "isoId",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Image mounted",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Mount a custom ISO image",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/metrics" : {
      "get" : {
        "description" : "CPU and memory usage in percent over the chosen period. stale is true when the hypervisor could not be read and the series is empty. An unknown period answers 422 validation_failed, a dedicated server 422 invalid_state.",
        "operationId" : "parityGetServerMetrics",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "hour (default), day or week.",
          "in" : "query",
          "name" : "period",
          "schema" : {
            "type" : "string",
            "enum" : [ "hour", "day", "week" ]
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "object" : "server_metrics",
                  "period" : "period-example",
                  "points" : [ {
                    "cpu_percent" : 19.0,
                    "memory_percent" : 19.0,
                    "timestamp" : 2
                  } ],
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "stale" : true,
                  "step_seconds" : 2
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerMetrics"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the metrics history of a server",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "validation_failed", "resource_not_found", "invalid_state", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/servers/{id}/os-images" : {
      "get" : {
        "description" : "The images the provider offers for reinstalling this dedicated server. A KVM server answers 422 invalid_state and takes its images from /v1/catalog/os-images, a provider without reinstallation 503 feature_unavailable, a provider that does not answer 502 upstream_unavailable.",
        "operationId" : "listServerOsImages",
        "parameters" : [ {
          "description" : "Dedicated server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "id" : "id-example",
                    "name" : "web-1",
                    "object" : "server_os_image"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerOsImageList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List the images of a dedicated server",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "upstream_unavailable", "feature_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/servers/{id}/rdns/{ip}" : {
      "delete" : {
        "description" : "Resets the PTR record to the default and answers 200 with the finished action. Dedicated servers answer 503 feature_unavailable; set a host name instead.",
        "operationId" : "resetServerRdns",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "An address of this server.",
          "in" : "path",
          "name" : "ip",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Reverse DNS reset",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Reset the reverse DNS of an address",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "resource_locked", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      },
      "put" : {
        "description" : "Sets the PTR record and answers 200 with the finished action. An address that does not belong to this server answers 404, a locked server 423, a change the DNS server refuses 502 upstream_unavailable. A dedicated server without provider rDNS answers 503 feature_unavailable.",
        "operationId" : "setServerRdns",
        "parameters" : [ {
          "description" : "Server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "An IPv4 or IPv6 address of this server, or an address inside one of its /64 networks.",
          "in" : "path",
          "name" : "ip",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "ptr" : "web1.example.com"
              },
              "schema" : {
                "$ref" : "#/components/schemas/RdnsRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Reverse DNS set",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Set the reverse DNS of an address",
        "tags" : [ "server-actions" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "invalid_state", "resource_locked", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/rescue" : {
      "delete" : {
        "description" : "Ends rescue mode and boots the installed system again. Rescue mode not active answers 422 invalid_state with reason not_active.",
        "operationId" : "parityStopServerRescue",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Rescue mode ended",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "End rescue mode",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      },
      "get" : {
        "description" : "Whether rescue mode can be used, whether it is active and when it ends automatically.",
        "operationId" : "parityGetServerRescue",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "auto_stop_at" : "2026-11-11T09:30:00Z",
                  "available" : true,
                  "object" : "server_rescue",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "started_at" : "2026-11-11T09:30:00Z",
                  "unavailable_reason" : "unavailable-reason-example",
                  "username" : "username-example"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerRescue"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the rescue mode of a server",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      },
      "post" : {
        "description" : "Boots the server into the rescue system and answers 200 with the finished action. Active rescue mode, a mounted ISO image or an unsupported system answers 422 invalid_state, a running installation 409 action_in_progress, a locked server 423.",
        "operationId" : "parityStartServerRescue",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "$ref" : "#/components/parameters/IdempotencyKey"
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "error" : {
                    "code" : "code-example",
                    "message" : "message-example"
                  },
                  "finished_at" : "2026-11-11T09:30:00Z",
                  "id" : "act_2e8d4f61a0b9",
                  "object" : "action",
                  "progress" : 100,
                  "resource" : {
                    "id" : "id-example",
                    "type" : "server"
                  },
                  "started_at" : "2026-11-11T09:30:00Z",
                  "status" : "running",
                  "type" : "start"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Action"
                }
              }
            },
            "description" : "Rescue mode started",
            "headers" : {
              "Idempotent-Replayed" : {
                "$ref" : "#/components/headers/Idempotent-Replayed"
              },
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "idempotency_key_required" : {
                    "summary" : "idempotency_key_required",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_key_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_key_required",
                        "message" : "This request needs an Idempotency-Key header.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request, idempotency_key_required.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "409" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "action_in_progress" : {
                    "summary" : "action_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "action_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/action_in_progress",
                        "message" : "Another action is running for this server.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_conflict" : {
                    "summary" : "idempotency_conflict",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_conflict",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_conflict",
                        "message" : "The Idempotency-Key was used with a different request.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "idempotency_in_progress" : {
                    "summary" : "idempotency_in_progress",
                    "value" : {
                      "error" : {
                        "code" : "idempotency_in_progress",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/idempotency_in_progress",
                        "message" : "A request with this Idempotency-Key is still running.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code action_in_progress, idempotency_conflict, idempotency_in_progress.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "423" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_locked" : {
                    "summary" : "resource_locked",
                    "value" : {
                      "error" : {
                        "code" : "resource_locked",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_locked",
                        "message" : "The resource is locked.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_locked.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "503" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "feature_unavailable" : {
                    "summary" : "feature_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "feature_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/feature_unavailable",
                        "message" : "This feature is not available.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code feature_unavailable.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Start rescue mode",
        "tags" : [ "server-tools" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "resource_not_found", "invalid_state", "resource_locked", "action_in_progress", "upstream_unavailable", "feature_unavailable", "idempotency_key_required", "idempotency_conflict", "idempotency_in_progress", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:write"
      }
    },
    "/v1/servers/{id}/status" : {
      "get" : {
        "description" : "Live power status and usage from the hypervisor, cached for 10 seconds per server. Rate class LIVE. A server of another account or a dedicated server answers 404.",
        "operationId" : "getServerStatus",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "cpu_percent" : 19.0,
                  "memory_max_bytes" : 2,
                  "memory_used_bytes" : 2,
                  "object" : "server_status",
                  "observed_at" : "2026-11-11T09:30:00Z",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "status" : "running",
                  "uptime_seconds" : 2
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerStatus"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "502" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "upstream_unavailable" : {
                    "summary" : "upstream_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "upstream_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/upstream_unavailable",
                        "message" : "An upstream system did not respond.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code upstream_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the live status of a KVM server",
        "tags" : [ "servers" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "upstream_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/servers/{id}/traffic" : {
      "get" : {
        "description" : "Traffic used in the current cycle, the limit in GB and whether the server is throttled.",
        "operationId" : "getServerTraffic",
        "parameters" : [ {
          "description" : "KVM server id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "cycle" : "2026-11",
                  "object" : "server_traffic",
                  "server_id" : "pack_c_5d1e9a0b7c24",
                  "throttled" : false,
                  "traffic_gb" : 20000,
                  "used_bytes" : 21474836480
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ServerTraffic"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get the traffic of a KVM server",
        "tags" : [ "servers" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "rate_limited", "internal_error" ],
        "x-required-scope" : "servers:read"
      }
    },
    "/v1/webhooks" : {
      "get" : {
        "description" : "All webhook endpoints of the account, at most 10. The secret is never part of the answer.",
        "operationId" : "listWebhooks",
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "active" : true,
                    "created_at" : "2026-11-11T09:30:00Z",
                    "description" : "description-example",
                    "disabled_reason" : "disabled-reason-example",
                    "events" : [ "events-example" ],
                    "id" : "id-example",
                    "secret" : "secret-example",
                    "updated_at" : "2026-11-11T09:30:00Z",
                    "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List webhook endpoints",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      },
      "post" : {
        "description" : "Registers an endpoint and answers 201 with it. The answer carries the signing secret (whsec_...) exactly once; store it, it cannot be read again. A url that is not https, uses another port than 443 or one up to 1024, carries user info, is an IP literal or resolves to a private, loopback, link-local or otherwise non-public address answers 422 validation_failed with details.reason. More than 10 endpoints answer 422 quota_exceeded.",
        "operationId" : "createWebhook",
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "active" : true,
                "description" : "billing sync",
                "events" : [ "invoice.paid" ],
                "url" : "https://example.com/hooks/index-hosting"
              },
              "schema" : {
                "$ref" : "#/components/schemas/WebhookCreateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "201" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "created_at" : "2026-11-11T09:30:00Z",
                  "description" : "description-example",
                  "disabled_reason" : "disabled-reason-example",
                  "events" : [ "events-example" ],
                  "id" : "id-example",
                  "secret" : "secret-example",
                  "updated_at" : "2026-11-11T09:30:00Z",
                  "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Webhook"
                }
              }
            },
            "description" : "Endpoint created",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "quota_exceeded" : {
                    "summary" : "quota_exceeded",
                    "value" : {
                      "error" : {
                        "code" : "quota_exceeded",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/quota_exceeded",
                        "message" : "The account already holds the maximum allowed for this product.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed, quota_exceeded.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Create a webhook endpoint",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "quota_exceeded", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      }
    },
    "/v1/webhooks/{id}" : {
      "delete" : {
        "description" : "Removes the endpoint and answers 200 with the removed endpoint (active false). Pending deliveries are not sent any more.",
        "operationId" : "deleteWebhook",
        "parameters" : [ {
          "description" : "Webhook endpoint id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "created_at" : "2026-11-11T09:30:00Z",
                  "description" : "description-example",
                  "disabled_reason" : "disabled-reason-example",
                  "events" : [ "events-example" ],
                  "id" : "id-example",
                  "secret" : "secret-example",
                  "updated_at" : "2026-11-11T09:30:00Z",
                  "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Webhook"
                }
              }
            },
            "description" : "Endpoint deleted",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Delete a webhook endpoint",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      },
      "get" : {
        "description" : "One endpoint of the account; an endpoint of another account answers 404.",
        "operationId" : "getWebhook",
        "parameters" : [ {
          "description" : "Webhook endpoint id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "created_at" : "2026-11-11T09:30:00Z",
                  "description" : "description-example",
                  "disabled_reason" : "disabled-reason-example",
                  "events" : [ "events-example" ],
                  "id" : "id-example",
                  "secret" : "secret-example",
                  "updated_at" : "2026-11-11T09:30:00Z",
                  "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Webhook"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Get a webhook endpoint",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      },
      "patch" : {
        "description" : "Changes url, events, description or active. Omitted fields stay unchanged. A new url is checked like on creation. The secret stays unchanged.",
        "operationId" : "updateWebhook",
        "parameters" : [ {
          "description" : "Webhook endpoint id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "requestBody" : {
          "content" : {
            "application/json" : {
              "example" : {
                "active" : true,
                "description" : "description-example",
                "events" : [ "events-example" ],
                "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
              },
              "schema" : {
                "$ref" : "#/components/schemas/WebhookUpdateRequest"
              }
            }
          },
          "required" : true
        },
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "active" : true,
                  "created_at" : "2026-11-11T09:30:00Z",
                  "description" : "description-example",
                  "disabled_reason" : "disabled-reason-example",
                  "events" : [ "events-example" ],
                  "id" : "id-example",
                  "secret" : "secret-example",
                  "updated_at" : "2026-11-11T09:30:00Z",
                  "url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/Webhook"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Update a webhook endpoint",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_request", "validation_failed", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      }
    },
    "/v1/webhooks/{id}/deliveries" : {
      "get" : {
        "description" : "Recent deliveries of the endpoint, newest first, kept for 30 days. Response bodies of the receiver are not stored.",
        "operationId" : "listWebhookDeliveries",
        "parameters" : [ {
          "description" : "Webhook endpoint id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Cursor from pagination.next_cursor.",
          "in" : "query",
          "name" : "cursor",
          "schema" : {
            "type" : "string"
          }
        }, {
          "description" : "Page size, 1 to 100, default 25.",
          "in" : "query",
          "name" : "limit",
          "schema" : {
            "type" : "integer"
          }
        } ],
        "responses" : {
          "200" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "data" : [ {
                    "attempts" : 2,
                    "created_at" : "2026-11-11T09:30:00Z",
                    "event_id" : "event-id-example",
                    "event_type" : "event-type-example",
                    "id" : "id-example",
                    "last_attempt_at" : "2026-11-11T09:30:00Z",
                    "last_error" : "last-error-example",
                    "last_http_status" : 2,
                    "next_attempt_at" : "2026-11-11T09:30:00Z",
                    "status" : "pending"
                  } ],
                  "pagination" : {
                    "has_more" : true,
                    "next_cursor" : "eyJjIjoiMjAyNi0xMS0xMVQwOTozMDowMFoiLCJpIjoib3JkZXJfN2YzYTJiOWM0MWQ4In0"
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookDeliveryList"
                }
              }
            },
            "description" : "OK",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "400" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_cursor" : {
                    "summary" : "invalid_cursor",
                    "value" : {
                      "error" : {
                        "code" : "invalid_cursor",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_cursor",
                        "message" : "The cursor is invalid or expired.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_request" : {
                    "summary" : "invalid_request",
                    "value" : {
                      "error" : {
                        "code" : "invalid_request",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_request",
                        "message" : "The request is malformed.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_cursor, invalid_request.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "validation_failed" : {
                    "summary" : "validation_failed",
                    "value" : {
                      "error" : {
                        "code" : "validation_failed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/validation_failed",
                        "message" : "The request is not valid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code validation_failed.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "List the deliveries of an endpoint",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "invalid_cursor", "invalid_request", "validation_failed", "resource_not_found", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      }
    },
    "/v1/webhooks/{id}/test" : {
      "post" : {
        "description" : "Queues a webhook.test event for this endpoint and answers 202 with the event and delivery id. The result shows up in the deliveries list. A disabled endpoint answers 422 invalid_state.",
        "operationId" : "testWebhook",
        "parameters" : [ {
          "description" : "Webhook endpoint id.",
          "in" : "path",
          "name" : "id",
          "required" : true,
          "schema" : {
            "type" : "string"
          }
        } ],
        "responses" : {
          "202" : {
            "content" : {
              "application/json" : {
                "example" : {
                  "delivery_id" : "delivery-id-example",
                  "event_id" : "event-id-example"
                },
                "schema" : {
                  "$ref" : "#/components/schemas/WebhookTestResult"
                }
              }
            },
            "description" : "Test event queued",
            "headers" : {
              "X-RateLimit-Limit" : {
                "$ref" : "#/components/headers/X-RateLimit-Limit"
              },
              "X-RateLimit-Remaining" : {
                "$ref" : "#/components/headers/X-RateLimit-Remaining"
              },
              "X-RateLimit-Reset" : {
                "$ref" : "#/components/headers/X-RateLimit-Reset"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "401" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "authentication_required" : {
                    "summary" : "authentication_required",
                    "value" : {
                      "error" : {
                        "code" : "authentication_required",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/authentication_required",
                        "message" : "An API key is required.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "invalid_api_key" : {
                    "summary" : "invalid_api_key",
                    "value" : {
                      "error" : {
                        "code" : "invalid_api_key",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key",
                        "message" : "The API key is invalid.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "test_mode_unavailable" : {
                    "summary" : "test_mode_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "test_mode_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/test_mode_unavailable",
                        "message" : "Test mode keys are not available yet.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code authentication_required, invalid_api_key, test_mode_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "403" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "account_unavailable" : {
                    "summary" : "account_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "account_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/account_unavailable",
                        "message" : "The account cannot use the API.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "insufficient_scope" : {
                    "summary" : "insufficient_scope",
                    "value" : {
                      "error" : {
                        "code" : "insufficient_scope",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/insufficient_scope",
                        "message" : "The API key lacks the required scope.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_binding_unavailable" : {
                    "summary" : "ip_binding_unavailable",
                    "value" : {
                      "error" : {
                        "code" : "ip_binding_unavailable",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_binding_unavailable",
                        "message" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  },
                  "ip_not_allowed" : {
                    "summary" : "ip_not_allowed",
                    "value" : {
                      "error" : {
                        "code" : "ip_not_allowed",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/ip_not_allowed",
                        "message" : "The client IP is not in the allowlist of the API key.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code insufficient_scope, ip_not_allowed, ip_binding_unavailable, account_unavailable.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "404" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "resource_not_found" : {
                    "summary" : "resource_not_found",
                    "value" : {
                      "error" : {
                        "code" : "resource_not_found",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/resource_not_found",
                        "message" : "Resource not found.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code resource_not_found.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "422" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "invalid_state" : {
                    "summary" : "invalid_state",
                    "value" : {
                      "error" : {
                        "code" : "invalid_state",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_state",
                        "message" : "The resource is not in a state that allows this.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code invalid_state.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "429" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "rate_limited" : {
                    "summary" : "rate_limited",
                    "value" : {
                      "error" : {
                        "code" : "rate_limited",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/rate_limited",
                        "message" : "Too many requests.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code rate_limited.",
            "headers" : {
              "Retry-After" : {
                "$ref" : "#/components/headers/Retry-After"
              },
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "500" : {
            "content" : {
              "application/json" : {
                "examples" : {
                  "internal_error" : {
                    "summary" : "internal_error",
                    "value" : {
                      "error" : {
                        "code" : "internal_error",
                        "details" : { },
                        "doc_url" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/internal_error",
                        "message" : "Internal error.",
                        "request_id" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
                      }
                    }
                  }
                },
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Error with code internal_error.",
            "headers" : {
              "X-Request-Id" : {
                "$ref" : "#/components/headers/X-Request-Id"
              }
            }
          },
          "default" : {
            "content" : {
              "application/json" : {
                "schema" : {
                  "$ref" : "#/components/schemas/ErrorResponse"
                }
              }
            },
            "description" : "Any other error. The body follows the ErrorResponse schema; the documented codes per status are listed in the responses above and in x-error-codes."
          }
        },
        "security" : [ {
          "bearerAuth" : [ ]
        } ],
        "summary" : "Send a test event",
        "tags" : [ "webhooks" ],
        "x-error-codes" : [ "authentication_required", "invalid_api_key", "test_mode_unavailable", "insufficient_scope", "ip_not_allowed", "ip_binding_unavailable", "account_unavailable", "resource_not_found", "invalid_state", "rate_limited", "internal_error" ],
        "x-required-scope" : "webhooks:manage"
      }
    }
  },
  "components" : {
    "headers" : {
      "Idempotent-Replayed" : {
        "description" : "true when the response is the stored answer to an earlier request with the same Idempotency-Key.",
        "schema" : { }
      },
      "Retry-After" : {
        "description" : "Seconds to wait before retrying.",
        "schema" : { }
      },
      "X-RateLimit-Limit" : {
        "description" : "Requests allowed per minute in the rate class of the operation.",
        "schema" : { }
      },
      "X-RateLimit-Remaining" : {
        "description" : "Requests left in the current window.",
        "schema" : { }
      },
      "X-RateLimit-Reset" : {
        "description" : "Unix time in seconds when the window resets.",
        "schema" : { }
      },
      "X-Request-Id" : {
        "description" : "Identifier of the request, also in error.request_id.",
        "schema" : { }
      }
    },
    "parameters" : {
      "IdempotencyKey" : {
        "description" : "1-255 printable ASCII characters. A repeat with the same key and body answers the stored response with Idempotent-Replayed: true; the same key with a different body answers 409 idempotency_conflict. Keys are scoped to the account.",
        "example" : "order-2026-11-11-0001",
        "in" : "header",
        "name" : "Idempotency-Key",
        "schema" : {
          "maxLength" : 255
        }
      }
    },
    "schemas" : {
      "Account" : {
        "type" : "object",
        "properties" : {
          "api_key" : {
            "$ref" : "#/components/schemas/ApiKeySummary"
          },
          "country" : {
            "type" : "string"
          },
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "currency" : {
            "type" : "string"
          },
          "customer_number" : {
            "type" : "integer",
            "format" : "int64"
          },
          "display_name" : {
            "type" : "string"
          },
          "email" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "reseller" : {
            "$ref" : "#/components/schemas/Reseller"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "person", "company" ]
          }
        },
        "required" : [ "api_key", "country", "created_at", "currency", "customer_number", "display_name", "email", "id", "object", "reseller", "type" ]
      },
      "Action" : {
        "type" : "object",
        "properties" : {
          "error" : {
            "$ref" : "#/components/schemas/ActionError"
          },
          "finished_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "id" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "progress" : {
            "type" : "integer",
            "format" : "int32"
          },
          "resource" : {
            "$ref" : "#/components/schemas/ActionResource"
          },
          "started_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "running", "success", "error" ]
          },
          "type" : {
            "type" : "string",
            "enum" : [ "start", "stop", "shutdown", "reboot", "reset", "reinstall", "create_backup", "restore_backup", "delete_backup", "set_rdns", "reset_rdns" ]
          }
        },
        "required" : [ "error", "finished_at", "id", "object", "progress", "resource", "started_at", "status", "type" ]
      },
      "ActionError" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "message" : {
            "type" : "string"
          }
        },
        "required" : [ "code", "message" ]
      },
      "ActionList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Action"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "ActionResource" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "server" ]
          }
        },
        "required" : [ "id", "type" ]
      },
      "AddonPrice" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string",
            "enum" : [ "extra_ipv4", "extra_ipv6_prefix" ]
          },
          "max" : {
            "type" : "integer",
            "format" : "int32"
          },
          "unit_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "code", "max", "unit_price" ]
      },
      "ApiKeySummary" : {
        "type" : "object",
        "properties" : {
          "expires_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "scopes" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "required" : [ "expires_at", "id", "name", "scopes" ]
      },
      "ApiRoot" : {
        "type" : "object",
        "properties" : {
          "docs_url" : {
            "type" : "string"
          },
          "health_url" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "openapi_url" : {
            "type" : "string"
          },
          "version" : {
            "type" : "string"
          }
        },
        "required" : [ "docs_url", "health_url", "object", "openapi_url", "version" ]
      },
      "Availability" : {
        "type" : "object",
        "properties" : {
          "available" : {
            "type" : "boolean"
          },
          "checked_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "delivery" : {
            "type" : "string",
            "enum" : [ "instant", "on_request" ]
          },
          "max_orderable" : {
            "type" : "integer",
            "format" : "int32"
          },
          "object" : {
            "type" : "string"
          },
          "product_id" : {
            "type" : "string"
          },
          "quantity_orderable" : {
            "type" : "boolean"
          },
          "quantity_requested" : {
            "type" : "integer",
            "format" : "int32"
          },
          "stock_level" : {
            "type" : "string",
            "enum" : [ "in_stock", "low", "out_of_stock" ]
          }
        },
        "required" : [ "available", "checked_at", "delivery", "max_orderable", "object", "product_id", "quantity_orderable", "quantity_requested", "stock_level" ]
      },
      "AvailabilityList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Availability"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "Backup" : {
        "type" : "object",
        "properties" : {
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "description" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "protected" : {
            "type" : "boolean"
          },
          "size_bytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "creating", "finished", "failed", "unknown" ]
          }
        },
        "required" : [ "created_at", "description", "id", "object", "protected", "size_bytes", "status" ]
      },
      "BackupCreateRequest" : {
        "type" : "object",
        "description" : "Optional description of the new backup.",
        "properties" : {
          "description" : {
            "type" : "string",
            "description" : "At most 255 characters.",
            "example" : "before upgrade"
          }
        }
      },
      "BackupList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Backup"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          },
          "slots" : {
            "$ref" : "#/components/schemas/BackupSlots"
          }
        },
        "required" : [ "data", "pagination", "slots" ]
      },
      "BackupSlots" : {
        "type" : "object",
        "properties" : {
          "total" : {
            "type" : "integer",
            "format" : "int32"
          },
          "used" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "total", "used" ]
      },
      "Balance" : {
        "type" : "object",
        "properties" : {
          "available" : {
            "$ref" : "#/components/schemas/Money"
          },
          "credit_limit" : {
            "$ref" : "#/components/schemas/Money"
          },
          "object" : {
            "type" : "string"
          },
          "postpaid_exposure" : {
            "$ref" : "#/components/schemas/Money"
          }
        },
        "required" : [ "available", "credit_limit", "object", "postpaid_exposure" ]
      },
      "BillingPeriod" : {
        "type" : "object",
        "properties" : {
          "months" : {
            "type" : "integer",
            "format" : "int32"
          },
          "period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ]
          },
          "price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "your_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "months", "period", "price", "your_price" ]
      },
      "Cancellation" : {
        "type" : "object",
        "properties" : {
          "credit" : {
            "$ref" : "#/components/schemas/Price"
          },
          "effective_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "mode" : {
            "type" : "string",
            "enum" : [ "end_of_term", "immediate" ]
          },
          "object" : {
            "type" : "string"
          },
          "server_id" : {
            "type" : "string"
          },
          "state" : {
            "type" : "string",
            "enum" : [ "scheduled", "cancelled", "none" ]
          },
          "termination_pending" : {
            "type" : "boolean"
          }
        },
        "required" : [ "credit", "effective_at", "mode", "object", "server_id", "state", "termination_pending" ]
      },
      "CancellationRequest" : {
        "type" : "object",
        "description" : "end_of_term ends the server at its next renewal date. immediate ends it now and forfeits the remaining paid time without refund.",
        "properties" : {
          "mode" : {
            "type" : "string",
            "enum" : [ "end_of_term", "immediate" ],
            "example" : "end_of_term"
          }
        },
        "required" : [ "mode" ]
      },
      "Configurable" : {
        "type" : "object",
        "properties" : {
          "additional_disk_gb" : {
            "$ref" : "#/components/schemas/ConfigurableOption"
          },
          "cores" : {
            "$ref" : "#/components/schemas/ConfigurableOption"
          },
          "disk_gb" : {
            "$ref" : "#/components/schemas/ConfigurableOption"
          },
          "host_capped" : {
            "type" : "boolean"
          },
          "memory_mb" : {
            "$ref" : "#/components/schemas/ConfigurableOption"
          },
          "traffic_gb" : {
            "$ref" : "#/components/schemas/ConfigurableOption"
          }
        },
        "required" : [ "additional_disk_gb", "cores", "disk_gb", "host_capped", "memory_mb", "traffic_gb" ]
      },
      "ConfigurableOption" : {
        "type" : "object",
        "properties" : {
          "max" : {
            "type" : "integer",
            "format" : "int32"
          },
          "min" : {
            "type" : "integer",
            "format" : "int32"
          },
          "step" : {
            "type" : "integer",
            "format" : "int32"
          },
          "unit" : {
            "type" : "string",
            "enum" : [ "core", "1024_mb", "10_gb", "1000_gb" ]
          },
          "unit_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "max", "min", "step", "unit", "unit_price" ]
      },
      "DedicatedConfigurator" : {
        "type" : "object",
        "properties" : {
          "crypto_fee" : {
            "$ref" : "#/components/schemas/Price"
          },
          "groups" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DedicatedOptionGroup"
            }
          }
        },
        "required" : [ "crypto_fee", "groups" ]
      },
      "DedicatedHardware" : {
        "type" : "object",
        "properties" : {
          "cpu_model" : {
            "type" : "string"
          },
          "disks" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "ipv4" : {
            "type" : "integer",
            "format" : "int32"
          },
          "ipv6" : {
            "type" : "integer",
            "format" : "int32"
          },
          "location" : {
            "type" : "string"
          },
          "memory_description" : {
            "type" : "string"
          },
          "processor_family" : {
            "type" : "string"
          },
          "traffic_description" : {
            "type" : "string"
          },
          "traffic_gb" : {
            "type" : "integer",
            "format" : "int64"
          },
          "uplink" : {
            "type" : "string"
          }
        },
        "required" : [ "cpu_model", "disks", "ipv4", "ipv6", "location", "memory_description", "processor_family", "traffic_description", "traffic_gb", "uplink" ]
      },
      "DedicatedOptionChoice" : {
        "type" : "object",
        "properties" : {
          "label" : {
            "type" : "string"
          },
          "monthly_price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "setup_fee" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "label", "monthly_price", "setup_fee" ]
      },
      "DedicatedOptionGroup" : {
        "type" : "object",
        "properties" : {
          "choices" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DedicatedOptionChoice"
            }
          },
          "key" : {
            "type" : "string"
          },
          "required" : {
            "type" : "boolean"
          }
        },
        "required" : [ "choices", "key", "required" ]
      },
      "DomainCheck" : {
        "type" : "object",
        "properties" : {
          "available" : {
            "type" : "boolean"
          },
          "domain" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "premium" : {
            "type" : "boolean"
          },
          "price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "reason" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "available", "registered", "premium", "invalid", "unsupported", "unknown" ]
          }
        },
        "required" : [ "available", "domain", "object", "premium", "price", "reason", "status" ]
      },
      "DomainCheckList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/DomainCheck"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "DomainCheckRequest" : {
        "type" : "object",
        "properties" : {
          "domains" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        }
      },
      "DomainOption" : {
        "type" : "object",
        "description" : "Domain to register or transfer. auth_code is required for transfer and not allowed for register.",
        "properties" : {
          "action" : {
            "type" : "string",
            "enum" : [ "register", "transfer" ]
          },
          "auth_code" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string",
            "example" : "example.de"
          }
        },
        "required" : [ "action", "name" ]
      },
      "Error" : {
        "description" : "Machine-readable error. Clients branch on code, never on message.",
        "properties" : {
          "code" : {
            "type" : "string",
            "description" : "Stable error code. Clients must tolerate unknown values.",
            "enum" : [ "account_locked", "account_unavailable", "action_in_progress", "api_key_expired", "api_key_revoked", "authentication_required", "backup_failed", "credit_limit_exceeded", "external_reference_conflict", "feature_unavailable", "idempotency_conflict", "idempotency_in_progress", "idempotency_key_required", "insufficient_credit", "insufficient_scope", "internal_error", "invalid_api_key", "invalid_cursor", "invalid_option", "invalid_request", "invalid_state", "ip_binding_unavailable", "ip_not_allowed", "key_management_forbidden", "method_not_allowed", "out_of_stock", "payment_method_unavailable", "postpaid_unavailable", "price_changed", "product_unavailable", "quantity_unavailable", "quota_exceeded", "rate_limited", "reinstall_failed", "reseller_profile_required", "resource_locked", "resource_not_found", "restore_failed", "route_not_found", "test_mode_unavailable", "unsupported_media_type", "upstream_unavailable", "validation_failed" ],
            "example" : "invalid_api_key"
          },
          "details" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "object",
              "description" : "Additional structured information. Empty object when there is none."
            },
            "description" : "Additional structured information. Empty object when there is none."
          },
          "doc_url" : {
            "type" : "string",
            "format" : "uri",
            "description" : "Link to the documentation of this error code.",
            "example" : "https://api.dataflair.cloud/api/v2/v1/openapi.json#/x-error-codes/invalid_api_key"
          },
          "message" : {
            "type" : "string",
            "description" : "Human-readable message in English. Not stable.",
            "example" : "The API key is invalid."
          },
          "request_id" : {
            "type" : "string",
            "description" : "Request identifier, also sent as the X-Request-Id header.",
            "example" : "5f0c2a8e-4d1b-4c3a-9e57-2b8f6d1a7c90"
          }
        },
        "required" : [ "code", "details", "doc_url", "message", "request_id" ]
      },
      "ErrorResponse" : {
        "description" : "Envelope of every error returned by API v1.",
        "properties" : {
          "error" : {
            "$ref" : "#/components/schemas/Error"
          }
        },
        "required" : [ "error" ]
      },
      "GameServerInfo" : {
        "type" : "object",
        "properties" : {
          "game_name" : {
            "type" : "string"
          },
          "game_slug" : {
            "type" : "string"
          },
          "location_selectable" : {
            "type" : "boolean"
          },
          "variant_keys" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          }
        },
        "required" : [ "game_name", "game_slug", "location_selectable", "variant_keys" ]
      },
      "Health" : {
        "type" : "object",
        "properties" : {
          "api_version" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "ok" ]
          }
        },
        "required" : [ "api_version", "object", "status" ]
      },
      "Invoice" : {
        "type" : "object",
        "description" : "An invoice. id is the invoice number and addresses the invoice in /v1/invoices/{id}; number carries the same value.",
        "properties" : {
          "due_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "id" : {
            "type" : "string"
          },
          "issued_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "number" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "order_ids" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "paid_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "pdf_url" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "unpaid", "paid", "cancelled" ]
          },
          "total" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "due_at", "id", "issued_at", "number", "object", "order_ids", "paid_at", "pdf_url", "status", "total" ]
      },
      "InvoiceList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Invoice"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "InvoiceRef" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "number" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "number" ]
      },
      "Location" : {
        "type" : "object",
        "properties" : {
          "country" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          }
        },
        "required" : [ "country", "id", "name", "object" ]
      },
      "LocationList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Location"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "Money" : {
        "type" : "object",
        "description" : "An amount of money. amount is in cents (minor units of currency).",
        "properties" : {
          "amount" : {
            "type" : "integer",
            "format" : "int64",
            "description" : "Amount in cents.",
            "example" : 1190
          },
          "currency" : {
            "type" : "string",
            "description" : "ISO 4217 currency code.",
            "example" : "EUR"
          }
        },
        "required" : [ "amount", "currency" ]
      },
      "Order" : {
        "type" : "object",
        "properties" : {
          "completed_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "delivered_quantity" : {
            "type" : "integer",
            "format" : "int32"
          },
          "external_reference" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "invoice" : {
            "$ref" : "#/components/schemas/InvoiceRef"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "object" : {
            "type" : "string"
          },
          "paid_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "payment_method" : {
            "type" : "string",
            "enum" : [ "account_credit", "reseller_postpaid" ]
          },
          "product_id" : {
            "type" : "string"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32"
          },
          "recurring" : {
            "$ref" : "#/components/schemas/Price"
          },
          "server_ids" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "status" : {
            "type" : "string",
            "enum" : [ "pending_payment", "processing", "completed", "failed", "cancelled" ]
          },
          "status_reason" : {
            "type" : "string",
            "enum" : [ "payment_unconfirmed" ]
          },
          "total" : {
            "$ref" : "#/components/schemas/Price"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "kvm_server_product", "kvm_server_renew", "top_up_credit", "domain_register", "domain_renew", "domain_transfer", "configurable_dedicated_server", "dedicated_server_product", "dedicated_server_renew", "game_server_product", "game_server_renew", "kvm_trial", "kvm_trial_convert", "kvm_config_change", "failover_ip_product", "failover_ip_renew", "domain_robot", "domain_robot_renew", "unset" ]
          },
          "updated_at" : {
            "type" : "string",
            "format" : "date-time"
          }
        },
        "required" : [ "completed_at", "created_at", "delivered_quantity", "external_reference", "id", "invoice", "labels", "object", "paid_at", "payment_method", "product_id", "quantity", "recurring", "server_ids", "status", "status_reason", "total", "type", "updated_at" ]
      },
      "OrderCreateRequest" : {
        "type" : "object",
        "properties" : {
          "billing_period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ]
          },
          "coupon_code" : {
            "type" : "string"
          },
          "dry_run" : {
            "type" : "boolean"
          },
          "expected_total" : {
            "$ref" : "#/components/schemas/Money"
          },
          "external_reference" : {
            "type" : "string"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "note" : {
            "type" : "string"
          },
          "options" : {
            "$ref" : "#/components/schemas/OrderOptions"
          },
          "payment_method" : {
            "type" : "string",
            "enum" : [ "account_credit", "reseller_postpaid" ]
          },
          "product_id" : {
            "type" : "string"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "OrderList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Order"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "OrderOptions" : {
        "type" : "object",
        "description" : "Family specific options of a quote or an order.",
        "properties" : {
          "auto_renew" : {
            "type" : "boolean"
          },
          "config" : {
            "$ref" : "#/components/schemas/QuoteKvmConfig"
          },
          "domain" : {
            "$ref" : "#/components/schemas/DomainOption"
          },
          "extra_ipv4" : {
            "type" : "integer",
            "format" : "int32"
          },
          "extra_ipv6" : {
            "type" : "integer",
            "format" : "int32"
          },
          "extra_ipv6_prefixes" : {
            "type" : "integer",
            "format" : "int32"
          },
          "location_id" : {
            "type" : "string",
            "description" : "Location id from /v1/catalog/locations."
          },
          "name" : {
            "type" : "string",
            "description" : "Name of the server (dedicated, gameserver)."
          },
          "nameservers" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "os_image_id" : {
            "type" : "string"
          },
          "selections" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Choices of a dedicated_configurable product (keys cpu, ram, nvme1, nvme2, uplink, power_supply, ddos_protection, ip) or of a gameserver variant."
          },
          "variant_key" : {
            "type" : "string"
          }
        }
      },
      "OrderPreview" : {
        "type" : "object",
        "properties" : {
          "errors" : {
            "type" : "array",
            "items" : {
              "type" : "object",
              "additionalProperties" : { }
            }
          },
          "object" : {
            "type" : "string"
          },
          "quote" : {
            "$ref" : "#/components/schemas/Quote"
          },
          "would_succeed" : {
            "type" : "boolean"
          }
        },
        "required" : [ "errors", "object", "quote", "would_succeed" ]
      },
      "OsImage" : {
        "type" : "object",
        "properties" : {
          "default" : {
            "type" : "boolean"
          },
          "id" : {
            "type" : "string"
          },
          "license_price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "min_disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "name" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "type" : {
            "type" : "string",
            "enum" : [ "linux", "windows" ]
          }
        },
        "required" : [ "default", "id", "license_price", "min_disk_gb", "name", "object", "type" ]
      },
      "OsImageList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/OsImage"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "Pagination" : {
        "type" : "object",
        "properties" : {
          "has_more" : {
            "type" : "boolean"
          },
          "next_cursor" : {
            "type" : "string"
          }
        },
        "required" : [ "has_more", "next_cursor" ]
      },
      "PowerActionRequest" : {
        "type" : "object",
        "description" : "Power action to run on a KVM server.",
        "properties" : {
          "type" : {
            "type" : "string",
            "description" : "start boots the server, shutdown sends an ACPI shutdown, stop cuts the power, reboot sends an ACPI reboot, reset is a hard reset.",
            "enum" : [ "start", "stop", "shutdown", "reboot", "reset" ],
            "example" : "reboot"
          }
        },
        "required" : [ "type" ]
      },
      "Price" : {
        "type" : "object",
        "description" : "A price with net, gross and tax amount. All amounts are Money objects in cents.",
        "properties" : {
          "gross" : {
            "$ref" : "#/components/schemas/Money"
          },
          "net" : {
            "$ref" : "#/components/schemas/Money"
          },
          "tax" : {
            "$ref" : "#/components/schemas/Money"
          },
          "tax_mode" : {
            "type" : "string",
            "description" : "How the tax was determined. Clients must tolerate unknown values.",
            "enum" : [ "unknown" ]
          },
          "tax_rate" : {
            "type" : "number",
            "description" : "Tax rate in percent, 0 to 100.",
            "example" : 19.0,
            "maximum" : 100,
            "minimum" : 0
          }
        },
        "required" : [ "gross", "net", "tax", "tax_mode", "tax_rate" ]
      },
      "Product" : {
        "type" : "object",
        "properties" : {
          "addons" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/AddonPrice"
            }
          },
          "billing_periods" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/BillingPeriod"
            }
          },
          "configurable" : {
            "$ref" : "#/components/schemas/Configurable"
          },
          "dedicated_configurator" : {
            "$ref" : "#/components/schemas/DedicatedConfigurator"
          },
          "delivery" : {
            "type" : "string",
            "enum" : [ "instant", "on_request" ]
          },
          "description" : {
            "type" : "string"
          },
          "family" : {
            "type" : "string",
            "enum" : [ "kvm", "kvm_configurable", "dedicated", "dedicated_configurable", "gameserver", "failover_ip", "domain_register", "domain_transfer" ]
          },
          "game" : {
            "$ref" : "#/components/schemas/GameServerInfo"
          },
          "hardware" : {
            "$ref" : "#/components/schemas/DedicatedHardware"
          },
          "id" : {
            "type" : "string"
          },
          "list_price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "locations" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "name" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "orderable" : {
            "type" : "boolean"
          },
          "os_image_ids" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "price_valid_until" : {
            "type" : "string",
            "format" : "date-time"
          },
          "setup_price" : {
            "$ref" : "#/components/schemas/Price"
          },
          "specs" : {
            "$ref" : "#/components/schemas/ProductSpecs"
          },
          "unavailable_reason" : {
            "type" : "string"
          },
          "updated_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "your_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "addons", "billing_periods", "configurable", "dedicated_configurator", "delivery", "description", "family", "game", "hardware", "id", "list_price", "locations", "name", "object", "orderable", "os_image_ids", "price_valid_until", "setup_price", "specs", "unavailable_reason", "updated_at", "your_price" ]
      },
      "ProductList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Product"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "ProductSpecs" : {
        "type" : "object",
        "properties" : {
          "additional_disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "backup_slots" : {
            "type" : "integer",
            "format" : "int32"
          },
          "bandwidth_mbps" : {
            "type" : "integer",
            "format" : "int32"
          },
          "cores" : {
            "type" : "integer",
            "format" : "int32"
          },
          "disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "ipv4" : {
            "type" : "integer",
            "format" : "int32"
          },
          "ipv6_prefix" : {
            "type" : "string"
          },
          "memory_mb" : {
            "type" : "integer",
            "format" : "int64"
          },
          "traffic_gb" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "additional_disk_gb", "backup_slots", "bandwidth_mbps", "cores", "disk_gb", "ipv4", "ipv6_prefix", "memory_mb", "traffic_gb" ]
      },
      "Quote" : {
        "type" : "object",
        "properties" : {
          "availability" : {
            "$ref" : "#/components/schemas/Availability"
          },
          "billing_period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ]
          },
          "delivery" : {
            "type" : "string",
            "enum" : [ "instant", "on_request" ]
          },
          "discount" : {
            "$ref" : "#/components/schemas/QuoteDiscount"
          },
          "family" : {
            "type" : "string",
            "enum" : [ "kvm", "kvm_configurable", "dedicated", "dedicated_configurable", "gameserver", "failover_ip", "domain_register", "domain_transfer" ]
          },
          "lines" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/QuoteLine"
            }
          },
          "object" : {
            "type" : "string"
          },
          "payment" : {
            "$ref" : "#/components/schemas/QuotePayment"
          },
          "product_id" : {
            "type" : "string"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32"
          },
          "recurring" : {
            "$ref" : "#/components/schemas/QuoteRecurring"
          },
          "total_due_now" : {
            "$ref" : "#/components/schemas/Price"
          },
          "valid_until" : {
            "type" : "string",
            "format" : "date-time"
          },
          "your_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "availability", "billing_period", "delivery", "discount", "family", "lines", "object", "payment", "product_id", "quantity", "recurring", "total_due_now", "valid_until", "your_price" ]
      },
      "QuoteDiscount" : {
        "type" : "object",
        "properties" : {
          "percent" : {
            "type" : "number",
            "description" : "Percent, 0 to 100.",
            "maximum" : 100,
            "minimum" : 0
          },
          "type" : {
            "type" : "string",
            "enum" : [ "reseller_tier" ]
          }
        },
        "required" : [ "percent", "type" ]
      },
      "QuoteKvmConfig" : {
        "type" : "object",
        "description" : "Configuration of a kvm_configurable product. memory_mb is a multiple of 1024, traffic_gb a multiple of 1000.",
        "properties" : {
          "additional_disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "cores" : {
            "type" : "integer",
            "format" : "int32"
          },
          "disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "memory_mb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "traffic_gb" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "cores", "disk_gb", "memory_mb", "traffic_gb" ]
      },
      "QuoteLine" : {
        "type" : "object",
        "properties" : {
          "code" : {
            "type" : "string"
          },
          "description" : {
            "type" : "string"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32"
          },
          "total" : {
            "$ref" : "#/components/schemas/Price"
          },
          "unit_price" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "code", "description", "quantity", "total", "unit_price" ]
      },
      "QuotePayment" : {
        "type" : "object",
        "properties" : {
          "balance_after" : {
            "$ref" : "#/components/schemas/Money"
          },
          "method" : {
            "type" : "string",
            "enum" : [ "account_credit", "reseller_postpaid" ]
          },
          "sufficient" : {
            "type" : "boolean"
          }
        },
        "required" : [ "balance_after", "method", "sufficient" ]
      },
      "QuoteRecurring" : {
        "type" : "object",
        "properties" : {
          "amount" : {
            "$ref" : "#/components/schemas/Price"
          },
          "months" : {
            "type" : "integer",
            "format" : "int32"
          },
          "period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ]
          }
        },
        "required" : [ "amount", "months", "period" ]
      },
      "QuoteRequest" : {
        "type" : "object",
        "properties" : {
          "billing_period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ]
          },
          "coupon_code" : {
            "type" : "string"
          },
          "note" : {
            "type" : "string"
          },
          "options" : {
            "$ref" : "#/components/schemas/OrderOptions"
          },
          "payment_method" : {
            "type" : "string",
            "enum" : [ "account_credit", "reseller_postpaid" ]
          },
          "product_id" : {
            "type" : "string"
          },
          "quantity" : {
            "type" : "integer",
            "format" : "int32"
          }
        }
      },
      "RdnsRequest" : {
        "type" : "object",
        "description" : "PTR record for the address.",
        "properties" : {
          "ptr" : {
            "type" : "string",
            "description" : "Fully qualified host name.",
            "example" : "web1.example.com"
          }
        },
        "required" : [ "ptr" ]
      },
      "ReinstallRequest" : {
        "type" : "object",
        "description" : "Image to install. The server keeps its root password and SSH keys.",
        "properties" : {
          "os_image_id" : {
            "type" : "string",
            "description" : "Image id from /v1/catalog/os-images that fits this server.",
            "example" : "debian-12"
          }
        },
        "required" : [ "os_image_id" ]
      },
      "Reseller" : {
        "type" : "object",
        "properties" : {
          "active" : {
            "type" : "boolean"
          },
          "billing_mode" : {
            "type" : "string",
            "enum" : [ "prepaid", "postpaid" ]
          },
          "tier_percent" : {
            "type" : "number",
            "description" : "Percent, 0 to 100.",
            "maximum" : 100,
            "minimum" : 0
          }
        },
        "required" : [ "active", "billing_mode", "tier_percent" ]
      },
      "ResellerBilling" : {
        "type" : "object",
        "properties" : {
          "active" : {
            "type" : "boolean"
          },
          "billing_mode" : {
            "type" : "string",
            "enum" : [ "prepaid", "postpaid" ]
          },
          "credit_limit" : {
            "$ref" : "#/components/schemas/Money"
          },
          "object" : {
            "type" : "string"
          },
          "postpaid_exposure" : {
            "$ref" : "#/components/schemas/Money"
          },
          "tier_percent" : {
            "type" : "number",
            "description" : "Percent, 0 to 100.",
            "maximum" : 100,
            "minimum" : 0
          }
        },
        "required" : [ "active", "billing_mode", "credit_limit", "object", "postpaid_exposure", "tier_percent" ]
      },
      "Server" : {
        "type" : "object",
        "description" : "A server. Only labels and external_reference can be changed with PATCH; location is a location id from /v1/catalog/locations, the same id as in Product.locations.",
        "properties" : {
          "auto_renew" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "billing_period" : {
            "type" : "string",
            "enum" : [ "monthly", "quarterly", "semi_annually", "yearly" ],
            "readOnly" : true
          },
          "cancellation" : {
            "$ref" : "#/components/schemas/ServerCancellation",
            "readOnly" : true
          },
          "created_at" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "external_reference" : {
            "type" : "string"
          },
          "family" : {
            "type" : "string",
            "enum" : [ "kvm", "kvm_configurable", "dedicated", "dedicated_configurable", "gameserver", "failover_ip", "domain_register", "domain_transfer" ],
            "readOnly" : true
          },
          "hostname" : {
            "type" : "string",
            "readOnly" : true
          },
          "id" : {
            "type" : "string",
            "readOnly" : true
          },
          "ipv4" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "readOnly" : true
          },
          "ipv6" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "readOnly" : true
          },
          "ipv6_prefixes" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            },
            "readOnly" : true
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            }
          },
          "location" : {
            "type" : "string",
            "readOnly" : true
          },
          "lock" : {
            "$ref" : "#/components/schemas/ServerLock",
            "readOnly" : true
          },
          "name" : {
            "type" : "string",
            "readOnly" : true
          },
          "next_renewal_at" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          },
          "object" : {
            "type" : "string",
            "readOnly" : true
          },
          "order_id" : {
            "type" : "string",
            "readOnly" : true
          },
          "os" : {
            "type" : "string",
            "readOnly" : true
          },
          "price" : {
            "$ref" : "#/components/schemas/Price",
            "readOnly" : true
          },
          "product_id" : {
            "type" : "string",
            "readOnly" : true
          },
          "product_status" : {
            "type" : "string",
            "enum" : [ "open", "active", "done", "suspended", "cancelled", "fraud", "manual", "terminating" ],
            "readOnly" : true
          },
          "specs" : {
            "$ref" : "#/components/schemas/ServerSpecs",
            "readOnly" : true
          },
          "status" : {
            "type" : "string",
            "enum" : [ "running", "stopped", "paused", "unknown" ],
            "readOnly" : true
          },
          "suspended" : {
            "type" : "boolean",
            "readOnly" : true
          },
          "updated_at" : {
            "type" : "string",
            "format" : "date-time",
            "readOnly" : true
          }
        },
        "required" : [ "auto_renew", "billing_period", "cancellation", "created_at", "external_reference", "family", "hostname", "id", "ipv4", "ipv6", "ipv6_prefixes", "labels", "location", "lock", "name", "next_renewal_at", "object", "order_id", "os", "price", "product_id", "product_status", "specs", "status", "suspended", "updated_at" ]
      },
      "ServerCancellation" : {
        "type" : "object",
        "properties" : {
          "mode" : {
            "type" : "string",
            "enum" : [ "end_of_term", "immediate" ]
          },
          "scheduled_at" : {
            "type" : "string",
            "format" : "date-time"
          }
        },
        "required" : [ "mode", "scheduled_at" ]
      },
      "ServerConsole" : {
        "type" : "object",
        "properties" : {
          "expires_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "object" : {
            "type" : "string"
          },
          "url" : {
            "type" : "string"
          }
        },
        "required" : [ "expires_at", "object", "url" ]
      },
      "ServerIso" : {
        "type" : "object",
        "properties" : {
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "id" : {
            "type" : "string"
          },
          "mounted_here" : {
            "type" : "boolean"
          },
          "name" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "size_bytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "pending", "downloading", "ready", "failed", "deleting", "deleted" ]
          },
          "usable_here" : {
            "type" : "boolean"
          }
        },
        "required" : [ "created_at", "id", "mounted_here", "name", "object", "size_bytes", "status", "usable_here" ]
      },
      "ServerIsoState" : {
        "type" : "object",
        "properties" : {
          "available" : {
            "type" : "boolean"
          },
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ServerIso"
            }
          },
          "mounted_iso_id" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "server_id" : {
            "type" : "string"
          },
          "unavailable_reason" : {
            "type" : "string"
          }
        },
        "required" : [ "available", "data", "mounted_iso_id", "object", "server_id", "unavailable_reason" ]
      },
      "ServerIsoUpload" : {
        "type" : "object",
        "properties" : {
          "url" : {
            "type" : "string"
          }
        },
        "required" : [ "url" ]
      },
      "ServerList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Server"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "ServerLock" : {
        "type" : "object",
        "properties" : {
          "reason" : {
            "type" : "string",
            "enum" : [ "maintenance", "backup_running", "migrating", "ip_change" ]
          },
          "since" : {
            "type" : "string",
            "format" : "date-time"
          }
        },
        "required" : [ "reason", "since" ]
      },
      "ServerMetrics" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string"
          },
          "period" : {
            "type" : "string"
          },
          "points" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ServerMetricsPoint"
            }
          },
          "server_id" : {
            "type" : "string"
          },
          "stale" : {
            "type" : "boolean"
          },
          "step_seconds" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "object", "period", "points", "server_id", "stale", "step_seconds" ]
      },
      "ServerMetricsPoint" : {
        "type" : "object",
        "properties" : {
          "cpu_percent" : {
            "type" : "number",
            "format" : "double",
            "description" : "Percent, 0 to 100.",
            "maximum" : 100,
            "minimum" : 0
          },
          "memory_percent" : {
            "type" : "number",
            "format" : "double"
          },
          "timestamp" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "cpu_percent", "memory_percent", "timestamp" ]
      },
      "ServerOsImage" : {
        "type" : "object",
        "properties" : {
          "id" : {
            "type" : "string"
          },
          "name" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          }
        },
        "required" : [ "id", "name", "object" ]
      },
      "ServerOsImageList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/ServerOsImage"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "ServerRescue" : {
        "type" : "object",
        "properties" : {
          "active" : {
            "type" : "boolean"
          },
          "auto_stop_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "available" : {
            "type" : "boolean"
          },
          "object" : {
            "type" : "string"
          },
          "server_id" : {
            "type" : "string"
          },
          "started_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "unavailable_reason" : {
            "type" : "string"
          },
          "username" : {
            "type" : "string"
          }
        },
        "required" : [ "active", "auto_stop_at", "available", "object", "server_id", "started_at", "unavailable_reason", "username" ]
      },
      "ServerSpecs" : {
        "type" : "object",
        "properties" : {
          "cores" : {
            "type" : "integer",
            "format" : "int32"
          },
          "cpu_model" : {
            "type" : "string"
          },
          "disk_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "memory_description" : {
            "type" : "string"
          },
          "memory_mb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "traffic_gb" : {
            "type" : "integer",
            "format" : "int32"
          }
        },
        "required" : [ "cores", "cpu_model", "disk_gb", "memory_description", "memory_mb", "traffic_gb" ]
      },
      "ServerStatus" : {
        "type" : "object",
        "properties" : {
          "cpu_percent" : {
            "type" : "number",
            "format" : "float",
            "description" : "Percent, 0 to 100.",
            "maximum" : 100,
            "minimum" : 0
          },
          "memory_max_bytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "memory_used_bytes" : {
            "type" : "integer",
            "format" : "int64"
          },
          "object" : {
            "type" : "string"
          },
          "observed_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "server_id" : {
            "type" : "string"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "running", "stopped", "paused", "unknown" ]
          },
          "uptime_seconds" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "cpu_percent", "memory_max_bytes", "memory_used_bytes", "object", "observed_at", "server_id", "status", "uptime_seconds" ]
      },
      "ServerTraffic" : {
        "type" : "object",
        "properties" : {
          "cycle" : {
            "type" : "string"
          },
          "object" : {
            "type" : "string"
          },
          "server_id" : {
            "type" : "string"
          },
          "throttled" : {
            "type" : "boolean"
          },
          "traffic_gb" : {
            "type" : "integer",
            "format" : "int32"
          },
          "used_bytes" : {
            "type" : "integer",
            "format" : "int64"
          }
        },
        "required" : [ "cycle", "object", "server_id", "throttled", "traffic_gb", "used_bytes" ]
      },
      "ServerUpdateRequest" : {
        "type" : "object",
        "description" : "Only labels and external_reference can be changed. labels replaces the whole map, null clears it.",
        "properties" : {
          "external_reference" : {
            "type" : "string",
            "description" : "Your own reference, unique per account, 1-128 characters of A-Z a-z 0-9 . _ : / -; null clears it.",
            "example" : "whmcs-service-8812"
          },
          "labels" : {
            "type" : "object",
            "additionalProperties" : {
              "type" : "string"
            },
            "description" : "Key-value labels, null clears all labels.",
            "example" : {
              "customer" : "c-1042"
            }
          }
        }
      },
      "Tld" : {
        "type" : "object",
        "properties" : {
          "object" : {
            "type" : "string"
          },
          "register" : {
            "$ref" : "#/components/schemas/Price"
          },
          "registry_lock" : {
            "$ref" : "#/components/schemas/Price"
          },
          "renew" : {
            "$ref" : "#/components/schemas/Price"
          },
          "restore" : {
            "$ref" : "#/components/schemas/Price"
          },
          "tld" : {
            "type" : "string"
          },
          "transfer" : {
            "$ref" : "#/components/schemas/Price"
          }
        },
        "required" : [ "object", "register", "registry_lock", "renew", "restore", "tld", "transfer" ]
      },
      "TldList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Tld"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "Webhook" : {
        "type" : "object",
        "properties" : {
          "active" : {
            "type" : "boolean"
          },
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "description" : {
            "type" : "string"
          },
          "disabled_reason" : {
            "type" : "string"
          },
          "events" : {
            "type" : "array",
            "items" : {
              "type" : "string"
            }
          },
          "id" : {
            "type" : "string"
          },
          "secret" : {
            "type" : "string"
          },
          "updated_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "url" : {
            "type" : "string"
          }
        },
        "required" : [ "active", "created_at", "description", "disabled_reason", "events", "id", "secret", "updated_at", "url" ]
      },
      "WebhookCreateRequest" : {
        "type" : "object",
        "description" : "A webhook endpoint. The signing secret is generated and returned once in the answer.",
        "properties" : {
          "active" : {
            "type" : "boolean",
            "description" : "Defaults to true.",
            "example" : true
          },
          "description" : {
            "type" : "string",
            "description" : "At most 200 characters.",
            "example" : "billing sync"
          },
          "events" : {
            "type" : "array",
            "description" : "Event types to receive: invoice.created, invoice.paid, invoice.cancelled.",
            "example" : [ "invoice.paid" ],
            "items" : {
              "type" : "string"
            }
          },
          "url" : {
            "type" : "string",
            "description" : "https URL on port 443 or above 1024 that resolves to public addresses only.",
            "example" : "https://example.com/hooks/index-hosting"
          }
        },
        "required" : [ "active", "description", "events", "url" ]
      },
      "WebhookDelivery" : {
        "type" : "object",
        "properties" : {
          "attempts" : {
            "type" : "integer",
            "format" : "int32"
          },
          "created_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "event_id" : {
            "type" : "string"
          },
          "event_type" : {
            "type" : "string"
          },
          "id" : {
            "type" : "string"
          },
          "last_attempt_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "last_error" : {
            "type" : "string"
          },
          "last_http_status" : {
            "type" : "integer",
            "format" : "int32"
          },
          "next_attempt_at" : {
            "type" : "string",
            "format" : "date-time"
          },
          "status" : {
            "type" : "string",
            "enum" : [ "pending", "in_flight", "succeeded", "failed" ]
          }
        },
        "required" : [ "attempts", "created_at", "event_id", "event_type", "id", "last_attempt_at", "last_error", "last_http_status", "next_attempt_at", "status" ]
      },
      "WebhookDeliveryList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/WebhookDelivery"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "WebhookList" : {
        "type" : "object",
        "properties" : {
          "data" : {
            "type" : "array",
            "items" : {
              "$ref" : "#/components/schemas/Webhook"
            }
          },
          "pagination" : {
            "$ref" : "#/components/schemas/Pagination"
          }
        },
        "required" : [ "data", "pagination" ]
      },
      "WebhookTestResult" : {
        "type" : "object",
        "properties" : {
          "delivery_id" : {
            "type" : "string"
          },
          "event_id" : {
            "type" : "string"
          }
        },
        "required" : [ "delivery_id", "event_id" ]
      },
      "WebhookUpdateRequest" : {
        "type" : "object",
        "description" : "Fields to change; omitted fields stay unchanged.",
        "properties" : {
          "active" : {
            "type" : "boolean",
            "description" : "false pauses all deliveries."
          },
          "description" : {
            "type" : "string",
            "description" : "At most 200 characters."
          },
          "events" : {
            "type" : "array",
            "description" : "Event types to receive: invoice.created, invoice.paid, invoice.cancelled.",
            "items" : {
              "type" : "string"
            }
          },
          "url" : {
            "type" : "string",
            "description" : "https URL on port 443 or above 1024 that resolves to public addresses only."
          }
        },
        "required" : [ "active", "description", "events", "url" ]
      }
    },
    "securitySchemes" : {
      "bearerAuth" : {
        "bearerFormat" : "ihk_live_<43 base62 characters>",
        "description" : "API key created in the customer panel, sent as Authorization: Bearer ihk_live_...",
        "scheme" : "bearer",
        "type" : "http"
      }
    }
  },
  "x-error-codes" : {
    "account_locked" : {
      "description" : "The account is locked.",
      "kind" : "error",
      "status" : 423
    },
    "account_unavailable" : {
      "description" : "The account cannot use the API.",
      "kind" : "error",
      "status" : 403
    },
    "action_in_progress" : {
      "description" : "Another action is running for this server.",
      "kind" : "error",
      "status" : 409
    },
    "api_key_expired" : {
      "description" : "The API key has expired.",
      "kind" : "error",
      "status" : 401
    },
    "api_key_revoked" : {
      "description" : "The API key has been revoked.",
      "kind" : "error",
      "status" : 401
    },
    "authentication_required" : {
      "description" : "An API key is required.",
      "kind" : "error",
      "status" : 401
    },
    "backup_failed" : {
      "description" : "The backup could not be started.",
      "kind" : "error",
      "status" : 502
    },
    "credit_limit_exceeded" : {
      "description" : "The order exceeds the postpaid credit limit.",
      "kind" : "error",
      "status" : 422
    },
    "external_reference_conflict" : {
      "description" : "The external_reference is already in use.",
      "kind" : "error",
      "status" : 409
    },
    "feature_unavailable" : {
      "description" : "This feature is not available.",
      "kind" : "error",
      "status" : 503
    },
    "idempotency_conflict" : {
      "description" : "The Idempotency-Key was used with a different request.",
      "kind" : "error",
      "status" : 409
    },
    "idempotency_in_progress" : {
      "description" : "A request with this Idempotency-Key is still running.",
      "kind" : "error",
      "status" : 409
    },
    "idempotency_key_required" : {
      "description" : "This request needs an Idempotency-Key header.",
      "kind" : "error",
      "status" : 400
    },
    "insufficient_credit" : {
      "description" : "The account credit does not cover the order.",
      "kind" : "error",
      "status" : 402
    },
    "insufficient_scope" : {
      "description" : "The API key lacks the required scope.",
      "kind" : "error",
      "status" : 403
    },
    "internal_error" : {
      "description" : "Internal error.",
      "kind" : "error",
      "status" : 500
    },
    "invalid_api_key" : {
      "description" : "The API key is invalid.",
      "kind" : "error",
      "status" : 401
    },
    "invalid_cursor" : {
      "description" : "The cursor is invalid or expired.",
      "kind" : "error",
      "status" : 400
    },
    "invalid_option" : {
      "description" : "An option is not valid for this product.",
      "kind" : "error",
      "status" : 422
    },
    "invalid_request" : {
      "description" : "The request is malformed.",
      "kind" : "error",
      "status" : 400
    },
    "invalid_state" : {
      "description" : "The resource is not in a state that allows this.",
      "kind" : "error",
      "status" : 422
    },
    "ip_binding_unavailable" : {
      "description" : "The API key has an IP allowlist, but this server cannot enforce it yet. Remove allowed_ips.",
      "kind" : "error",
      "status" : 403
    },
    "ip_not_allowed" : {
      "description" : "The client IP is not in the allowlist of the API key.",
      "kind" : "error",
      "status" : 403
    },
    "key_management_forbidden" : {
      "description" : "API keys cannot manage API keys.",
      "kind" : "error",
      "status" : 403
    },
    "method_not_allowed" : {
      "description" : "The method is not allowed on this route.",
      "kind" : "error",
      "status" : 405
    },
    "out_of_stock" : {
      "description" : "No unit of this product is free right now.",
      "kind" : "error",
      "status" : 409
    },
    "payment_method_unavailable" : {
      "description" : "The payment method is not available on the API.",
      "kind" : "error",
      "status" : 422
    },
    "payment_unconfirmed" : {
      "description" : "The order was accepted but the payment outcome is not confirmed yet. Read the order again; it is never charged twice.",
      "kind" : "status_reason",
      "status" : 202
    },
    "postpaid_unavailable" : {
      "description" : "Postpaid billing is not available for this account.",
      "kind" : "error",
      "status" : 422
    },
    "price_changed" : {
      "description" : "The price differs from expected_total.",
      "kind" : "error",
      "status" : 409
    },
    "product_unavailable" : {
      "description" : "The product cannot be ordered.",
      "kind" : "error",
      "status" : 422
    },
    "quantity_unavailable" : {
      "description" : "The quantity is not available.",
      "kind" : "error",
      "status" : 422
    },
    "quota_exceeded" : {
      "description" : "The account already holds the maximum allowed for this product.",
      "kind" : "error",
      "status" : 422
    },
    "rate_limited" : {
      "description" : "Too many requests.",
      "kind" : "error",
      "status" : 429
    },
    "reinstall_failed" : {
      "description" : "The reinstallation could not be started.",
      "kind" : "error",
      "status" : 502
    },
    "reseller_profile_required" : {
      "description" : "This needs an active reseller profile.",
      "kind" : "error",
      "status" : 403
    },
    "resource_locked" : {
      "description" : "The resource is locked.",
      "kind" : "error",
      "status" : 423
    },
    "resource_not_found" : {
      "description" : "Resource not found.",
      "kind" : "error",
      "status" : 404
    },
    "restore_failed" : {
      "description" : "The restore could not be started.",
      "kind" : "error",
      "status" : 502
    },
    "route_not_found" : {
      "description" : "No such route.",
      "kind" : "error",
      "status" : 404
    },
    "test_mode_unavailable" : {
      "description" : "Test mode keys are not available yet.",
      "kind" : "error",
      "status" : 401
    },
    "unsupported_media_type" : {
      "description" : "The body must be application/json.",
      "kind" : "error",
      "status" : 415
    },
    "upstream_unavailable" : {
      "description" : "An upstream system did not respond.",
      "kind" : "error",
      "status" : 502
    },
    "validation_failed" : {
      "description" : "The request is not valid.",
      "kind" : "error",
      "status" : 422
    }
  }
}