type: com.google.api.codegen.ConfigProto
config_schema_version: 1.0.0
language_settings:
  java:
    package_name: com.google.cloud.pubsub.v1
    interface_names:
      google.pubsub.v1.Publisher: TopicAdmin
      google.pubsub.v1.Subscriber: SubscriptionAdmin
  python:
    package_name: google.cloud.pubsub_v1.gapic
  go:
    package_name: cloud.google.com/go/pubsub/apiv1
    domain_layer_location: cloud.google.com/go/pubsub
  csharp:
    package_name: Google.Cloud.PubSub.V1
  ruby:
    package_name: Google::Cloud::Pubsub::V1
  php:
    package_name: Google\Cloud\PubSub\V1
  nodejs:
    package_name: pubsub.v1
    domain_layer_location: google-cloud
license_header:
  copyright_file: copyright-google.txt
  license_file: license-header-apache-2.0.txt
fixed_resource_name_values:
- entity_name: deleted_topic
  fixed_value: _deleted-topic_
collection_oneofs:
- oneof_name: topic_oneof
  collection_names:
  - topic
  - deleted_topic
interfaces:
- name: google.pubsub.v1.Subscriber
  lang_doc:
    java: To retrieve messages from a subscription, see the Subscriber class.
  collections:
  - name_pattern: projects/{project}
    entity_name: project
  - name_pattern: projects/{project}/snapshots/{snapshot}
    entity_name: snapshot
  - name_pattern: projects/{project}/subscriptions/{subscription}
    entity_name: subscription
  - name_pattern: projects/{project}/topics/{topic}
    entity_name: topic
  retry_codes_def:
  - name: idempotent
    retry_codes:
    - UNAVAILABLE
    - DEADLINE_EXCEEDED
  - name: non_idempotent
    retry_codes: []
  - name: pull
    retry_codes:
    - DEADLINE_EXCEEDED
    - INTERNAL
    - CANCELLED
    - RESOURCE_EXHAUSTED
    - UNAVAILABLE
  retry_params_def:
  - name: default
    initial_retry_delay_millis: 100
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 60000 # 60 seconds
    initial_rpc_timeout_millis: 60000 # 60 seconds
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 60000 # 60 seconds
    total_timeout_millis: 600000 # 10 minutes
  - name: messaging
    initial_retry_delay_millis: 100
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 60000 # 60 seconds
    initial_rpc_timeout_millis: 12000 # 12 seconds
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 12000 # 12 seconds
    total_timeout_millis: 600000 # 10 minutes
  - name: streaming_messaging
    initial_retry_delay_millis: 100
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 60000 # 60 seconds
    initial_rpc_timeout_millis: 600000 # 10 minutes
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 600000 # 10 minutes
    total_timeout_millis: 600000 # 10 minutes
  experimental_features:
    iam_resources:
    - type: google.pubsub.v1.Subscription
      field: name
    - type: google.pubsub.v1.Topic
      field: name
  methods:
  - name: CreateSubscription
    flattening:
      groups:
      - parameters:
        - name
        - topic
        - push_config
        - ack_deadline_seconds
    required_fields:
    - name
    - topic
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      name: subscription
      topic: topic
    timeout_millis: 60000
  - name: GetSubscription
    flattening:
      groups:
      - parameters:
        - subscription
    required_fields:
    - subscription
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
  - name: UpdateSubscription
    required_fields:
    - subscription
    - update_mask
    request_object_method: true
    retry_codes_name: idempotent
    retry_params_name: default
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
    - include_languages:
      - php
      visibility: DISABLED
  - name: ListSubscriptions
    flattening:
      groups:
      - parameters:
        - project
    required_fields:
    - project
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    page_streaming:
      request:
        page_size_field: page_size
        token_field: page_token
      response:
        token_field: next_page_token
        resources_field: subscriptions
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      project: project
    timeout_millis: 60000
  - name: DeleteSubscription
    flattening:
      groups:
      - parameters:
        - subscription
    required_fields:
    - subscription
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
  - name: ModifyAckDeadline
    flattening:
      groups:
      - parameters:
        - subscription
        - ack_ids
        - ack_deadline_seconds
    required_fields:
    - subscription
    - ack_ids
    - ack_deadline_seconds
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
  - name: Acknowledge
    flattening:
      groups:
      - parameters:
        - subscription
        - ack_ids
    required_fields:
    - subscription
    - ack_ids
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: messaging
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
  - name: Pull
    flattening:
      groups:
      - parameters:
        - subscription
        - return_immediately
        - max_messages
    required_fields:
    - subscription
    - max_messages
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: pull
    retry_params_name: messaging
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
  - name: StreamingPull
    required_fields:
    - subscription
    - stream_ack_deadline_seconds
    grpc_streaming:
      response:
        resources_field: received_messages
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: pull
    retry_params_name: streaming_messaging
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
  - name: ModifyPushConfig
    flattening:
      groups:
      - parameters:
        - subscription
        - push_config
    required_fields:
    - subscription
    - push_config
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
  - name: ListSnapshots
    flattening:
      groups:
      - parameters:
        - project
    required_fields:
    - project
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    page_streaming:
      request:
        page_size_field: page_size
        token_field: page_token
      response:
        token_field: next_page_token
        resources_field: snapshots
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      project: project
    timeout_millis: 60000
  - name: CreateSnapshot
    flattening:
      groups:
      - parameters:
        - name
        - subscription
    required_fields:
    - name
    - subscription
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      name: snapshot
      subscription: subscription
    timeout_millis: 60000
  - name: UpdateSnapshot
    required_fields:
    - snapshot
    - update_mask
    request_object_method: true
    retry_codes_name: idempotent
    retry_params_name: default
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
    - include_languages:
      - php
      visibility: DISABLED
  - name: DeleteSnapshot
    flattening:
      groups:
      - parameters:
        - snapshot
    required_fields:
    - snapshot
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      snapshot: snapshot
    timeout_millis: 60000
  - name: Seek
    # Not including flattening until oneof support.
    # https://github.com/googleapis/toolkit/issues/1057
    required_fields:
    - subscription
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      subscription: subscription
    timeout_millis: 60000
  - name: SetIamPolicy
    flattening:
      groups:
      - parameters:
        - resource
        - policy
    required_fields:
    - resource
    - policy
    request_object_method: true
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      resource: subscription
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
  - name: GetIamPolicy
    flattening:
      groups:
      - parameters:
        - resource
    required_fields:
    - resource
    request_object_method: false
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      resource: subscription
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
  - name: TestIamPermissions
    flattening:
      groups:
      - parameters:
        - resource
        - permissions
    required_fields:
    - resource
    - permissions
    request_object_method: true
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      resource: subscription
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
- name: google.pubsub.v1.Publisher
  lang_doc:
    java: To publish messages to a topic, see the Publisher class.
  smoke_test:
    method: ListTopics
    init_fields:
    - project%project=$PROJECT_ID
  collections:
  - name_pattern: projects/{project}
    entity_name: project
  - name_pattern: projects/{project}/topics/{topic}
    entity_name: topic
  retry_codes_def:
  - name: idempotent
    retry_codes:
    - UNAVAILABLE
    - DEADLINE_EXCEEDED
  - name: one_plus_delivery
    retry_codes:
    - ABORTED
    - CANCELLED
    - INTERNAL
    - RESOURCE_EXHAUSTED
    - UNKNOWN
    - UNAVAILABLE
    - DEADLINE_EXCEEDED
  - name: non_idempotent
    retry_codes: []
  retry_params_def:
  - name: default
    initial_retry_delay_millis: 100
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 60000 # 60 seconds
    initial_rpc_timeout_millis: 60000 # 60 seconds
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 60000 # 60 seconds
    total_timeout_millis: 600000 # 10 minutes
  - name: messaging
    initial_retry_delay_millis: 100
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 60000 # 60 seconds
    initial_rpc_timeout_millis: 12000 # 12 seconds
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 30000 # 30 seconds
    total_timeout_millis: 600000 # 10 minutes
  experimental_features:
    iam_resources:
    - type: google.pubsub.v1.Subscription
      field: name
    - type: google.pubsub.v1.Topic
      field: name
  methods:
  - name: CreateTopic
    flattening:
      groups:
      - parameters:
        - name
    required_fields:
    - name
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      name: topic
    timeout_millis: 60000
  - name: UpdateTopic
    required_fields:
    - topic
    - update_mask
    request_object_method: true
    retry_codes_name: idempotent
    retry_params_name: default
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
    - include_languages:
      - php
      visibility: DISABLED
  - name: Publish
    flattening:
      groups:
      - parameters:
        - topic
        - messages
    required_fields:
    - topic
    - messages
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: one_plus_delivery
    retry_params_name: messaging
    batching:
      thresholds:
        element_count_threshold: 10
        element_count_limit: 1000 # TO BE REMOVED LATER
        request_byte_threshold: 1024 # 1 Kb
        request_byte_limit: 10485760 # TO BE REMOVED LATER
        delay_threshold_millis: 10
      batch_descriptor:
        batched_field: messages
        discriminator_fields:
        - topic
        subresponse_field: message_ids
    field_name_patterns:
      topic: topic
    sample_code_init_fields:
    - messages[0].data
    timeout_millis: 60000
    surface_treatments:
    - include_languages:
      - java
      visibility: PACKAGE
  - name: GetTopic
    flattening:
      groups:
      - parameters:
        - topic
    required_fields:
    - topic
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      topic: topic
    timeout_millis: 60000
  - name: ListTopics
    flattening:
      groups:
      - parameters:
        - project
    required_fields:
    - project
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    page_streaming:
      request:
        page_size_field: page_size
        token_field: page_token
      response:
        token_field: next_page_token
        resources_field: topics
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      project: project
    timeout_millis: 60000
  - name: ListTopicSubscriptions
    flattening:
      groups:
      - parameters:
        - topic
    required_fields:
    - topic
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    page_streaming:
      request:
        page_size_field: page_size
        token_field: page_token
      response:
        token_field: next_page_token
        resources_field: subscriptions
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      topic: topic
    timeout_millis: 60000
  - name: DeleteTopic
    flattening:
      groups:
      - parameters:
        - topic
    required_fields:
    - topic
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      topic: topic
    timeout_millis: 60000
  - name: SetIamPolicy
    flattening:
      groups:
      - parameters:
        - resource
        - policy
    required_fields:
    - resource
    - policy
    request_object_method: true
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      resource: topic
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
  - name: GetIamPolicy
    flattening:
      groups:
      - parameters:
        - resource
    required_fields:
    - resource
    request_object_method: false
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      resource: topic
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
  - name: TestIamPermissions
    flattening:
      groups:
      - parameters:
        - resource
        - permissions
    required_fields:
    - resource
    - permissions
    request_object_method: true
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      resource: topic
    timeout_millis: 60000
    reroute_to_grpc_interface: google.iam.v1.IAMPolicy
    surface_treatments:
    - include_languages:
      - go
      visibility: DISABLED
