cified when you are routing logs to a log bucket that is
            in a different project than the sink. When not specified, a
            Logging service account will automatically be generated.
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    sink: 'LogSink' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='LogSink',
    )
    unique_writer_identity: bool = proto.Field(
        proto.BOOL,
        number=3,
    )
    custom_writer_identity: str = proto.Field(
        proto.STRING,
        number=4,
    )


class UpdateSinkRequest(proto.Message):
    r"""The parameters to ``UpdateSink``.

    Attributes:
        sink_name (str):
            Required. The full resource name of the sink to update,
            including the parent resource and the sink identifier:

            ::

                "projects/[PROJECT_ID]/sinks/[SINK_ID]"
                "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
                "folders/[FOLDER_ID]/sinks/[SINK_ID]"

            For example:

            ``"projects/my-project/sinks/my-sink"``
        sink (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.LogSink):
            Required. The updated sink, whose name is the same
            identifier that appears as part of ``sink_name``.
        unique_writer_identity (bool):
            Optional. See
            [sinks.create][google.logging.v2.ConfigServiceV2.CreateSink]
            for a description of this field. When updating a sink, the
            effect of this field on the value of ``writer_identity`` in
            the updated sink depends on both the old and new values of
            this field:

            -  If the old and new values of this field are both false or
               both true, then there is no change to the sink's
               ``writer_identity``.
            -  If the old value is false and the new value is true, then
               ``writer_identity`` is changed to a `service
               agent <https://cloud.google.com/iam/docs/service-account-types#service-agents>`__
               owned by Cloud Logging.
            -  It is an error if the old value is true and the new value
               is set to false or defaulted to false.
        custom_writer_identity (str):
            Optional. The service account provided by the caller that
            will be used to write the log entries. The format must be
            ``serviceAccount:some@email``. This field can only be
            specified when you are routing logs to a log bucket that is
            in a different project than the sink. When not specified, a
            Logging service account will automatically be generated.
        update_mask (google.protobuf.field_mask_pb2.FieldMask):
            Optional. Field mask that specifies the fields in ``sink``
            that need an update. A sink field will be overwritten if,
            and only if, it is in the update mask. ``name`` and output
            only fields cannot be updated.

            An empty ``updateMask`` is temporarily treated as using the
            following mask for backwards compatibility purposes:

            ``destination,filter,includeChildren``

            At some point in the future, behavior will be removed and
            specifying an empty ``updateMask`` will be an error.

            For a detailed ``FieldMask`` definition, see
            https://developers.google.com/protocol-buffers/docs/reference/google.protobuf#google.protobuf.FieldMask

            For example: ``updateMask=filter``
    """

    sink_name: str = proto.Field(
        proto.STRING,
        number=1,
    )
    sink: 'LogSink' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='LogSink',
    )
    unique_writer_identity: bool = proto.Field(
        proto.BOOL,
        number=3,
    )
    custom_writer_identity: str = proto.Field(
        proto.STRING,
        number=5,
    )
    update_mask: field_mask_pb2.FieldMask = proto.Field(
        proto.MESSAGE,
        number=4,
        message=field_mask_pb2.FieldMask,
    )


