type: com.google.api.codegen.ConfigProto
config_schema_version: 1.0.0
language_settings:
  java:
    package_name: com.google.cloud.spanner.v1
  python:
    package_name: google.cloud.spanner_v1.gapic
  go:
    package_name: cloud.google.com/go/spanner/apiv1
    domain_layer_location: cloud.google.com/go/spanner
  csharp:
    package_name: Google.Cloud.Spanner.V1
  ruby:
    package_name: Google::Cloud::Spanner::V1
  php:
    package_name: Google\Cloud\Spanner\V1
  nodejs:
    package_name: spanner.v1
    domain_layer_location: google-cloud
license_header:
  copyright_file: copyright-google.txt
  license_file: license-header-apache-2.0.txt
interfaces:
- name: google.spanner.v1.Spanner
  collections:
  - name_pattern: projects/{project}/instances/{instance}/databases/{database}
    entity_name: database
  - name_pattern: projects/{project}/instances/{instance}/databases/{database}/sessions/{session}
    entity_name: session
  retry_codes_def:
  - name: idempotent
    retry_codes:
    - UNAVAILABLE
    - DEADLINE_EXCEEDED
  - name: non_idempotent
    retry_codes: []
  - name: long_running
    retry_codes:
    - UNAVAILABLE
  retry_params_def:
  - name: default
    initial_retry_delay_millis: 1000
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 32000
    initial_rpc_timeout_millis: 60000
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 60000
    total_timeout_millis: 600000
  - name: long_running
    initial_retry_delay_millis: 1000
    retry_delay_multiplier: 1.3
    max_retry_delay_millis: 32000
    initial_rpc_timeout_millis: 3600000
    rpc_timeout_multiplier: 1
    max_rpc_timeout_millis: 3600000
    total_timeout_millis: 3600000
  methods:
  - name: CreateSession
    flattening:
      groups:
      - parameters:
        - database
    required_fields:
    - database
    request_object_method: false
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      database: database
    timeout_millis: 30000
  - name: GetSession
    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: session
    timeout_millis: 30000
  - name: ListSessions
    flattening:
      groups:
      - parameters:
        - database
    required_fields:
    - database
    request_object_method: true
    page_streaming:
      request:
        page_size_field: page_size
        token_field: page_token
      response:
        token_field: next_page_token
        resources_field: sessions
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      database: database
    timeout_millis: 30000
  - name: DeleteSession
    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: session
    timeout_millis: 30000
  - name: ExecuteSql
    required_fields:
    - session
    - sql
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 30000
  - name: ExecuteStreamingSql
    required_fields:
    - session
    - sql
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 3600000
  - name: Read
    required_fields:
    - session
    - table
    - columns
    - key_set
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 30000
  - name: StreamingRead
    required_fields:
    - session
    - table
    - columns
    - key_set
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: non_idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 3600000
  - name: BeginTransaction
    flattening:
      groups:
      - parameters:
        - session
        - options
    required_fields:
    - session
    - options
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 30000
  - name: Commit
    flattening:
      groups:
      - parameters:
        - session
        - transaction_id
        - mutations
      - parameters:
        - session
        - single_use_transaction
        - mutations
    required_fields:
    - session
    - mutations
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: long_running
    retry_params_name: long_running
    field_name_patterns:
      session: session
    timeout_millis: 3600000
  - name: Rollback
    flattening:
      groups:
      - parameters:
        - session
        - transaction_id
    required_fields:
    - session
    - transaction_id
    request_object_method: true
    resource_name_treatment: STATIC_TYPES
    retry_codes_name: idempotent
    retry_params_name: default
    field_name_patterns:
      session: session
    timeout_millis: 30000
resource_name_generation:
- message_name: CreateSessionRequest
  field_entity_map:
    database: database
- message_name: Session
  field_entity_map:
    name: session
- message_name: GetSessionRequest
  field_entity_map:
    name: session
- message_name: DeleteSessionRequest
  field_entity_map:
    name: session
- message_name: ExecuteSqlRequest
  field_entity_map:
    session: session
- message_name: ReadRequest
  field_entity_map:
    session: session
- message_name: BeginTransactionRequest
  field_entity_map:
    session: session
- message_name: CommitRequest
  field_entity_map:
    session: session
- message_name: RollbackRequest
  field_entity_map:
    session: session
