{
  "description": "FirestoreDatabase is the Schema for the FirestoreDatabase API",
  "properties": {
    "apiVersion": {
      "description": "APIVersion defines the versioned schema of this representation of an object. Servers should convert recognized schemas to the latest internal value, and may reject unrecognized values. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources",
      "type": "string"
    },
    "kind": {
      "description": "Kind is a string value representing the REST resource this object represents. Servers may infer this from the endpoint the client submits requests to. Cannot be updated. In CamelCase. More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds",
      "type": "string"
    },
    "metadata": {
      "type": "object"
    },
    "spec": {
      "description": "FirestoreDatabaseSpec defines the desired state of FirestoreDatabase",
      "properties": {
        "concurrencyMode": {
          "description": "The concurrency control mode to use for this database. See https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases#concurrencymode for more info.",
          "type": "string"
        },
        "deleteProtectionState": {
          "description": "State of delete protection for the database.",
          "type": "string"
        },
        "locationID": {
          "description": "The location of the database. Available locations are listed at https://cloud.google.com/firestore/docs/locations.",
          "type": "string"
        },
        "pointInTimeRecoveryEnablement": {
          "description": "Whether to enable the PITR feature on this database. See https://cloud.google.com/firestore/docs/reference/rest/v1/projects.databases#pointintimerecoveryenablement for more info.",
          "type": "string"
        },
        "projectRef": {
          "description": "Immutable. The Project that this resource belongs to.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "The `projectID` field of a project, when not managed by Config Connector.",
              "type": "string"
            },
            "kind": {
              "description": "The kind of the Project resource; optional but must be `Project` if provided.",
              "type": "string"
            },
            "name": {
              "description": "The `name` field of a `Project` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` field of a `Project` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "resourceID": {
          "description": "The FirestoreDatabase name. If not given, the metadata.name will be used.",
          "type": "string"
        }
      },
      "required": [
        "projectRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "FirestoreDatabaseStatus defines the config connector machine state of FirestoreDatabase",
      "properties": {
        "conditions": {
          "description": "Conditions represent the latest available observations of the object's current state.",
          "items": {
            "properties": {
              "lastTransitionTime": {
                "description": "Last time the condition transitioned from one status to another.",
                "type": "string"
              },
              "message": {
                "description": "Human-readable message indicating details about last transition.",
                "type": "string"
              },
              "reason": {
                "description": "Unique, one-word, CamelCase reason for the condition's last transition.",
                "type": "string"
              },
              "status": {
                "description": "Status is the status of the condition. Can be True, False, Unknown.",
                "type": "string"
              },
              "type": {
                "description": "Type is the type of the condition.",
                "type": "string"
              }
            },
            "type": "object",
            "additionalProperties": false
          },
          "type": "array"
        },
        "externalRef": {
          "description": "A unique specifier for the FirestoreDatabase resource in GCP.",
          "type": "string"
        },
        "observedGeneration": {
          "description": "ObservedGeneration is the generation of the resource that was most recently observed by the Config Connector controller. If this is equal to metadata.generation, then that means that the current reported status reflects the most recent desired state of the resource.",
          "format": "int64",
          "type": "integer"
        },
        "observedState": {
          "description": "ObservedState is the state of the resource as most recently observed in GCP.",
          "properties": {
            "createTime": {
              "description": "Output only. The timestamp at which this database was created. Databases created before 2016 do not populate create_time.",
              "type": "string"
            },
            "earliestVersionTime": {
              "description": "Output only. The earliest timestamp at which older versions of the data can\n be read from the database. See [version_retention_period] above; this field\n is populated with `now - version_retention_period`.\n\n This value is continuously updated, and becomes stale the moment it is\n queried. If you are using this value to recover data, make sure to account\n for the time from the moment when the value is queried to the moment when\n you initiate the recovery.",
              "type": "string"
            },
            "etag": {
              "description": "This checksum is computed by the server based on the value of other fields, and may be sent on update and delete requests to ensure the client has an up-to-date value before proceeding.",
              "type": "string"
            },
            "keyPrefix": {
              "description": "Output only. The key_prefix for this database. This key_prefix is used, in\n combination with the project id (\"<key prefix>~<project id>\") to construct\n the application id that is returned from the Cloud Datastore APIs in Google\n App Engine first generation runtimes.\n\n This value may be empty in which case the appid to use for URL-encoded keys\n is the project_id (eg: foo instead of v~foo).",
              "type": "string"
            },
            "uid": {
              "description": "Output only. The system-generated UUID4 for this Database.",
              "type": "string"
            },
            "updateTime": {
              "description": "Output only. The timestamp at which this database was most recently updated. Note this only includes updates to the database resource and not data contained by the database.",
              "type": "string"
            },
            "versionRetentionPeriod": {
              "description": "Output only. The period during which past versions of data are retained in\n the database.\n\n Any [read][google.firestore.v1.GetDocumentRequest.read_time]\n or [query][google.firestore.v1.ListDocumentsRequest.read_time] can specify\n a `read_time` within this window, and will read the state of the database\n at that time.\n\n If the PITR feature is enabled, the retention period is 7 days. Otherwise,\n the retention period is 1 hour.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