class DeleteSinkRequest(proto.Message):
    r"""The parameters to ``DeleteSink``.

    Attributes:
        sink_name (str):
            Required. The full resource name of the sink to delete,
            including the parent resource and the sink identifier:

            ::

                "projects/[PROJECT_ID]/sinks/[SINK_ID]"
                "organizations/[ORGANIZATION_ID]/sinks/[SINK_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/sinks/[SINK_ID]"
                "folders/[FOLDER_ID]/sinks/[SINK_ID]"

            For example:

            ``"projects/my-project/sinks/my-sink"``
    """

    sink_name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class ListLinksRequest(proto.Message):
    r"""The parameters to ListLinks.

    Attributes:
        parent (str):
            Required. The parent resource whose links are to be listed:

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]".
        page_token (str):
            Optional. If present, then retrieve the next batch of
            results from the preceding call to this method.
            ``pageToken`` must be the value of ``nextPageToken`` from
            the previous response.
        page_size (int):
            Optional. The maximum number of results to
            return from this request.
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )
    page_size: int = proto.Field(
        proto.INT32,
        number=3,
    )


class ListLinksResponse(proto.Message):
    r"""The response from ListLinks.

    Attributes:
        links (MutableSequence[googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.Link]):
            A list of links.
        next_page_token (str):
            If there might be more results than those appearing in this
            response, then ``nextPageToken`` is included. To get the
            next set of results, call the same method again using the
            value of ``nextPageToken`` as ``pageToken``.
    """

    @property
    def raw_page(self):
        return self

    links: MutableSequence['Link'] = proto.RepeatedField(
        proto.MESSAGE,
        number=1,
        message='Link',
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )


class GetLinkRequest(proto.Message):
    r"""The parameters to GetLink.

    Attributes:
        name (str):
            Required. The resource name of the link:

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]".
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class CreateLinkRequest(proto.Message):
    r"""The parameters to CreateLink.

    Attributes:
        parent (str):
            Required. The full resource name of the bucket to create a
            link for.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]".
        link (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.Link):
            Required. The new link.
        link_id (str):
            Required. The ID to use for the link. The link_id can have
            up to 100 characters. A valid link_id must only have
            alphanumeric characters and underscores within it.
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    link: 'Link' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='Link',
    )
    link_id: str = proto.Field(
        proto.STRING,
        number=3,
    )


class DeleteLinkRequest(proto.Message):
    r"""The parameters to DeleteLink.

    Attributes:
        name (str):
            Required. The full resource name of the link to delete.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/buckets/[BUCKET_ID]/links/[LINK_ID]".
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class GetCmekSettingsRequest(proto.Message):
    r"""The parameters to
    [GetCmekSettings][google.logging.v2.ConfigServiceV2.GetCmekSettings].

    See `Enabling CMEK for Log
    Router <https://cloud.google.com/logging/docs/routing/managed-encryption>`__
    for more information.

    Attributes:
        name (str):
            Required. The resource for which to retrieve CMEK settings.

            ::

                "projects/[PROJECT_ID]/cmekSettings"
                "organizations/[ORGANIZATION_ID]/cmekSettings"
                "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
                "folders/[FOLDER_ID]/cmekSettings"

            For example:

            ``"organizations/12345/cmekSettings"``

            Note: CMEK for the Log Router can be configured for Google
            Cloud projects, folders, organizations, and billing
            accounts. Once configured for an organization, it applies to
            all projects and folders in the Google Cloud organization.
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class UpdateCmekSettingsRequest(proto.Message):
    r"""The parameters to
    [UpdateCmekSettings][google.logging.v2.ConfigServiceV2.UpdateCmekSettings].

    See `Enabling CMEK for Log
    Router <https://cloud.google.com/logging/docs/routing/managed-encryption>`__
    for more information.

    Attributes:
        name (str):
            Required. The resource name for the CMEK settings to update.

            ::

                "projects/[PROJECT_ID]/cmekSettings"
                "organizations/[ORGANIZATION_ID]/cmekSettings"
                "billingAccounts/[BILLING_ACCOUNT_ID]/cmekSettings"
                "folders/[FOLDER_ID]/cmekSettings"

            For example:

            ``"organizations/12345/cmekSettings"``

            Note: CMEK for the Log Router can currently only be
            configured for Google Cloud organizations. Once configured,
            it applies to all projects and folders in the Google Cloud
            organization.
        cmek_settings (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.CmekSettings):
            Required. The CMEK settings to update.

            See `Enabling CMEK for Log
            Router <https://cloud.google.com/logging/docs/routing/managed-encryption>`__
            for more information.
        update_mask (google.protobuf.field_mask_pb2.FieldMask):
            Optional. Field mask identifying which fields from
            ``cmek_settings`` should be updated. A field will be
            overwritten if and only if it is in the update mask. Output
            only fields cannot be updated.

            See [FieldMask][google.protobuf.FieldMask] for more
            information.

            For example: ``"updateMask=kmsKeyName"``
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )
    cmek_settings: 'CmekSettings' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='CmekSettings',
    )
    update_mask: field_mask_pb2.FieldMask = proto.Field(
        proto.MESSAGE,
        number=3,
        message=field_mask_pb2.FieldMask,
    )


