{
  "description": "ApigeeInstance is the Schema for the ApigeeInstance 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": "ApigeeInstanceSpec defines the desired state of ApigeeInstance",
      "properties": {
        "accessLoggingConfig": {
          "description": "Optional. Access logging configuration enables the access logging feature at the instance. Apigee customers can enable access logging to ship the access logs to their own project's cloud logging.",
          "properties": {
            "enabled": {
              "description": "Optional. Boolean flag that specifies whether the customer access log feature is enabled.",
              "type": "boolean"
            },
            "filter": {
              "description": "Optional. Ship the access log entries that match the status_code defined in the filter. The status_code is the only expected/supported filter field. (Ex: status_code) The filter will parse it to the Common Expression Language semantics for expression evaluation to build the filter condition. (Ex: \"filter\": status_code >= 200 && status_code < 300 )",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "consumerAcceptList": {
          "description": "Optional. Customer accept list represents the list of projects (id/number) on customer side that can privately connect to the service attachment. It is an optional field which the customers can provide during the instance creation. By default, the customer project associated with the Apigee organization will be included to the list.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "description": {
          "description": "Optional. Description of the instance.",
          "type": "string"
        },
        "diskEncryptionKMSCryptoKeyRef": {
          "description": "Customer Managed Encryption Key (CMEK) used for disk and volume encryption. If not specified, a Google-Managed encryption key will be used.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "A reference to an externally managed KMSCryptoKey. Should be in the format `projects/[kms_project_id]/locations/[region]/keyRings/[key_ring_id]/cryptoKeys/[key]`.",
              "type": "string"
            },
            "name": {
              "description": "The `name` of a `KMSCryptoKey` resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The `namespace` of a `KMSCryptoKey` resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "displayName": {
          "description": "Optional. Display name for the instance.",
          "type": "string"
        },
        "ipRange": {
          "description": "Optional. Comma-separated list of CIDR blocks of length 22 and/or 28 used to create the Apigee instance. Providing CIDR ranges is optional. You can provide just /22 or /28 or both (or neither). Ranges you provide should be freely available as part of a larger named range you have allocated to the Service Networking peering. If this parameter is not provided, Apigee automatically requests an available /22 and /28 CIDR block from Service Networking. Use the /22 CIDR block for configuring your firewall needs to allow traffic from Apigee. Input formats: `a.b.c.d/22` or `e.f.g.h/28` or `a.b.c.d/22,e.f.g.h/28`",
          "type": "string"
        },
        "location": {
          "description": "Required. Compute Engine location where the instance resides.",
          "type": "string"
        },
        "organizationRef": {
          "description": "Reference to parent Apigee Organization.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "A reference to an externally managed ApigeeOrganization resource. Should be in the format \"organizations/{{organizationID}}\".",
              "type": "string"
            },
            "name": {
              "description": "The name of a ApigeeOrganization resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The namespace of a ApigeeOrganization resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "peeringCIDRRange": {
          "description": "Optional. Size of the CIDR block range that will be reserved by the instance. PAID organizations support `SLASH_16` to `SLASH_20` and defaults to `SLASH_16`. Evaluation organizations support only `SLASH_23`.",
          "type": "string"
        },
        "resourceID": {
          "description": "The ApigeeInstance name. If not given, the metadata.name will be used.",
          "type": "string"
        }
      },
      "required": [
        "location",
        "organizationRef"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "ApigeeInstanceStatus defines the config connector machine state of ApigeeInstance",
      "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 ApigeeInstance 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": {
            "createdAt": {
              "description": "Output only. Time the instance was created in milliseconds since epoch.",
              "format": "int64",
              "type": "integer"
            },
            "host": {
              "description": "Output only. Internal hostname or IP address of the Apigee endpoint used by clients to connect to the service.",
              "type": "string"
            },
            "lastModifiedAt": {
              "description": "Output only. Time the instance was last modified in milliseconds since epoch.",
              "format": "int64",
              "type": "integer"
            },
            "port": {
              "description": "Output only. Port number of the exposed Apigee endpoint.",
              "type": "string"
            },
            "runtimeVersion": {
              "description": "Output only. Version of the runtime system running in the instance. The runtime system is the set of components that serve the API Proxy traffic in your Environments.",
              "type": "string"
            },
            "serviceAttachment": {
              "description": "Output only. Resource name of the service attachment created for the instance in the format: `projects/{{project-id}}/regions/{{region-id}}/serviceAttachments/{{service-attachment-id}}` Apigee customers can privately forward traffic to this service attachment using the PSC endpoints.",
              "type": "string"
            },
            "state": {
              "description": "Output only. State of the instance. Values other than `ACTIVE` means the resource is not ready to use.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "required": [
    "spec"
  ],
  "type": "object"
}
