{
  "description": "BigQueryAnalyticsHubListing is the Schema for the BigQueryAnalyticsHubListing 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": "BigQueryAnalyticsHubListingSpec defines the desired state of BigQueryAnalyticsHubDataExchangeListing",
      "properties": {
        "categories": {
          "description": "Optional. Categories of the listing. Up to two categories are allowed.",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "dataExchangeRef": {
          "description": "BigQueryAnalyticsHubDataExchangeRef defines the resource reference to BigQueryAnalyticsHubDataExchange, which \"External\" field holds the GCP identifier for the KRM object.",
          "oneOf": [
            {
              "not": {
                "required": [
                  "external"
                ]
              },
              "required": [
                "name"
              ]
            },
            {
              "not": {
                "anyOf": [
                  {
                    "required": [
                      "name"
                    ]
                  },
                  {
                    "required": [
                      "namespace"
                    ]
                  }
                ]
              },
              "required": [
                "external"
              ]
            }
          ],
          "properties": {
            "external": {
              "description": "A reference to an externally managed BigQueryAnalyticsHubDataExchange resource. Should be in the format \"projects/{{projectID}}/locations/{{location}}/dataexchanges/{{dataexchangeID}}\".",
              "type": "string"
            },
            "name": {
              "description": "The name of a BigQueryAnalyticsHubDataExchange resource.",
              "type": "string"
            },
            "namespace": {
              "description": "The namespace of a BigQueryAnalyticsHubDataExchange resource.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "dataProvider": {
          "description": "Optional. Details of the data provider who owns the source data.",
          "properties": {
            "name": {
              "description": "Optional. Name of the data provider.",
              "type": "string"
            },
            "primaryContact": {
              "description": "Optional. Email or URL of the data provider. Max Length: 1000 bytes.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "description": {
          "description": "Optional. Short description of the listing. The description must contain only Unicode characters or tabs  (HT), new lines (LF), carriage returns (CR), and page breaks (FF). Default value is an empty string. Max length: 2000 bytes.",
          "type": "string"
        },
        "discoveryType": {
          "description": "Optional. Type of discovery of the listing on the discovery page.",
          "type": "string"
        },
        "displayName": {
          "description": "Required. Human-readable display name of the listing. The display name must contain only Unicode letters, numbers (0-9), underscores (_), dashes (-), spaces ( ), ampersands (&) and can't start or end with spaces. Default value is an empty string. Max length: 63 bytes.",
          "type": "string"
        },
        "documentation": {
          "description": "Optional. Documentation describing the listing.",
          "type": "string"
        },
        "location": {
          "description": "Immutable. The name of the location this data exchange.",
          "type": "string"
        },
        "primaryContact": {
          "description": "Optional. Email or URL of the primary point of contact of the listing. Max Length: 1000 bytes.",
          "type": "string"
        },
        "projectRef": {
          "description": "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
        },
        "publisher": {
          "description": "Optional. Details of the publisher who owns the listing and who can share the source data.",
          "properties": {
            "name": {
              "description": "Optional. Name of the listing publisher.",
              "type": "string"
            },
            "primaryContact": {
              "description": "Optional. Email or URL of the listing publisher. Max Length: 1000 bytes.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        },
        "requestAccess": {
          "description": "Optional. Email or URL of the request access of the listing. Subscribers can use this reference to request access. Max Length: 1000 bytes.",
          "type": "string"
        },
        "resourceID": {
          "description": "Immutable. The BigQueryAnalyticsHubDataExchangeListing name. If not given, the metadata.name will be used.",
          "type": "string",
          "x-kubernetes-validations": [
            {
              "message": "ResourceID field is immutable",
              "rule": "self == oldSelf"
            }
          ]
        },
        "source": {
          "properties": {
            "bigQueryDatasetSource": {
              "description": "One of the following fields must be set.",
              "properties": {
                "datasetRef": {
                  "description": "Resource name of the dataset source for this listing. e.g. `projects/myproject/datasets/123`",
                  "oneOf": [
                    {
                      "not": {
                        "required": [
                          "external"
                        ]
                      },
                      "required": [
                        "name"
                      ]
                    },
                    {
                      "not": {
                        "anyOf": [
                          {
                            "required": [
                              "name"
                            ]
                          },
                          {
                            "required": [
                              "namespace"
                            ]
                          }
                        ]
                      },
                      "required": [
                        "external"
                      ]
                    }
                  ],
                  "properties": {
                    "external": {
                      "description": "A reference to an externally-managed BigQueryDataset resource. Should be in the format \"projects/{{projectID}}/datasets/{{datasetID}}\".",
                      "type": "string"
                    },
                    "name": {
                      "description": "The name of a BigQueryDataset resource.",
                      "type": "string"
                    },
                    "namespace": {
                      "description": "The namespace of a BigQueryDataset resource.",
                      "type": "string"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "restrictedExportPolicy": {
                  "description": "Optional. If set, restricted export policy will be propagated and enforced on the linked dataset.",
                  "properties": {
                    "enabled": {
                      "description": "Optional. If true, enable restricted export.",
                      "type": "boolean"
                    },
                    "restrictDirectTableAccess": {
                      "description": "Optional. If true, restrict direct table access (read api/tabledata.list) on linked table.",
                      "type": "boolean"
                    },
                    "restrictQueryResult": {
                      "description": "Optional. If true, restrict export of query result derived from restricted linked dataset table.",
                      "type": "boolean"
                    }
                  },
                  "type": "object",
                  "additionalProperties": false
                },
                "selectedResources": {
                  "description": "Optional. Resources in this dataset that are selectively shared. If this field is empty, then the entire dataset (all resources) are shared. This field is only valid for data clean room exchanges.",
                  "items": {
                    "properties": {
                      "tableRef": {
                        "description": "Optional. A reference to a BigQueryTable. Format: `projects/{projectId}/datasets/{datasetId}/tables/{tableId}` Example:\"projects/test_project/datasets/test_dataset/tables/test_table\"",
                        "oneOf": [
                          {
                            "not": {
                              "required": [
                                "external"
                              ]
                            },
                            "required": [
                              "name"
                            ]
                          },
                          {
                            "not": {
                              "anyOf": [
                                {
                                  "required": [
                                    "name"
                                  ]
                                },
                                {
                                  "required": [
                                    "namespace"
                                  ]
                                }
                              ]
                            },
                            "required": [
                              "external"
                            ]
                          }
                        ],
                        "properties": {
                          "external": {
                            "description": "A reference to an externally-managed BigQueryTable resource. Should be in the format \"projects/{{projectID}}/datasets/{{datasetsID}}/tables/{{tableID}}\".",
                            "type": "string"
                          },
                          "name": {
                            "description": "The name of a BigQueryTable resource.",
                            "type": "string"
                          },
                          "namespace": {
                            "description": "The namespace of a BigQueryTable resource.",
                            "type": "string"
                          }
                        },
                        "type": "object",
                        "additionalProperties": false
                      }
                    },
                    "type": "object",
                    "additionalProperties": false
                  },
                  "type": "array"
                }
              },
              "required": [
                "datasetRef"
              ],
              "type": "object",
              "additionalProperties": false
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "required": [
        "dataExchangeRef",
        "displayName",
        "location",
        "projectRef",
        "source"
      ],
      "type": "object",
      "additionalProperties": false
    },
    "status": {
      "description": "BigQueryAnalyticsHubListingStatus defines the config connector machine state of BigQueryAnalyticsHubDataExchangeListing",
      "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 BigQueryAnalyticsHubDataExchangeListing 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": {
            "state": {
              "description": "Output only. Current state of the listing.",
              "type": "string"
            }
          },
          "type": "object",
          "additionalProperties": false
        }
      },
      "type": "object",
      "additionalProperties": false
    }
  },
  "type": "object"
}