class GetSettingsRequest(proto.Message):
    r"""The parameters to
    [GetSettings][google.logging.v2.ConfigServiceV2.GetSettings].

    See [View default resource settings for Logging]
    (https://cloud.google.com/logging/docs/default-settings#view-org-settings)
    for more information.

    Attributes:
        name (str):
            Required. The resource for which to retrieve settings.

            ::

                "projects/[PROJECT_ID]/settings"
                "organizations/[ORGANIZATION_ID]/settings"
                "billingAccounts/[BILLING_ACCOUNT_ID]/settings"
                "folders/[FOLDER_ID]/settings"

            For example:

            ``"organizations/12345/settings"``

            Note: Settings can be retrieved for Google Cloud projects,
            folders, organizations, and billing accounts.
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class UpdateSettingsRequest(proto.Message):
    r"""The parameters to
    [UpdateSettings][google.logging.v2.ConfigServiceV2.UpdateSettings].

    See [Configure default settings for organizations and folders]
    (https://cloud.google.com/logging/docs/default-settings) for more
    information.

    Attributes:
        name (str):
            Required. The resource name for the settings to update.

            ::

                "organizations/[ORGANIZATION_ID]/settings"
                "folders/[FOLDER_ID]/settings"

            For example:

            ``"organizations/12345/settings"``
        settings (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.Settings):
            Required. The settings to update.

            See `Enabling CMEK for Log
            Router <https://cloud.google.com/logging/docs/routing/managed-encryption>`__
            for more information.
        update_mask (google.protobuf.field_mask_pb2.FieldMask):
            Optional. Field mask identifying which fields from
            ``settings`` should be updated. A field will be overwritten
            if and only if it is in the update mask. Output only fields
            cannot be updated.

            See [FieldMask][google.protobuf.FieldMask] for more
            information.

            For example: ``"updateMask=kmsKeyName"``
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )
    settings: 'Settings' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='Settings',
    )
    update_mask: field_mask_pb2.FieldMask = proto.Field(
        proto.MESSAGE,
        number=3,
        message=field_mask_pb2.FieldMask,
    )


