# frozen_string_literal: true

# Copyright 2024 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module Dataplex
      module V1
        # Aspect Type is a template for creating Aspects, and represents the
        # JSON-schema for a given Entry, e.g., BigQuery Table Schema.
        # @!attribute [r] name
        #   @return [::String]
        #     Output only. The relative resource name of the AspectType, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}/aspectTypes/\\{aspect_type_id}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. System generated globally unique ID for the AspectType. This
        #     ID will be different if the AspectType is deleted and re-created with the
        #     same name.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the AspectType was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the AspectType was last updated.
        # @!attribute [rw] description
        #   @return [::String]
        #     Optional. Description of the AspectType.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     Optional. User friendly display name.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. User-defined labels for the AspectType.
        # @!attribute [rw] etag
        #   @return [::String]
        #     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.
        # @!attribute [rw] authorization
        #   @return [::Google::Cloud::Dataplex::V1::AspectType::Authorization]
        #     Immutable. Authorization defined for this type.
        # @!attribute [rw] metadata_template
        #   @return [::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate]
        #     Required. MetadataTemplate of the aspect.
        # @!attribute [r] transfer_status
        #   @return [::Google::Cloud::Dataplex::V1::TransferStatus]
        #     Output only. Denotes the transfer status of the Aspect Type. It is
        #     unspecified for Aspect Types created from Dataplex API.
        class AspectType
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Autorization for an Aspect Type.
          # @!attribute [rw] alternate_use_permission
          #   @return [::String]
          #     Immutable. The IAM permission grantable on the Entry Group to allow
          #     access to instantiate Aspects of Dataplex owned Aspect Types, only
          #     settable for Dataplex owned Types.
          class Authorization
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # MetadataTemplate definition for AspectType
          # @!attribute [rw] index
          #   @return [::Integer]
          #     Optional. Index is used to encode Template messages. The value of index
          #     can range between 1 and 2,147,483,647. Index must be unique within all
          #     fields in a Template. (Nested Templates can reuse indexes). Once a
          #     Template is defined, the index cannot be changed, because it identifies
          #     the field in the actual storage format. Index is a mandatory field, but
          #     it is optional for top level fields, and map/array "values" definitions.
          # @!attribute [rw] name
          #   @return [::String]
          #     Required. The name of the field.
          # @!attribute [rw] type
          #   @return [::String]
          #     Required. The datatype of this field. The following values are supported:
          #     Primitive types (string, integer, boolean, double, datetime); datetime
          #     must be of the format RFC3339 UTC "Zulu" (Examples:
          #     "2014-10-02T15:01:23Z" and "2014-10-02T15:01:23.045123456Z"). Complex
          #     types (enum, array, map, record).
          # @!attribute [rw] record_fields
          #   @return [::Array<::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate>]
          #     Optional. Field definition, needs to be specified if the type is record.
          #     Defines the nested fields.
          # @!attribute [rw] enum_values
          #   @return [::Array<::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate::EnumValue>]
          #     Optional. The list of values for an enum type. Needs to be defined if the
          #     type is enum.
          # @!attribute [rw] map_items
          #   @return [::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate]
          #     Optional. map_items needs to be set if the type is map. map_items can
          #     refer to a primitive field or a complex (record only) field. To specify a
          #     primitive field, just name and type needs to be set in the nested
          #     MetadataTemplate. The recommended value for the name field is item, as
          #     this is not used in the actual payload.
          # @!attribute [rw] array_items
          #   @return [::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate]
          #     Optional. array_items needs to be set if the type is array. array_items
          #     can refer to a primitive field or a complex (record only) field. To
          #     specify a primitive field, just name and type needs to be set in the
          #     nested MetadataTemplate. The recommended value for the name field is
          #     item, as this is not used in the actual payload.
          # @!attribute [rw] type_id
          #   @return [::String]
          #     Optional. Id can be used if this definition of the field needs to be
          #     reused later. Id needs to be unique across the entire template. Id can
          #     only be specified if the field type is record.
          # @!attribute [rw] type_ref
          #   @return [::String]
          #     Optional. A reference to another field definition (instead of an inline
          #     definition). The value must be equal to the value of an id field defined
          #     elsewhere in the MetadataTemplate. Only fields with type as record can
          #     refer to other fields.
          # @!attribute [rw] constraints
          #   @return [::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate::Constraints]
          #     Optional. Specifies the constraints on this field.
          # @!attribute [rw] annotations
          #   @return [::Google::Cloud::Dataplex::V1::AspectType::MetadataTemplate::Annotations]
          #     Optional. Specifies annotations on this field.
          class MetadataTemplate
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # Definition of Enumvalue (to be used by enum fields)
            # @!attribute [rw] index
            #   @return [::Integer]
            #     Required. Index for the enum. Cannot be modified.
            # @!attribute [rw] name
            #   @return [::String]
            #     Required. Name of the enumvalue. This is the actual value that the
            #     aspect will contain.
            # @!attribute [rw] deprecated
            #   @return [::String]
            #     Optional. Optional deprecation message to be set if an enum value needs
            #     to be deprecated.
            class EnumValue
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Definition of the constraints of a field
            # @!attribute [rw] required
            #   @return [::Boolean]
            #     Optional. Marks this as an optional/required field.
            class Constraints
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # Definition of the annotations of a field
            # @!attribute [rw] deprecated
            #   @return [::String]
            #     Optional. Marks a field as deprecated, a deprecation message can be
            #     included.
            # @!attribute [rw] display_name
            #   @return [::String]
            #     Optional. Specify a displayname for a field.
            # @!attribute [rw] description
            #   @return [::String]
            #     Optional. Specify a description for a field
            # @!attribute [rw] display_order
            #   @return [::Integer]
            #     Optional. Specify a display order for a field. Display order can be
            #     used to reorder where a field is rendered
            # @!attribute [rw] string_type
            #   @return [::String]
            #     Optional. String Type annotations can be used to specify special
            #     meaning to string fields. The following values are supported: richText:
            #     The field must be interpreted as a rich text field. url: A fully
            #     qualified url link. resource: A service qualified resource reference.
            # @!attribute [rw] string_values
            #   @return [::Array<::String>]
            #     Optional. Suggested hints for string fields. These can be used to
            #     suggest values to users, through an UI for example.
            class Annotations
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # An Entry Group represents a logical grouping of one or more Entries.
        # @!attribute [r] name
        #   @return [::String]
        #     Output only. The relative resource name of the EntryGroup, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}/entryGroups/\\{entry_group_id}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. System generated globally unique ID for the EntryGroup. This
        #     ID will be different if the EntryGroup is deleted and re-created with the
        #     same name.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the EntryGroup was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the EntryGroup was last updated.
        # @!attribute [rw] description
        #   @return [::String]
        #     Optional. Description of the EntryGroup.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     Optional. User friendly display name.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. User-defined labels for the EntryGroup.
        # @!attribute [rw] etag
        #   @return [::String]
        #     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.
        # @!attribute [r] transfer_status
        #   @return [::Google::Cloud::Dataplex::V1::TransferStatus]
        #     Output only. Denotes the transfer status of the Entry Group. It is
        #     unspecified for Entry Group created from Dataplex API.
        class EntryGroup
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Entry Type is a template for creating Entries.
        # @!attribute [r] name
        #   @return [::String]
        #     Output only. The relative resource name of the EntryType, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}/entryTypes/\\{entry_type_id}.
        # @!attribute [r] uid
        #   @return [::String]
        #     Output only. System generated globally unique ID for the EntryType. This ID
        #     will be different if the EntryType is deleted and re-created with the same
        #     name.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the EntryType was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the EntryType was last updated.
        # @!attribute [rw] description
        #   @return [::String]
        #     Optional. Description of the EntryType.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     Optional. User friendly display name.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     Optional. User-defined labels for the EntryType.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. 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.
        # @!attribute [rw] type_aliases
        #   @return [::Array<::String>]
        #     Optional. Indicates the class this Entry Type belongs to, for example,
        #     TABLE, DATABASE, MODEL.
        # @!attribute [rw] platform
        #   @return [::String]
        #     Optional. The platform that Entries of this type belongs to.
        # @!attribute [rw] system
        #   @return [::String]
        #     Optional. The system that Entries of this type belongs to. Examples include
        #     CloudSQL, MariaDB etc
        # @!attribute [rw] required_aspects
        #   @return [::Array<::Google::Cloud::Dataplex::V1::EntryType::AspectInfo>]
        #     AspectInfo for the entry type.
        # @!attribute [rw] authorization
        #   @return [::Google::Cloud::Dataplex::V1::EntryType::Authorization]
        #     Immutable. Authorization defined for this type.
        class EntryType
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] type
          #   @return [::String]
          #     Required aspect type for the entry type.
          class AspectInfo
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # Authorization for an Entry Type.
          # @!attribute [rw] alternate_use_permission
          #   @return [::String]
          #     Immutable. The IAM permission grantable on the Entry Group to allow
          #     access to instantiate Entries of Dataplex owned Entry Types, only
          #     settable for Dataplex owned Types.
          class Authorization
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # An aspect is a single piece of metadata describing an entry.
        # @!attribute [r] aspect_type
        #   @return [::String]
        #     Output only. The resource name of the type used to create this Aspect.
        # @!attribute [r] path
        #   @return [::String]
        #     Output only. The path in the entry under which the aspect is attached.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the Aspect was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the Aspect was last updated.
        # @!attribute [rw] data
        #   @return [::Google::Protobuf::Struct]
        #     Required. The content of the aspect, according to its aspect type schema.
        #     This will replace `content`.
        #     The maximum size of the field is 120KB (encoded as UTF-8).
        # @!attribute [rw] aspect_source
        #   @return [::Google::Cloud::Dataplex::V1::AspectSource]
        class Aspect
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # AspectSource contains source system related information for the
        # aspect.
        # @!attribute [rw] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The create time of the aspect in the source system.
        # @!attribute [rw] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The update time of the aspect in the source system.
        class AspectSource
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # An entry is a representation of a data asset which can be described by
        # various metadata.
        # @!attribute [rw] name
        #   @return [::String]
        #     Identifier. The relative resource name of the Entry, of the form:
        #     projects/\\{project}/locations/\\{location}/entryGroups/\\{entry_group}/entries/\\{entry}.
        # @!attribute [rw] entry_type
        #   @return [::String]
        #     Required. Immutable. The resource name of the EntryType used to create this
        #     Entry.
        # @!attribute [r] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the Entry was created.
        # @!attribute [r] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     Output only. The time when the Entry was last updated.
        # @!attribute [rw] aspects
        #   @return [::Google::Protobuf::Map{::String => ::Google::Cloud::Dataplex::V1::Aspect}]
        #     Optional. The Aspects attached to the Entry.
        #     The format for the key can be one of the following:
        #     1. \\{projectId}.\\{locationId}.\\{aspectTypeId} (if the aspect is attached
        #     directly to the entry)
        #     2. \\{projectId}.\\{locationId}.\\{aspectTypeId}@\\{path} (if the aspect is
        #     attached to an entry's path)
        # @!attribute [rw] parent_entry
        #   @return [::String]
        #     Optional. Immutable. The resource name of the parent entry.
        # @!attribute [rw] fully_qualified_name
        #   @return [::String]
        #     Optional. A name for the entry that can reference it in an external system.
        #     The maximum size of the field is 4000 characters.
        # @!attribute [rw] entry_source
        #   @return [::Google::Cloud::Dataplex::V1::EntrySource]
        #     Optional. Source system related information for an entry.
        class Entry
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::Google::Cloud::Dataplex::V1::Aspect]
          class AspectsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # EntrySource contains source system related information for the
        # entry.
        # @!attribute [rw] resource
        #   @return [::String]
        #     The name of the resource in the source system.
        #     The maximum size of the field is 4000 characters.
        # @!attribute [rw] system
        #   @return [::String]
        #     The name of the source system.
        #     The maximum size of the field is 64 characters.
        # @!attribute [rw] platform
        #   @return [::String]
        #     The platform containing the source system.
        #     The maximum size of the field is 64 characters.
        # @!attribute [rw] display_name
        #   @return [::String]
        #     User friendly display name.
        #     The maximum size of the field is 500 characters.
        # @!attribute [rw] description
        #   @return [::String]
        #     Description of the Entry.
        #     The maximum size of the field is 2000 characters.
        # @!attribute [rw] labels
        #   @return [::Google::Protobuf::Map{::String => ::String}]
        #     User-defined labels.
        #     The maximum size of keys and values is 128 characters each.
        # @!attribute [rw] ancestors
        #   @return [::Array<::Google::Cloud::Dataplex::V1::EntrySource::Ancestor>]
        #     Immutable. The ancestors of the Entry in the source system.
        # @!attribute [rw] create_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The create time of the resource in the source system.
        # @!attribute [rw] update_time
        #   @return [::Google::Protobuf::Timestamp]
        #     The update time of the resource in the source system.
        # @!attribute [r] location
        #   @return [::String]
        #     Output only. Location of the resource in the source system. Entry will be
        #     searchable by this location. By default, this should match the location of
        #     the EntryGroup containing this entry. A different value allows capturing
        #     source location for data external to GCP.
        class EntrySource
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Ancestor contains information about individual items in the hierarchy of
          # an Entry.
          # @!attribute [rw] name
          #   @return [::String]
          #     Optional. The name of the ancestor resource.
          # @!attribute [rw] type
          #   @return [::String]
          #     Optional. The type of the ancestor resource.
          class Ancestor
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end

          # @!attribute [rw] key
          #   @return [::String]
          # @!attribute [rw] value
          #   @return [::String]
          class LabelsEntry
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # Create EntryGroup Request
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the entryGroup, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] entry_group_id
        #   @return [::String]
        #     Required. EntryGroup identifier.
        # @!attribute [rw] entry_group
        #   @return [::Google::Cloud::Dataplex::V1::EntryGroup]
        #     Required. EntryGroup Resource
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class CreateEntryGroupRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Update EntryGroup Request
        # @!attribute [rw] entry_group
        #   @return [::Google::Cloud::Dataplex::V1::EntryGroup]
        #     Required. EntryGroup Resource
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Mask of fields to update.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class UpdateEntryGroupRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Delele EntryGroup Request
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the EntryGroup:
        #     `projects/{project_number}/locations/{location_id}/entryGroups/{entry_group_id}`.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. If the client provided etag value does not match the current etag
        #     value, the DeleteEntryGroupRequest method returns an ABORTED error response
        class DeleteEntryGroupRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List entryGroups request.
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the entryGroup location, of the form:
        #     `projects/{project_number}/locations/{location_id}`
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. Maximum number of EntryGroups to return. The service may return
        #     fewer than this value. If unspecified, at most 10 EntryGroups will be
        #     returned. The maximum value is 1000; values above 1000 will be coerced to
        #     1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. Page token received from a previous `ListEntryGroups` call.
        #     Provide this to retrieve the subsequent page. When paginating, all other
        #     parameters provided to `ListEntryGroups` must match the call that provided
        #     the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter request.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Order by fields for the result.
        class ListEntryGroupsRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List ListEntryGroups response.
        # @!attribute [rw] entry_groups
        #   @return [::Array<::Google::Cloud::Dataplex::V1::EntryGroup>]
        #     ListEntryGroups under the given parent location.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Token to retrieve the next page of results, or empty if there are no more
        #     results in the list.
        # @!attribute [rw] unreachable_locations
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListEntryGroupsResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Get EntryGroup request.
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the EntryGroup:
        #     `projects/{project_number}/locations/{location_id}/entryGroups/{entry_group_id}`.
        class GetEntryGroupRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Create EntryType Request
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the EntryType, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] entry_type_id
        #   @return [::String]
        #     Required. EntryType identifier.
        # @!attribute [rw] entry_type
        #   @return [::Google::Cloud::Dataplex::V1::EntryType]
        #     Required. EntryType Resource
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class CreateEntryTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Update EntryType Request
        # @!attribute [rw] entry_type
        #   @return [::Google::Cloud::Dataplex::V1::EntryType]
        #     Required. EntryType Resource
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Mask of fields to update.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class UpdateEntryTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Delele EntryType Request
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the EntryType:
        #     `projects/{project_number}/locations/{location_id}/entryTypes/{entry_type_id}`.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. If the client provided etag value does not match the current etag
        #     value, the DeleteEntryTypeRequest method returns an ABORTED error response
        class DeleteEntryTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List EntryTypes request
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the EntryType location, of the form:
        #     `projects/{project_number}/locations/{location_id}`
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. Maximum number of EntryTypes to return. The service may return
        #     fewer than this value. If unspecified, at most 10 EntryTypes will be
        #     returned. The maximum value is 1000; values above 1000 will be coerced to
        #     1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. Page token received from a previous `ListEntryTypes` call.
        #     Provide this to retrieve the subsequent page. When paginating, all other
        #     parameters provided to `ListEntryTypes` must match the call that provided
        #     the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter request. Filters are case-sensitive.
        #     The following formats are supported:
        #
        #     labels.key1 = "value1"
        #     labels:key1
        #     name = "value"
        #     These restrictions can be coinjoined with AND, OR and NOT conjunctions.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Order by fields (`name` or `create_time`) for the result.
        #     If not specified, the ordering is undefined.
        class ListEntryTypesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List EntryTypes response
        # @!attribute [rw] entry_types
        #   @return [::Array<::Google::Cloud::Dataplex::V1::EntryType>]
        #     ListEntryTypes under the given parent location.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Token to retrieve the next page of results, or empty if there are no more
        #     results in the list.
        # @!attribute [rw] unreachable_locations
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListEntryTypesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Get EntryType request
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the EntryType:
        #     `projects/{project_number}/locations/{location_id}/entryTypes/{entry_type_id}`.
        class GetEntryTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Create AspectType Request
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the AspectType, of the form:
        #     projects/\\{project_number}/locations/\\{location_id}
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] aspect_type_id
        #   @return [::String]
        #     Required. AspectType identifier.
        # @!attribute [rw] aspect_type
        #   @return [::Google::Cloud::Dataplex::V1::AspectType]
        #     Required. AspectType Resource
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class CreateAspectTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Update AspectType Request
        # @!attribute [rw] aspect_type
        #   @return [::Google::Cloud::Dataplex::V1::AspectType]
        #     Required. AspectType Resource
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Required. Mask of fields to update.
        # @!attribute [rw] validate_only
        #   @return [::Boolean]
        #     Optional. Only validate the request, but do not perform mutations.
        #     The default is false.
        class UpdateAspectTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Delele AspectType Request
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the AspectType:
        #     `projects/{project_number}/locations/{location_id}/aspectTypes/{aspect_type_id}`.
        # @!attribute [rw] etag
        #   @return [::String]
        #     Optional. If the client provided etag value does not match the current etag
        #     value, the DeleteAspectTypeRequest method returns an ABORTED error response
        class DeleteAspectTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List AspectTypes request
        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the AspectType location, of the form:
        #     `projects/{project_number}/locations/{location_id}`
        #     where `location_id` refers to a GCP region.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. Maximum number of AspectTypes to return. The service may return
        #     fewer than this value. If unspecified, at most 10 AspectTypes will be
        #     returned. The maximum value is 1000; values above 1000 will be coerced to
        #     1000.
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. Page token received from a previous `ListAspectTypes` call.
        #     Provide this to retrieve the subsequent page. When paginating, all other
        #     parameters provided to `ListAspectTypes` must match the call that provided
        #     the page token.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. Filter request. Filters are case-sensitive.
        #     The following formats are supported:
        #
        #     labels.key1 = "value1"
        #     labels:key1
        #     name = "value"
        #     These restrictions can be coinjoined with AND, OR and NOT conjunctions.
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Order by fields (`name` or `create_time`) for the result.
        #     If not specified, the ordering is undefined.
        class ListAspectTypesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # List AspectTypes response
        # @!attribute [rw] aspect_types
        #   @return [::Array<::Google::Cloud::Dataplex::V1::AspectType>]
        #     ListAspectTypes under the given parent location.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Token to retrieve the next page of results, or empty if there are no more
        #     results in the list.
        # @!attribute [rw] unreachable_locations
        #   @return [::Array<::String>]
        #     Locations that could not be reached.
        class ListAspectTypesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Get AspectType request
        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the AspectType:
        #     `projects/{project_number}/locations/{location_id}/aspectTypes/{aspect_type_id}`.
        class GetAspectTypeRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the parent Entry Group:
        #     `projects/{project}/locations/{location}/entryGroups/{entry_group}`.
        # @!attribute [rw] entry_id
        #   @return [::String]
        #     Required. Entry identifier. It has to be unique within an Entry Group.
        #
        #     Entries corresponding to Google Cloud resources use Entry ID format based
        #     on Full Resource Names
        #     (https://cloud.google.com/apis/design/resource_names#full_resource_name).
        #     The format is a Full Resource Name of the resource without the
        #     prefix double slashes in the API Service Name part of Full Resource Name.
        #     This allows retrieval of entries using their associated resource name.
        #
        #     For example if the Full Resource Name of a resource is
        #     `//library.googleapis.com/shelves/shelf1/books/book2`,
        #     then the suggested entry_id is
        #     `library.googleapis.com/shelves/shelf1/books/book2`.
        #
        #     It is also suggested to follow the same convention for entries
        #     corresponding to resources from other providers or systems than Google
        #     Cloud.
        #
        #     The maximum size of the field is 4000 characters.
        # @!attribute [rw] entry
        #   @return [::Google::Cloud::Dataplex::V1::Entry]
        #     Required. Entry resource.
        class CreateEntryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] entry
        #   @return [::Google::Cloud::Dataplex::V1::Entry]
        #     Required. Entry resource.
        # @!attribute [rw] update_mask
        #   @return [::Google::Protobuf::FieldMask]
        #     Optional. Mask of fields to update. To update Aspects, the update_mask must
        #     contain the value "aspects".
        #
        #     If the update_mask is empty, all modifiable fields present in the request
        #     will be updated.
        # @!attribute [rw] allow_missing
        #   @return [::Boolean]
        #     Optional. If set to true and the entry does not exist, it will be created.
        # @!attribute [rw] delete_missing_aspects
        #   @return [::Boolean]
        #     Optional. If set to true and the aspect_keys specify aspect ranges, any
        #     existing aspects from that range not provided in the request will be
        #     deleted.
        # @!attribute [rw] aspect_keys
        #   @return [::Array<::String>]
        #     Optional. The map keys of the Aspects which should be modified. Supports
        #     the following syntaxes:
        #     * <aspect_type_reference> - matches aspect on given type and empty path
        #     * <aspect_type_reference>@path - matches aspect on given type and specified
        #     path
        #     * <aspect_type_reference>* - matches aspects on given type for all paths
        #     * *@path - matches aspects of all types on the given path
        #
        #     Existing aspects matching the syntax will not be removed unless
        #     `delete_missing_aspects` is set to true.
        #
        #     If this field is left empty, it will be treated as specifying exactly those
        #     Aspects present in the request.
        class UpdateEntryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the Entry:
        #     `projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}`.
        class DeleteEntryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] parent
        #   @return [::String]
        #     Required. The resource name of the parent Entry Group:
        #     `projects/{project}/locations/{location}/entryGroups/{entry_group}`.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        # @!attribute [rw] page_token
        #   @return [::String]
        #     Optional. The pagination token returned by a previous request.
        # @!attribute [rw] filter
        #   @return [::String]
        #     Optional. A filter on the entries to return.
        #     Filters are case-sensitive.
        #     The request can be filtered by the following fields:
        #     entry_type, entry_source.display_name.
        #     The comparison operators are =, !=, <, >, <=, >= (strings are compared
        #     according to lexical order)
        #     The logical operators AND, OR, NOT can be used
        #     in the filter. Wildcard "*" can be used, but for entry_type the full
        #     project id or number needs to be provided. Example filter expressions:
        #     "entry_source.display_name=AnExampleDisplayName"
        #     "entry_type=projects/example-project/locations/global/entryTypes/example-entry_type"
        #     "entry_type=projects/example-project/locations/us/entryTypes/a* OR
        #      entry_type=projects/another-project/locations/*"
        #     "NOT entry_source.display_name=AnotherExampleDisplayName"
        class ListEntriesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] entries
        #   @return [::Array<::Google::Cloud::Dataplex::V1::Entry>]
        #     The list of entries.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Pagination token.
        class ListEntriesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The resource name of the Entry:
        #     `projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}`.
        # @!attribute [rw] view
        #   @return [::Google::Cloud::Dataplex::V1::EntryView]
        #     Optional. View for controlling which parts of an entry are to be returned.
        # @!attribute [rw] aspect_types
        #   @return [::Array<::String>]
        #     Optional. Limits the aspects returned to the provided aspect types.
        #     Only works if the CUSTOM view is selected.
        # @!attribute [rw] paths
        #   @return [::Array<::String>]
        #     Optional. Limits the aspects returned to those associated with the provided
        #     paths within the Entry. Only works if the CUSTOM view is selected.
        class GetEntryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The project to which the request should be attributed in the
        #     following form: `projects/{project}/locations/{location}`.
        # @!attribute [rw] view
        #   @return [::Google::Cloud::Dataplex::V1::EntryView]
        #     Optional. View for controlling which parts of an entry are to be returned.
        # @!attribute [rw] aspect_types
        #   @return [::Array<::String>]
        #     Optional. Limits the aspects returned to the provided aspect types.
        #     Only works if the CUSTOM view is selected.
        # @!attribute [rw] paths
        #   @return [::Array<::String>]
        #     Optional. Limits the aspects returned to those associated with the provided
        #     paths within the Entry. Only works if the CUSTOM view is selected.
        # @!attribute [rw] entry
        #   @return [::String]
        #     Required. The resource name of the Entry:
        #     `projects/{project}/locations/{location}/entryGroups/{entry_group}/entries/{entry}`.
        class LookupEntryRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # @!attribute [rw] name
        #   @return [::String]
        #     Required. The project to which the request should be attributed in the
        #     following form: `projects/{project}/locations/{location}`.
        # @!attribute [rw] query
        #   @return [::String]
        #     Required. The query against which entries in scope should be matched.
        # @!attribute [rw] page_size
        #   @return [::Integer]
        #     Optional. Pagination.
        # @!attribute [rw] page_token
        #   @return [::String]
        # @!attribute [rw] order_by
        #   @return [::String]
        #     Optional. Ordering of the results. Supported options to be added later.
        # @!attribute [rw] scope
        #   @return [::String]
        #     Optional. The scope under which the search should be operating. Should
        #     either be organizations/<org_id> or projects/<project_ref>. If left
        #     unspecified, it will default to the organization where the project provided
        #     in `name` is located.
        class SearchEntriesRequest
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # A single result of a SearchEntries request.
        # @!attribute [rw] linked_resource
        #   @deprecated This field is deprecated and may be removed in the next major version update.
        #   @return [::String]
        #     Linked resource name.
        # @!attribute [rw] dataplex_entry
        #   @return [::Google::Cloud::Dataplex::V1::Entry]
        # @!attribute [rw] snippets
        #   @deprecated This field is deprecated and may be removed in the next major version update.
        #   @return [::Google::Cloud::Dataplex::V1::SearchEntriesResult::Snippets]
        #     Snippets.
        class SearchEntriesResult
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Snippets for the entry, contains HTML-style highlighting for
          # matched tokens, will be used in UI.
          # @deprecated This message is deprecated and may be removed in the next major version update.
          # @!attribute [rw] dataplex_entry
          #   @deprecated This field is deprecated and may be removed in the next major version update.
          #   @return [::Google::Cloud::Dataplex::V1::Entry]
          #     Entry
          class Snippets
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end

        # @!attribute [rw] results
        #   @return [::Array<::Google::Cloud::Dataplex::V1::SearchEntriesResult>]
        #     The results matching the search query.
        # @!attribute [rw] total_size
        #   @return [::Integer]
        #     The estimated total number of matching entries. Not guaranteed to be
        #     accurate.
        # @!attribute [rw] next_page_token
        #   @return [::String]
        #     Pagination token.
        # @!attribute [rw] unreachable
        #   @return [::Array<::String>]
        #     Unreachable locations. Search results don't include data from those
        #     locations.
        class SearchEntriesResponse
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # View for controlling which parts of an entry are to be returned.
        module EntryView
          # Unspecified EntryView. Defaults to FULL.
          ENTRY_VIEW_UNSPECIFIED = 0

          # Returns entry only, without aspects.
          BASIC = 1

          # Returns all required aspects as well as the keys of all non-required
          # aspects.
          FULL = 2

          # Returns aspects matching custom fields in GetEntryRequest. If the number of
          # aspects would exceed 100, the first 100 will be returned.
          CUSTOM = 3

          # Returns all aspects. If the number of aspects would exceed 100, the first
          # 100 will be returned.
          ALL = 4
        end

        # Denotes the transfer status of a resource. It is unspecified for resources
        # created from Dataplex API.
        module TransferStatus
          # The default value. It is set for resources that were not subject for
          # migration from Data Catalog service.
          TRANSFER_STATUS_UNSPECIFIED = 0

          # Indicates that a resource was migrated from Data Catalog service but it
          # hasn't been transferred yet. In particular the resource cannot be updated
          # from Dataplex API.
          TRANSFER_STATUS_MIGRATED = 1

          # Indicates that a resource was transferred from Data Catalog service. The
          # resource can only be updated from Dataplex API.
          TRANSFER_STATUS_TRANSFERRED = 2
        end
      end
    end
  end
end