{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/google-cloud-spanner/refs/heads/main/json-schema/instance-schema.json",
  "title": "Google Cloud Spanner Instance",
  "description": "A Cloud Spanner instance resource that provides compute and storage capacity for Spanner databases.",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "The unique name of the instance in the format projects/{project}/instances/{instance}.",
      "pattern": "^projects/[^/]+/instances/[^/]+$"
    },
    "config": {
      "type": "string",
      "description": "The name of the instance's configuration (e.g., projects/{project}/instanceConfigs/{config})."
    },
    "displayName": {
      "type": "string",
      "description": "The descriptive name for the instance.",
      "minLength": 4,
      "maxLength": 30
    },
    "nodeCount": {
      "type": "integer",
      "description": "The number of nodes allocated to this instance. At most one of nodeCount or processingUnits should be present.",
      "minimum": 1
    },
    "processingUnits": {
      "type": "integer",
      "description": "The number of processing units allocated (100 processing units = 1 node).",
      "minimum": 100
    },
    "state": {
      "type": "string",
      "enum": ["STATE_UNSPECIFIED", "CREATING", "READY"],
      "description": "The current state of the instance."
    },
    "labels": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "Cloud labels for this instance."
    },
    "endpointUris": {
      "type": "array",
      "items": {
        "type": "string",
        "format": "uri"
      },
      "description": "The endpoint URIs for this instance."
    },
    "createTime": {
      "type": "string",
      "format": "date-time",
      "description": "The creation time of the instance."
    },
    "updateTime": {
      "type": "string",
      "format": "date-time",
      "description": "The last update time of the instance."
    }
  },
  "required": ["config", "displayName"]
}