class ListSavedQueriesRequest(proto.Message):
    r"""The parameters to 'ListSavedQueries'.

    Attributes:
        parent (str):
            Required. The resource to which the listed queries belong.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]"

            For example:

            ::

                "projects/my-project/locations/us-central1"

            Note: The locations portion of the resource must be
            specified. To get a list of all saved queries, a wildcard
            character ``-`` can be used for [LOCATION_ID], for example:

            ::

                "projects/my-project/locations/-".
        page_token (str):
            Optional. If present, then retrieve the next batch of
            results from the preceding call to this method.
            ``pageToken`` must be the value of ``nextPageToken`` from
            the previous response. The values of other method parameters
            should be identical to those in the previous call.
        page_size (int):
            Optional. The maximum number of results to return from this
            request.

            Non-positive values are ignored. The presence of
            ``nextPageToken`` in the response indicates that more
            results might be available.
        filter (str):
            Optional. Specifies the type ("Logging" or "OpsAnalytics")
            and the visibility (PRIVATE or SHARED) of the saved queries
            to list. If provided, the filter must contain either the
            ``type`` function or a ``visibility`` token, or both. If
            both are chosen, they can be placed in any order, but they
            must be joined by the AND operator or the empty character.

            The two supported ``type`` function calls are:

            -  ``type("Logging")``
            -  ``type("OpsAnalytics")``

            The two supported ``visibility`` tokens are:

            -  ``visibility = PRIVATE``
            -  ``visibility = SHARED``

            For example:

            ``type("Logging") AND visibility = PRIVATE``
            ``visibility=SHARED type("OpsAnalytics")``
            ``type("OpsAnalytics)"`` ``visibility = PRIVATE``
            ``visibility = SHARED``
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )
    page_size: int = proto.Field(
        proto.INT32,
        number=3,
    )
    filter: str = proto.Field(
        proto.STRING,
        number=5,
    )


class ListSavedQueriesResponse(proto.Message):
    r"""The response from ListSavedQueries.

    Attributes:
        saved_queries (MutableSequence[googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.SavedQuery]):
            A list of saved queries.
        next_page_token (str):
            If there might be more results than appear in this response,
            then ``nextPageToken`` is included. To get the next set of
            results, call the same method again using the value of
            ``nextPageToken`` as ``pageToken``.
        unreachable (MutableSequence[str]):
            The unreachable resources. It can be either 1) a saved query
            if a specific query is unreachable or 2) a location if a
            specific location is unreachabe.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "projects/[PROJECT_ID]/locations/[LOCATION_ID]"

            For example:

            ::

                "projects/my-project/locations/global/savedQueries/12345678"
                "projects/my-project/locations/global"

            If there are unreachable resources, the response will first
            return pages that contain saved queries, and then return
            pages that contain the unreachable resources.
    """

    @property
    def raw_page(self):
        return self

    saved_queries: MutableSequence['SavedQuery'] = proto.RepeatedField(
        proto.MESSAGE,
        number=1,
        message='SavedQuery',
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )
    unreachable: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=3,
    )


class GetSavedQueryRequest(proto.Message):
    r"""The parameters to 'GetSavedQuery'

    Attributes:
        name (str):
            Required. The resource name of the saved query.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"

            For example:

            ::

                "projects/my-project/locations/global/savedQueries/my-saved-query".
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class CreateSavedQueryRequest(proto.Message):
    r"""The parameters to 'CreateSavedQuery'.

    Attributes:
        parent (str):
            Required. The parent resource in which to create the saved
            query:

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]"

            For example:

            ::

                "projects/my-project/locations/global"
                "organizations/123456789/locations/us-central1".
        saved_query_id (str):
            Optional. The ID to use for the saved query, which will
            become the final component of the saved query's resource
            name.

            If the ``saved_query_id`` is not provided, the system will
            generate an alphanumeric ID.

            The ``saved_query_id`` is limited to 100 characters and can
            include only the following characters:

            -  upper and lower-case alphanumeric characters,
            -  underscores,
            -  hyphens,
            -  periods.

            First character has to be alphanumeric.
        saved_query (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.SavedQuery):
            Required. The new saved query.
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    saved_query_id: str = proto.Field(
        proto.STRING,
        number=3,
    )
    saved_query: 'SavedQuery' = proto.Field(
        proto.MESSAGE,
        number=2,
        message='SavedQuery',
    )


class UpdateSavedQueryRequest(proto.Message):
    r"""The parameters to 'UpdateSavedQuery'.

    Attributes:
        saved_query (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.SavedQuery):
            Required. The updated value for the query.

            The ``saved_query``'s ``name`` field is used to identify the
            saved query to update. Format:

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]".
        update_mask (google.protobuf.field_mask_pb2.FieldMask):
            Required. A non-empty list of fields to change in the
            existing saved query. Fields are relative to the
            ``saved_query`` and new values for the fields are taken from
            the corresponding fields in the
            [SavedQuery][google.logging.v2.SavedQuery] included in this
            request. Fields not mentioned in ``update_mask`` are not
            changed and are ignored in the request.

            To update all mutable fields, specify an ``update_mask`` of
            ``*``.

            For example, to change the description and query filter text
            of a saved query, specify an ``update_mask`` of
            ``"description, query.filter"``.
    """

    saved_query: 'SavedQuery' = proto.Field(
        proto.MESSAGE,
        number=1,
        message='SavedQuery',
    )
    update_mask: field_mask_pb2.FieldMask = proto.Field(
        proto.MESSAGE,
        number=2,
        message=field_mask_pb2.FieldMask,
    )


class DeleteSavedQueryRequest(proto.Message):
    r"""The parameters to 'DeleteSavedQuery'.

    Attributes:
        name (str):
            Required. The full resource name of the saved query to
            delete.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]/savedQueries/[QUERY_ID]"

            For example:

            ::

                "projects/my-project/locations/global/savedQueries/my-saved-query".
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )


class ListRecentQueriesRequest(proto.Message):
    r"""The parameters to 'ListRecentQueries'.

    Attributes:
        parent (str):
            Required. The resource to which the listed queries belong.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]"
                "organizations/[ORGANIZATION_ID]/locations/[LOCATION_ID]"
                "billingAccounts/[BILLING_ACCOUNT_ID]/locations/[LOCATION_ID]"
                "folders/[FOLDER_ID]/locations/[LOCATION_ID]"

            For example:

            ``projects/my-project/locations/us-central1``

            Note: The location portion of the resource must be
            specified, but supplying the character ``-`` in place of
            [LOCATION_ID] will return all recent queries.
        page_token (str):
            Optional. If present, then retrieve the next batch of
            results from the preceding call to this method.
            ``pageToken`` must be the value of ``nextPageToken`` from
            the previous response. The values of other method parameters
            should be identical to those in the previous call.
        page_size (int):
            Optional. The maximum number of results to return from this
            request. Non-positive values are ignored. The presence of
            ``nextPageToken`` in the response indicates that more
            results might be available.
        filter (str):
            Optional. Specifies the type ("Logging" or "OpsAnalytics")
            of the recent queries to list. The only valid value for this
            field is one of the two allowable ``type`` function calls,
            which are the following:

            -  ``type("Logging")``
            -  ``type("OpsAnalytics")``
    """

    parent: str = proto.Field(
        proto.STRING,
        number=1,
    )
    page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )
    page_size: int = proto.Field(
        proto.INT32,
        number=3,
    )
    filter: str = proto.Field(
        proto.STRING,
        number=5,
    )


