# Copyright 2025 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  annotations:
    cnrm.cloud.google.com/version: 1.128.0
  creationTimestamp: null
  labels:
    cnrm.cloud.google.com/managed-by-kcc: "true"
    cnrm.cloud.google.com/stability-level: stable
    cnrm.cloud.google.com/system: "true"
    cnrm.cloud.google.com/tf2crd: "true"
  name: bigquerytables.bigquery.cnrm.cloud.google.com
spec:
  group: bigquery.cnrm.cloud.google.com
  names:
    categories:
    - gcp
    kind: BigQueryTable
    plural: bigquerytables
    shortNames:
    - gcpbigquerytable
    - gcpbigquerytables
    singular: bigquerytable
  scope: Namespaced
  versions:
  - additionalPrinterColumns:
    - jsonPath: .metadata.creationTimestamp
      name: Age
      type: date
    - description: When 'True', the most recent reconcile of the resource succeeded
      jsonPath: .status.conditions[?(@.type=='Ready')].status
      name: Ready
      type: string
    - description: The reason for the value in 'Ready'
      jsonPath: .status.conditions[?(@.type=='Ready')].reason
      name: Status
      type: string
    - description: The last transition time for the value in 'Status'
      jsonPath: .status.conditions[?(@.type=='Ready')].lastTransitionTime
      name: Status Age
      type: date
    name: v1beta1
    schema:
      openAPIV3Schema:
        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/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/api-conventions.md#types-kinds'
            type: string
          metadata:
            type: object
          spec:
            properties:
              clustering:
                description: Specifies column names to use for data clustering. Up
                  to four top-level columns are allowed, and should be specified in
                  descending priority order.
                items:
                  type: string
                type: array
              datasetRef:
                oneOf:
                - not:
                    required:
                    - external
                  required:
                  - name
                - not:
                    anyOf:
                    - required:
                      - name
                    - required:
                      - namespace
                  required:
                  - external
                properties:
                  external:
                    description: 'Allowed value: The `name` field of a `BigQueryDataset`
                      resource.'
                    type: string
                  name:
                    description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                    type: string
                  namespace:
                    description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                    type: string
                type: object
              description:
                description: The field description.
                type: string
              encryptionConfiguration:
                description: Immutable. Specifies how the table should be encrypted.
                  If left blank, the table will be encrypted with a Google-managed
                  key; that process is transparent to the user.
                properties:
                  kmsKeyRef:
                    oneOf:
                    - not:
                        required:
                        - external
                      required:
                      - name
                    - not:
                        anyOf:
                        - required:
                          - name
                        - required:
                          - namespace
                      required:
                      - external
                    properties:
                      external:
                        description: 'Allowed value: The `selfLink` field of a `KMSCryptoKey`
                          resource.'
                        type: string
                      name:
                        description: 'Name of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names'
                        type: string
                      namespace:
                        description: 'Namespace of the referent. More info: https://kubernetes.io/docs/concepts/overview/working-with-objects/namespaces/'
                        type: string
                    type: object
                  kmsKeyVersion:
                    description: The self link or full name of the kms key version
                      used to encrypt this table.
                    type: string
                required:
                - kmsKeyRef
                type: object
              expirationTime:
                description: The time when this table expires, in milliseconds since
                  the epoch. If not present, the table will persist indefinitely.
                  Expired tables will be deleted and their storage reclaimed.
                type: integer
              externalDataConfiguration:
                description: Describes the data format, location, and other properties
                  of a table stored outside of BigQuery. By defining these properties,
                  the data source can then be queried as if it were a standard BigQuery
                  table.
                properties:
                  autodetect:
                    description: Let BigQuery try to autodetect the schema and format
                      of the table.
                    type: boolean
                  avroOptions:
                    description: Additional options if source_format is set to "AVRO".
                    properties:
                      useAvroLogicalTypes:
                        description: If sourceFormat is set to "AVRO", indicates whether
                          to interpret logical types as the corresponding BigQuery
                          data type (for example, TIMESTAMP), instead of using the
                          raw type (for example, INTEGER).
                        type: boolean
                    required:
                    - useAvroLogicalTypes
                    type: object
                  compression:
                    description: The compression type of the data source. Valid values
                      are "NONE" or "GZIP".
                    type: string
                  connectionId:
                    description: The connection specifying the credentials to be used
                      to read external storage, such as Azure Blob, Cloud Storage,
                      or S3. The connectionId can have the form "{{project}}.{{location}}.{{connection_id}}"
                      or "projects/{{project}}/locations/{{location}}/connections/{{connection_id}}".
                    type: string
                  csvOptions:
                    description: Additional properties to set if source_format is
                      set to "CSV".
                    properties:
                      allowJaggedRows:
                        description: Indicates if BigQuery should accept rows that
                          are missing trailing optional columns.
                        type: boolean
                      allowQuotedNewlines:
                        description: Indicates if BigQuery should allow quoted data
                          sections that contain newline characters in a CSV file.
                          The default value is false.
                        type: boolean
                      encoding:
                        description: The character encoding of the data. The supported
                          values are UTF-8 or ISO-8859-1.
                        type: string
                      fieldDelimiter:
                        description: The separator for fields in a CSV file.
                        type: string
                      quote:
                        type: string
                      skipLeadingRows:
                        description: The number of rows at the top of a CSV file that
                          BigQuery will skip when reading the data.
                        type: integer
                    required:
                    - quote
                    type: object
                  fileSetSpecType:
                    description: Specifies how source URIs are interpreted for constructing
                      the file set to load.  By default source URIs are expanded against
                      the underlying storage.  Other options include specifying manifest
                      files. Only applicable to object storage systems.
                    type: string
                  googleSheetsOptions:
                    description: Additional options if source_format is set to "GOOGLE_SHEETS".
                    properties:
                      range:
                        description: 'Range of a sheet to query from. Only used when
                          non-empty. At least one of range or skip_leading_rows must
                          be set. Typical format: "sheet_name!top_left_cell_id:bottom_right_cell_id"
                          For example: "sheet1!A1:B20".'
                        type: string
                      skipLeadingRows:
                        description: The number of rows at the top of the sheet that
                          BigQuery will skip when reading the data. At least one of
                          range or skip_leading_rows must be set.
                        type: integer
                    type: object
                  hivePartitioningOptions:
                    description: When set, configures hive partitioning support. Not
                      all storage formats support hive partitioning -- requesting
                      hive partitioning on an unsupported format will lead to an error,
                      as will providing an invalid specification.
                    properties:
                      mode:
                        description: When set, what mode of hive partitioning to use
                          when reading data.
                        type: string
                      requirePartitionFilter:
                        description: If set to true, queries over this table require
                          a partition filter that can be used for partition elimination
                          to be specified.
                        type: boolean
                      sourceUriPrefix:
                        description: When hive partition detection is requested, a
                          common for all source uris must be required. The prefix
                          must end immediately before the partition key encoding begins.
                        type: string
                    type: object
                  ignoreUnknownValues:
                    description: Indicates if BigQuery should allow extra values that
                      are not represented in the table schema. If true, the extra
                      values are ignored. If false, records with extra columns are
                      treated as bad records, and if there are too many bad records,
                      an invalid error is returned in the job result. The default
                      value is false.
                    type: boolean
                  jsonOptions:
                    description: Additional properties to set if sourceFormat is set
                      to JSON.".
                    properties:
                      encoding:
                        description: The character encoding of the data. The supported
                          values are UTF-8, UTF-16BE, UTF-16LE, UTF-32BE, and UTF-32LE.
                          The default value is UTF-8.
                        type: string
                    type: object
                  maxBadRecords:
                    description: The maximum number of bad records that BigQuery can
                      ignore when reading data.
                    type: integer
                  metadataCacheMode:
                    description: Metadata Cache Mode for the table. Set this to enable
                      caching of metadata from external data source.
                    type: string
                  objectMetadata:
                    description: Object Metadata is used to create Object Tables.
                      Object Tables contain a listing of objects (with their metadata)
                      found at the sourceUris. If ObjectMetadata is set, sourceFormat
                      should be omitted.
                    type: string
                  parquetOptions:
                    description: Additional properties to set if sourceFormat is set
                      to PARQUET.".
                    properties:
                      enableListInference:
                        description: Indicates whether to use schema inference specifically
                          for Parquet LIST logical type.
                        type: boolean
                      enumAsString:
                        description: Indicates whether to infer Parquet ENUM logical
                          type as STRING instead of BYTES by default.
                        type: boolean
                    type: object
                  referenceFileSchemaUri:
                    description: 'When creating an external table, the user can provide
                      a reference file with the table schema. This is enabled for
                      the following formats: AVRO, PARQUET, ORC.'
                    type: string
                  schema:
                    description: Immutable. A JSON schema for the external table.
                      Schema is required for CSV and JSON formats and is disallowed
                      for Google Cloud Bigtable, Cloud Datastore backups, and Avro
                      formats when using external tables.
                    type: string
                  sourceFormat:
                    description: ' Please see sourceFormat under ExternalDataConfiguration
                      in Bigquery''s public API documentation (https://cloud.google.com/bigquery/docs/reference/rest/v2/tables#externaldataconfiguration)
                      for supported formats. To use "GOOGLE_SHEETS" the scopes must
                      include "googleapis.com/auth/drive.readonly".'
                    type: string
                  sourceUris:
                    description: A list of the fully-qualified URIs that point to
                      your data in Google Cloud.
                    items:
                      type: string
                    type: array
                required:
                - autodetect
                - sourceUris
                type: object
              friendlyName:
                description: A descriptive name for the table.
                type: string
              materializedView:
                description: If specified, configures this table as a materialized
                  view.
                properties:
                  allowNonIncrementalDefinition:
                    description: Immutable. Allow non incremental materialized view
                      definition. The default value is false.
                    type: boolean
                  enableRefresh:
                    description: Specifies if BigQuery should automatically refresh
                      materialized view when the base table is updated. The default
                      is true.
                    type: boolean
                  query:
                    description: Immutable. A query whose result is persisted.
                    type: string
                  refreshIntervalMs:
                    description: Specifies maximum frequency at which this materialized
                      view will be refreshed. The default is 1800000.
                    type: integer
                required:
                - query
                type: object
              maxStaleness:
                description: The maximum staleness of data that could be returned
                  when the table (or stale MV) is queried. Staleness encoded as a
                  string encoding of sql IntervalValue type.
                type: string
              rangePartitioning:
                description: If specified, configures range-based partitioning for
                  this table.
                properties:
                  field:
                    description: Immutable. The field used to determine how to create
                      a range-based partition.
                    type: string
                  range:
                    description: Information required to partition based on ranges.
                      Structure is documented below.
                    properties:
                      end:
                        description: End of the range partitioning, exclusive.
                        type: integer
                      interval:
                        description: The width of each range within the partition.
                        type: integer
                      start:
                        description: Start of the range partitioning, inclusive.
                        type: integer
                    required:
                    - end
                    - interval
                    - start
                    type: object
                required:
                - field
                - range
                type: object
              requirePartitionFilter:
                description: If set to true, queries over this table require a partition
                  filter that can be used for partition elimination to be specified.
                type: boolean
              resourceID:
                description: Immutable. Optional. The tableId of the resource. Used
                  for creation and acquisition. When unset, the value of `metadata.name`
                  is used as the default.
                type: string
              schema:
                description: A JSON schema for the table.
                type: string
              tableConstraints:
                description: Defines the primary key and foreign keys.
                properties:
                  foreignKeys:
                    description: Present only if the table has a foreign key. The
                      foreign key is not enforced.
                    items:
                      properties:
                        columnReferences:
                          description: The pair of the foreign key column and primary
                            key column.
                          properties:
                            referencedColumn:
                              description: The column in the primary key that are
                                referenced by the referencingColumn.
                              type: string
                            referencingColumn:
                              description: The column that composes the foreign key.
                              type: string
                          required:
                          - referencedColumn
                          - referencingColumn
                          type: object
                        name:
                          description: Set only if the foreign key constraint is named.
                          type: string
                        referencedTable:
                          description: The table that holds the primary key and is
                            referenced by this foreign key.
                          properties:
                            datasetId:
                              description: The ID of the dataset containing this table.
                              type: string
                            projectId:
                              description: The ID of the project containing this table.
                              type: string
                            tableId:
                              description: The ID of the table. The ID must contain
                                only letters (a-z, A-Z), numbers (0-9), or underscores
                                (_). The maximum length is 1,024 characters. Certain
                                operations allow suffixing of the table ID with a
                                partition decorator, such as sample_table$20190123.
                              type: string
                          required:
                          - datasetId
                          - projectId
                          - tableId
                          type: object
                      required:
                      - columnReferences
                      - referencedTable
                      type: object
                    type: array
                  primaryKey:
                    description: Represents a primary key constraint on a table's
                      columns. Present only if the table has a primary key. The primary
                      key is not enforced.
                    properties:
                      columns:
                        description: The columns that are composed of the primary
                          key constraint.
                        items:
                          type: string
                        type: array
                    required:
                    - columns
                    type: object
                type: object
              timePartitioning:
                description: If specified, configures time-based partitioning for
                  this table.
                properties:
                  expirationMs:
                    description: Number of milliseconds for which to keep the storage
                      for a partition.
                    type: integer
                  field:
                    description: Immutable. The field used to determine how to create
                      a time-based partition. If time-based partitioning is enabled
                      without this value, the table is partitioned based on the load
                      time.
                    type: string
                  requirePartitionFilter:
                    description: DEPRECATED. This field is deprecated; please use
                      the top level field with the same name instead. If set to true,
                      queries over this table require a partition filter that can
                      be used for partition elimination to be specified.
                    type: boolean
                  type:
                    description: The supported types are DAY, HOUR, MONTH, and YEAR,
                      which will generate one partition per day, hour, month, and
                      year, respectively.
                    type: string
                required:
                - type
                type: object
              view:
                description: If specified, configures this table as a view.
                properties:
                  query:
                    description: A query that BigQuery executes when the view is referenced.
                    type: string
                  useLegacySql:
                    description: Specifies whether to use BigQuery's legacy SQL for
                      this view. The default value is true. If set to false, the view
                      will use BigQuery's standard SQL.
                    type: boolean
                required:
                - query
                type: object
            required:
            - datasetRef
            type: object
          status:
            properties:
              conditions:
                description: Conditions represent the latest available observation
                  of the resource'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
                type: array
              creationTime:
                description: The time when this table was created, in milliseconds
                  since the epoch.
                type: integer
              etag:
                description: A hash of the resource.
                type: string
              lastModifiedTime:
                description: The time when this table was last modified, in milliseconds
                  since the epoch.
                type: integer
              location:
                description: The geographic location where the table resides. This
                  value is inherited from the dataset.
                type: string
              numBytes:
                description: The geographic location where the table resides. This
                  value is inherited from the dataset.
                type: integer
              numLongTermBytes:
                description: The number of bytes in the table that are considered
                  "long-term storage".
                type: integer
              numRows:
                description: The number of rows of data in this table, excluding any
                  data in the streaming buffer.
                type: integer
              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.
                type: integer
              selfLink:
                description: The URI of the created resource.
                type: string
              type:
                description: Describes the table type.
                type: string
            type: object
        required:
        - spec
        type: object
    served: true
    storage: true
    subresources:
      status: {}
status:
  acceptedNames:
    kind: ""
    plural: ""
  conditions: []
  storedVersions: []
