{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "#/components/schemas/ProvisionRequest",
  "title": "ProvisionRequest",
  "type": "object",
  "description": "Request body sent by Fly.io to the provider when provisioning or updating an extension resource.",
  "required": [
    "name",
    "id",
    "organization_id",
    "organization_name",
    "user_email",
    "user_id",
    "user_role"
  ],
  "properties": {
    "name": {
      "type": "string",
      "description": "The name the user specified for this extension resource."
    },
    "id": {
      "type": "string",
      "description": "Fly.io-generated unique identifier for this extension instance."
    },
    "organization_id": {
      "type": "string",
      "description": "The Fly.io organization ID of the user provisioning the extension."
    },
    "organization_name": {
      "type": "string",
      "description": "The display name of the Fly.io organization."
    },
    "user_email": {
      "type": "string",
      "format": "email",
      "description": "An obfuscated email alias for the provisioning user. This is a routing address that Fly.io manages, not the user's real email."
    },
    "user_id": {
      "type": "string",
      "description": "The Fly.io user ID of the provisioning user."
    },
    "user_role": {
      "type": "string",
      "description": "The user's role within the organization (e.g., admin, member)."
    },
    "primary_region": {
      "type": "string",
      "description": "The preferred deployment region for latency-sensitive resources.",
      "example": "iad"
    },
    "read_regions": {
      "type": "array",
      "description": "Additional regions where read replicas should be provisioned.",
      "items": {
        "type": "string"
      }
    },
    "ip_address": {
      "type": "string",
      "description": "A Fly.io private IP address allocated for Flycast routing, enabling the extension to receive traffic over the Fly.io private network."
    }
  }
}