class ListRecentQueriesResponse(proto.Message):
    r"""The response from ListRecentQueries.

    Attributes:
        recent_queries (MutableSequence[googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.RecentQuery]):
            A list of recent queries.
        next_page_token (str):
            If there might be more results than appear in this response,
            then ``nextPageToken`` is included. To get the next set of
            results, call the same method again using the value of
            ``nextPageToken`` as ``pageToken``.
        unreachable (MutableSequence[str]):
            The unreachable resources. Each resource can be either 1) a
            saved query if a specific query is unreachable or 2) a
            location if a specific location is unreachable.

            ::

                "projects/[PROJECT_ID]/locations/[LOCATION_ID]/recentQueries/[QUERY_ID]"
                "projects/[PROJECT_ID]/locations/[LOCATION_ID]"

            For example:

            ``"projects/my-project/locations/global/recentQueries/12345678"``
            ``"projects/my-project/locations/global"``

            If there are unreachable resources, the response will first
            return pages that contain recent queries, and then return
            pages that contain the unreachable resources.
    """

    @property
    def raw_page(self):
        return self

    recent_queries: MutableSequence['RecentQuery'] = proto.RepeatedField(
        proto.MESSAGE,
        number=1,
        message='RecentQuery',
    )
    next_page_token: str = proto.Field(
        proto.STRING,
        number=2,
    )
    unreachable: MutableSequence[str] = proto.RepeatedField(
        proto.STRING,
        number=3,
    )


class CopyLogEntriesRequest(proto.Message):
    r"""The parameters to CopyLogEntries.

    Attributes:
        name (str):
            Required. Log bucket from which to copy log entries.

            For example:

            ``"projects/my-project/locations/global/buckets/my-source-bucket"``
        filter (str):
            Optional. A filter specifying which log
            entries to copy. The filter must be no more than
            20k characters. An empty filter matches all log
            entries.
        destination (str):
            Required. Destination to which to copy log entries. For
            example: "storage.googleapis.com/[GCS_BUCKET]".
    """

    name: str = proto.Field(
        proto.STRING,
        number=1,
    )
    filter: str = proto.Field(
        proto.STRING,
        number=3,
    )
    destination: str = proto.Field(
        proto.STRING,
        number=4,
    )


class CopyLogEntriesResponse(proto.Message):
    r"""Response type for CopyLogEntries long running operations.

    Attributes:
        log_entries_copied_count (int):
            Number of log entries copied.
    """

    log_entries_copied_count: int = proto.Field(
        proto.INT64,
        number=1,
    )


class CopyLogEntriesMetadata(proto.Message):
    r"""Metadata for CopyLogEntries long running operations.

    Attributes:
        start_time (google.protobuf.timestamp_pb2.Timestamp):
            The create time of an operation.
        end_time (google.protobuf.timestamp_pb2.Timestamp):
            The end time of an operation.
        state (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.OperationState):
            Output only. State of an operation.
        cancellation_requested (bool):
            Identifies whether the user has requested
            cancellation of the operation.
        request (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.CopyLogEntriesRequest):
            CopyLogEntries RPC request. This field is
            deprecated and not used.
        progress (int):
            Estimated progress of the operation (0 -
            100%).
        writer_identity (str):
            The IAM identity of a service account that must be granted
            access to the destination.

            If the service account is not granted permission to the
            destination within an hour, the operation will be cancelled.

            For example: ``"serviceAccount:foo@bar.com"``
        source (str):
            Source from which to copy log entries.

            For example, a log bucket:

            ``"projects/my-project/locations/global/buckets/my-source-bucket"``
        destination (str):
            Destination to which to copy log entries.

            For example, a Cloud Storage bucket:

            ``"storage.googleapis.com/my-cloud-storage-bucket"``
        verb (str):
            Name of the verb executed by the operation.

            For example,

            ``"copy"``
    """

    start_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=1,
        message=timestamp_pb2.Timestamp,
    )
    end_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=2,
        message=timestamp_pb2.Timestamp,
    )
    state: 'OperationState' = proto.Field(
        proto.ENUM,
        number=3,
        enum='OperationState',
    )
    cancellation_requested: bool = proto.Field(
        proto.BOOL,
        number=4,
    )
    request: 'CopyLogEntriesRequest' = proto.Field(
        proto.MESSAGE,
        number=5,
        message='CopyLogEntriesRequest',
    )
    progress: int = proto.Field(
        proto.INT32,
        number=6,
    )
    writer_identity: str = proto.Field(
        proto.STRING,
        number=7,
    )
    source: str = proto.Field(
        proto.STRING,
        number=8,
    )
    destination: str = proto.Field(
        proto.STRING,
        number=9,
    )
    verb: str = proto.Field(
        proto.STRING,
        number=10,
    )


