{
  "properties": {
    "spec": {
      "properties": {
        "account": {
          "description": "Name of the account to which the Object Store belongs.",
          "pattern": "^[^.*>]*$",
          "type": "string"
        },
        "bucket": {
          "description": "A unique name for the Object Store.",
          "type": "string"
        },
        "compression": {
          "description": "Object Store compression.",
          "type": "boolean"
        },
        "creds": {
          "default": "",
          "description": "NATS user credentials for connecting to servers. Please make sure your controller has mounted the creds on its path.",
          "type": "string"
        },
        "description": {
          "description": "The description of the Object Store.",
          "type": "string"
        },
        "jsDomain": {
          "description": "The JetStream domain to use for the Object Store.",
          "type": "string"
        },
        "maxBytes": {
          "description": "The maximum size of the Store in bytes.",
          "type": "integer"
        },
        "metadata": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Additional Object Store metadata.",
          "type": "object"
        },
        "nkey": {
          "default": "",
          "description": "NATS user NKey for connecting to servers.",
          "type": "string"
        },
        "placement": {
          "description": "The Object Store placement via tags or cluster name.",
          "properties": {
            "cluster": {
              "type": "string"
            },
            "tags": {
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "preventDelete": {
          "default": false,
          "description": "When true, the managed Object Store will not be deleted when the resource is deleted.",
          "type": "boolean"
        },
        "preventUpdate": {
          "default": false,
          "description": "When true, the managed Object Store will not be updated when the resource is updated.",
          "type": "boolean"
        },
        "replicas": {
          "default": 1,
          "description": "The number of replicas to keep for the Object Store in clustered JetStream.",
          "maximum": 5,
          "minimum": 1,
          "type": "integer"
        },
        "servers": {
          "default": [],
          "description": "A list of servers for creating the Object Store.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "storage": {
          "description": "The storage backend to use for the Object Store.",
          "enum": [
            "file",
            "memory"
          ],
          "type": "string"
        },
        "tls": {
          "description": "A client's TLS certs and keys.",
          "properties": {
            "clientCert": {
              "description": "A client's cert filepath. Should be mounted.",
              "type": "string"
            },
            "clientKey": {
              "description": "A client's key filepath. Should be mounted.",
              "type": "string"
            },
            "rootCas": {
              "description": "A list of filepaths to CAs. Should be mounted.",
              "items": {
                "type": "string"
              },
              "type": "array"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "tlsFirst": {
          "default": false,
          "description": "When true, the Object Store will initiate TLS before server INFO.",
          "type": "boolean"
        },
        "ttl": {
          "description": "The time expiry for keys.",
          "type": "string"
        }
      },
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "properties": {
        "conditions": {
          "items": {
            "properties": {
              "lastTransitionTime": {
                "type": "string"
              },
              "message": {
                "type": "string"
              },
              "reason": {
                "type": "string"
              },
              "status": {
                "type": "string"
              },
              "type": {
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "observedGeneration": {
          "type": "integer"
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