resource_name_generation:
- message_name: Topic
  field_entity_map:
    name: topic
- message_name: GetTopicRequest
  field_entity_map:
    topic: topic
- message_name: PublishRequest
  field_entity_map:
    topic: topic
- message_name: ListTopicsRequest
  field_entity_map:
    project: project
- message_name: ListTopicSubscriptionsRequest
  field_entity_map:
    topic: topic
- message_name: ListTopicSubscriptionsResponse
  field_entity_map:
    subscriptions: subscription
- message_name: DeleteTopicRequest
  field_entity_map:
    topic: topic
- message_name: Subscription
  field_entity_map:
    name: subscription
    topic: topic_oneof
- message_name: GetSubscriptionRequest
  field_entity_map:
    subscription: subscription
- message_name: ListSubscriptionsRequest
  field_entity_map:
    project: project
- message_name: DeleteSubscriptionRequest
  field_entity_map:
    subscription: subscription
- message_name: ModifyPushConfigRequest
  field_entity_map:
    subscription: subscription
- message_name: PullRequest
  field_entity_map:
    subscription: subscription
- message_name: ModifyAckDeadlineRequest
  field_entity_map:
    subscription: subscription
- message_name: AcknowledgeRequest
  field_entity_map:
    subscription: subscription
- message_name: StreamingPullRequest
  field_entity_map:
    subscription: subscription
- message_name: Snapshot
  field_entity_map:
    name: snapshot
    topic: topic
- message_name: CreateSnapshotRequest
  field_entity_map:
    name: snapshot
    subscription: subscription
- message_name: ListSnapshotsRequest
  field_entity_map:
    project: project
- message_name: DeleteSnapshotRequest
  field_entity_map:
    snapshot: snapshot
- message_name: SeekRequest
  field_entity_map:
    subscription: subscription
    snapshot: snapshot