class LocationMetadata(proto.Message):
    r"""Cloud Logging specific location metadata.

    Attributes:
        log_analytics_enabled (bool):
            Indicates whether or not Log Analytics
            features are supported in the given location.
    """

    log_analytics_enabled: bool = proto.Field(
        proto.BOOL,
        number=1,
    )


class BucketMetadata(proto.Message):
    r"""Metadata for LongRunningUpdateBucket Operations.

    This message has `oneof`_ fields (mutually exclusive fields).
    For each oneof, at most one member field can be set at the same time.
    Setting any member of the oneof automatically clears all other
    members.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        start_time (google.protobuf.timestamp_pb2.Timestamp):
            The create time of an operation.
        end_time (google.protobuf.timestamp_pb2.Timestamp):
            The end time of an operation.
        state (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.OperationState):
            Output only. State of an operation.
        create_bucket_request (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.CreateBucketRequest):
            LongRunningCreateBucket RPC request.

            This field is a member of `oneof`_ ``request``.
        update_bucket_request (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.UpdateBucketRequest):
            LongRunningUpdateBucket RPC request.

            This field is a member of `oneof`_ ``request``.
    """

    start_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=1,
        message=timestamp_pb2.Timestamp,
    )
    end_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=2,
        message=timestamp_pb2.Timestamp,
    )
    state: 'OperationState' = proto.Field(
        proto.ENUM,
        number=3,
        enum='OperationState',
    )
    create_bucket_request: 'CreateBucketRequest' = proto.Field(
        proto.MESSAGE,
        number=4,
        oneof='request',
        message='CreateBucketRequest',
    )
    update_bucket_request: 'UpdateBucketRequest' = proto.Field(
        proto.MESSAGE,
        number=5,
        oneof='request',
        message='UpdateBucketRequest',
    )


class LinkMetadata(proto.Message):
    r"""Metadata for long running Link operations.

    This message has `oneof`_ fields (mutually exclusive fields).
    For each oneof, at most one member field can be set at the same time.
    Setting any member of the oneof automatically clears all other
    members.

    .. _oneof: https://proto-plus-python.readthedocs.io/en/stable/fields.html#oneofs-mutually-exclusive-fields

    Attributes:
        start_time (google.protobuf.timestamp_pb2.Timestamp):
            The start time of an operation.
        end_time (google.protobuf.timestamp_pb2.Timestamp):
            The end time of an operation.
        state (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.OperationState):
            Output only. State of an operation.
        create_link_request (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.CreateLinkRequest):
            CreateLink RPC request.

            This field is a member of `oneof`_ ``request``.
        delete_link_request (googlecloudsdk.generated_clients.gapic_clients.logging_v2.types.DeleteLinkRequest):
            DeleteLink RPC request.

            This field is a member of `oneof`_ ``request``.
    """

    start_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=1,
        message=timestamp_pb2.Timestamp,
    )
    end_time: timestamp_pb2.Timestamp = proto.Field(
        proto.MESSAGE,
        number=2,
        message=timestamp_pb2.Timestamp,
    )
    state: 'OperationState' = proto.Field(
        proto.ENUM,
        number=3,
        enum='OperationState',
    )
    create_link_request: 'CreateLinkRequest' = proto.Field(
        proto.MESSAGE,
        number=4,
        oneof='request',
        message='CreateLinkRequest',
    )
    delete_link_request: 'DeleteLinkRequest' = proto.Field(
        proto.MESSAGE,
        number=5,
        oneof='request',
        message='DeleteLinkRequest',
    )


__all__ = tuple(sorted(__protobuf__.manifest))
