Synchronize new proto/yaml changes.

PiperOrigin-RevId: 260590117
This commit is contained in:
Google APIs 2019-07-29 15:13:23 -07:00 committed by Copybara-Service
parent c6aa541d47
commit 2da71aca15
5 changed files with 773 additions and 0 deletions

View file

@ -0,0 +1,34 @@
common:
api_name: cloudasset
api_version: v1p2beta1
organization_name: google-cloud
proto_deps:
- name: google-common-protos
src_proto_paths:
- v1p2beta1
service_yaml: cloudasset_v1p2beta1.yaml
gapic_yaml: v1p2beta1/cloudasset_gapic.yaml
artifacts:
- name: gapic_config
type: GAPIC_CONFIG
- name: java_gapic
type: GAPIC
language: JAVA
- name: python_gapic
type: GAPIC
language: PYTHON
- name: nodejs_gapic
type: GAPIC
language: NODEJS
- name: php_gapic
type: GAPIC
language: PHP
- name: go_gapic
type: GAPIC
language: GO
- name: ruby_gapic
type: GAPIC
language: RUBY
- name: csharp_gapic
type: GAPIC
language: CSHARP

View file

@ -0,0 +1,38 @@
type: google.api.Service
config_version: 3
name: cloudasset.googleapis.com
title: Cloud Asset API
apis:
- name: google.cloud.asset.v1p2beta1.AssetService
documentation:
summary: The cloud asset API manages the history and inventory of cloud resources.
overview: |-
# Cloud Asset API
The Cloud Asset API keeps a history of Google Cloud Platform (GCP) asset
metadata, and allows GCP users to download a dump of all asset metadata
for the resource types listed below within an organization or a project at
a given timestamp.
Read more documents here:
https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview
backend:
rules:
- selector: 'google.cloud.asset.v1p2beta1.AssetService.*'
deadline: 600.0
- selector: google.longrunning.Operations.GetOperation
deadline: 60.0
authentication:
rules:
- selector: 'google.cloud.asset.v1p2beta1.AssetService.*'
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform
- selector: google.longrunning.Operations.GetOperation
oauth:
canonical_scopes: |-
https://www.googleapis.com/auth/cloud-platform

View file

@ -0,0 +1,382 @@
// Copyright 2019 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
//
// http://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.
//
syntax = "proto3";
package google.cloud.asset.v1p2beta1;
import "google/api/annotations.proto";
import "google/cloud/asset/v1p2beta1/assets.proto";
import "google/longrunning/operations.proto";
import "google/protobuf/empty.proto";
import "google/protobuf/field_mask.proto";
import "google/protobuf/timestamp.proto";
import "google/api/client.proto";
option csharp_namespace = "Google.Cloud.Asset.V1p2Beta1";
option go_package = "google.golang.org/genproto/googleapis/cloud/asset/v1p2beta1;asset";
option java_multiple_files = true;
option java_outer_classname = "AssetServiceProto";
option java_package = "com.google.cloud.asset.v1p2beta1";
option php_namespace = "Google\\Cloud\\Asset\\V1p2Beta1";
// Asset service definition.
service AssetService {
option (google.api.default_host) = "cloudasset.googleapis.com";
option (google.api.oauth_scopes) = "https://www.googleapis.com/auth/cloud-platform";
// Exports assets with time and resource types to a given Cloud Storage
// location. The output format is newline-delimited JSON.
// This API implements the [google.longrunning.Operation][google.longrunning.Operation] API allowing you
// to keep track of the export.
rpc ExportAssets(ExportAssetsRequest) returns (google.longrunning.Operation) {
option (google.api.http) = {
post: "/v1p2beta1/{parent=*/*}:exportAssets"
body: "*"
};
}
// Batch gets the update history of assets that overlap a time window.
// For RESOURCE content, this API outputs history with asset in both
// non-delete or deleted status.
// For IAM_POLICY content, this API outputs history when the asset and its
// attached IAM POLICY both exist. This can create gaps in the output history.
rpc BatchGetAssetsHistory(BatchGetAssetsHistoryRequest) returns (BatchGetAssetsHistoryResponse) {
option (google.api.http) = {
get: "/v1p2beta1/{parent=*/*}:batchGetAssetsHistory"
};
}
// Creates a feed in a parent project/folder/organization to listen to its
// asset updates.
rpc CreateFeed(CreateFeedRequest) returns (Feed) {
option (google.api.http) = {
post: "/v1p2beta1/{parent=*/*}/feeds"
body: "*"
};
}
// Gets details about an asset feed.
rpc GetFeed(GetFeedRequest) returns (Feed) {
option (google.api.http) = {
get: "/v1p2beta1/{name=*/*/feeds/*}"
};
}
// Lists all asset feeds in a parent project/folder/organization.
rpc ListFeeds(ListFeedsRequest) returns (ListFeedsResponse) {
option (google.api.http) = {
get: "/v1p2beta1/{parent=*/*}/feeds"
};
}
// Updates an asset feed configuration.
rpc UpdateFeed(UpdateFeedRequest) returns (Feed) {
option (google.api.http) = {
patch: "/v1p2beta1/{feed.name=*/*/feeds/*}"
body: "*"
};
}
// Deletes an asset feed.
rpc DeleteFeed(DeleteFeedRequest) returns (google.protobuf.Empty) {
option (google.api.http) = {
delete: "/v1p2beta1/{name=*/*/feeds/*}"
};
}
}
// Export asset request.
message ExportAssetsRequest {
// Required. The relative name of the root asset. This can only be an
// organization number (such as "organizations/123"), a project ID (such as
// "projects/my-project-id"), or a project number (such as "projects/12345").
string parent = 1;
// Timestamp to take an asset snapshot. This can only be set to a timestamp
// between 2018-10-02 UTC (inclusive) and the current time. If not specified,
// the current time will be used. Due to delays in resource data collection
// and indexing, there is a volatile window during which running the same
// query may get different results.
google.protobuf.Timestamp read_time = 2;
// A list of asset types of which to take a snapshot for. For example:
// "compute.googleapis.com/Disk". If specified, only matching assets will be
// returned. See [Introduction to Cloud Asset
// Inventory](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview)
// for all supported asset types.
repeated string asset_types = 3;
// Asset content type. If not specified, no content but the asset name will be
// returned.
ContentType content_type = 4;
// Required. Output configuration indicating where the results will be output
// to. All results will be in newline delimited JSON format.
OutputConfig output_config = 5;
}
// The export asset response. This message is returned by the
// [google.longrunning.Operations.GetOperation][google.longrunning.Operations.GetOperation] method in the returned
// [google.longrunning.Operation.response][google.longrunning.Operation.response] field.
message ExportAssetsResponse {
// Time the snapshot was taken.
google.protobuf.Timestamp read_time = 1;
// Output configuration indicating where the results were output to.
// All results are in JSON format.
OutputConfig output_config = 2;
}
// Batch get assets history request.
message BatchGetAssetsHistoryRequest {
// Required. The relative name of the root asset. It can only be an
// organization number (such as "organizations/123"), a project ID (such as
// "projects/my-project-id")", or a project number (such as "projects/12345").
string parent = 1;
// A list of the full names of the assets. For example:
// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
// See [Resource
// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
// and [Resource Name
// Format](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/resource-name-format)
// for more info.
//
// The request becomes a no-op if the asset name list is empty, and the max
// size of the asset name list is 100 in one request.
repeated string asset_names = 2;
// Required. The content type.
ContentType content_type = 3;
// Optional. The time window for the asset history. Both start_time and
// end_time are optional and if set, it must be after 2018-10-02 UTC. If
// end_time is not set, it is default to current timestamp. If start_time is
// not set, the snapshot of the assets at end_time will be returned. The
// returned results contain all temporal assets whose time window overlap with
// read_time_window.
TimeWindow read_time_window = 4;
}
// Batch get assets history response.
message BatchGetAssetsHistoryResponse {
// A list of assets with valid time windows.
repeated TemporalAsset assets = 1;
}
// Create asset feed request.
message CreateFeedRequest {
// Required. The name of the project/folder/organization where this feed
// should be created in. It can only be an organization number (such as
// "organizations/123"), a folder number (such as "folders/123"), a project ID
// (such as "projects/my-project-id")", or a project number (such as
// "projects/12345").
string parent = 1;
// Required. This is the client-assigned asset feed identifier and it needs to
// be unique under a specific parent project/folder/organization.
string feed_id = 2;
// The feed details. The field `name` must be empty and it will be generated
// in the format of:
// projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
Feed feed = 3;
}
// Get asset feed request.
message GetFeedRequest {
// The name of the Feed and it must be in the format of:
// projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
string name = 1;
}
// List asset feeds request.
message ListFeedsRequest {
// Required. The parent project/folder/organization whose feeds are to be
// listed. It can only be using project/folder/organization number (such as
// "folders/12345")", or a project ID (such as "projects/my-project-id").
string parent = 1;
}
message ListFeedsResponse {
// A list of feeds.
repeated Feed feeds = 1;
}
// Update asset feed request.
message UpdateFeedRequest {
// The new values of feed details. It must match an existing feed and the
// field `name` must be in the format of:
// projects/project_number/feeds/feed_id or
// folders/folder_number/feeds/feed_id or
// organizations/organization_number/feeds/feed_id.
Feed feed = 1;
// Only updates the `feed` fields indicated by this mask.
// The field mask must not be empty, and it must not contain fields that
// are immutable or only set by the server.
google.protobuf.FieldMask update_mask = 2;
}
message DeleteFeedRequest {
// The name of the feed and it must be in the format of:
// projects/project_number/feeds/feed_id
// folders/folder_number/feeds/feed_id
// organizations/organization_number/feeds/feed_id
string name = 1;
}
// Output configuration for export assets destination.
message OutputConfig {
// Asset export destination.
oneof destination {
// Destination on Cloud Storage.
GcsDestination gcs_destination = 1;
// Destination on Bigquery. The output table stores the fields in asset
// proto as columns in BigQuery. The resource/iam_policy field is converted
// to a record with each field to a column, except metadata to a single JSON
// string.
BigQueryDestination bigquery_destination = 2;
}
}
// A Cloud Storage location.
message GcsDestination {
// Required.
oneof object_uri {
// The uri of the Cloud Storage object. It's the same uri that is used by
// gsutil. For example: "gs://bucket_name/object_name". See [Viewing and
// Editing Object
// Metadata](https://cloud.google.com/storage/docs/viewing-editing-metadata)
// for more information.
string uri = 1;
// The uri prefix of all generated Cloud Storage objects. For example:
// "gs://bucket_name/object_name_prefix". Each object uri is in format:
// "gs://bucket_name/object_name_prefix/<asset type>/<shard number> and only
// contains assets for that type. <shard number> starts from 0. For example:
// "gs://bucket_name/object_name_prefix/compute.googleapis.com/Disk/0" is
// the first shard of output objects containing all
// compute.googleapis.com/Disk assets. An INVALID_ARGUMENT error will be
// returned if file with the same name "gs://bucket_name/object_name_prefix"
// already exists.
string uri_prefix = 2;
}
}
// A Bigquery destination.
message BigQueryDestination {
// Required. The BigQuery dataset in format
// "projects/projectId/datasets/datasetId", to which the snapshot result
// should be exported. If this dataset does not exist, the export call returns
// an error.
string dataset = 1;
// Required. The BigQuery table to which the snapshot result should be
// written. If this table does not exist, a new table with the given name
// will be created.
string table = 2;
// If the destination table already exists and this flag is `TRUE`, the
// table will be overwritten by the contents of assets snapshot. If the flag
// is not set and the destination table already exists, the export call
// returns an error.
bool force = 3;
}
// A Cloud Pubsub destination.
message PubsubDestination {
// The name of the Cloud Pub/Sub topic to publish to.
// For example: `projects/PROJECT_ID/topics/TOPIC_ID`.
string topic = 1;
}
// Asset content type.
enum ContentType {
// Unspecified content type.
CONTENT_TYPE_UNSPECIFIED = 0;
// Resource metadata.
RESOURCE = 1;
// The actual IAM policy set on a resource.
IAM_POLICY = 2;
// The IAM policy name for the IAM policy set on a resource.
IAM_POLICY_NAME = 3;
ORG_POLICY = 4;
// The Cloud Access context mananger Policy set on an asset.
ACCESS_POLICY = 5;
}
// Output configuration for asset feed destination.
message FeedOutputConfig {
// Asset feed destination.
oneof destination {
// Destination on Cloud Pubsub.
PubsubDestination pubsub_destination = 1;
}
}
// An asset feed used to export asset updates to a destinations.
// An asset feed filter controls what updates are exported.
// The asset feed must be created within a project, organization, or
// folder. Supported destinations are:
// Cloud Pub/Sub topics.
message Feed {
// Required. The format will be
// projects/{project_number}/feeds/{client-assigned_feed_identifier} or
// folders/{folder_number}/feeds/{client-assigned_feed_identifier} or
// organizations/{organization_number}/feeds/{client-assigned_feed_identifier}
//
// The client-assigned feed identifier must be unique within the parent
// project/folder/organization.
string name = 1;
// A list of the full names of the assets to receive updates. You must specify
// either or both of asset_names and asset_types. Only asset updates matching
// specified asset_names and asset_types are exported to the feed. For
// example:
// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
// See [Resource
// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
// for more info.
repeated string asset_names = 2;
// A list of types of the assets to receive updates. You must specify either
// or both of asset_names and asset_types. Only asset updates matching
// specified asset_names and asset_types are exported to the feed.
// For example:
// "compute.googleapis.com/Disk" See [Introduction to Cloud Asset
// Inventory](https://cloud.google.com/resource-manager/docs/cloud-asset-inventory/overview)
// for all supported asset types.
repeated string asset_types = 3;
// Asset content type. If not specified, no content but the asset name and
// type will be returned.
ContentType content_type = 4;
// Required. Feed output configuration defining where the asset updates are
// published to.
FeedOutputConfig feed_output_config = 5;
}

View file

@ -0,0 +1,135 @@
// Copyright 2019 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
//
// http://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.
//
syntax = "proto3";
package google.cloud.asset.v1p2beta1;
import "google/api/annotations.proto";
import "google/iam/v1/policy.proto";
import "google/protobuf/any.proto";
import "google/protobuf/struct.proto";
import "google/protobuf/timestamp.proto";
option cc_enable_arenas = true;
option csharp_namespace = "Google.Cloud.Asset.v1p2beta1";
option go_package = "google.golang.org/genproto/googleapis/cloud/asset/v1p2beta1;asset";
option java_multiple_files = true;
option java_outer_classname = "AssetProto";
option java_package = "com.google.cloud.asset.v1p2beta1";
option php_namespace = "Google\\Cloud\\Asset\\v1p2beta1";
// Temporal asset. In addition to the asset, the temporal asset includes the
// status of the asset and valid from and to time of it.
message TemporalAsset {
// The time window when the asset data and state was observed.
TimeWindow window = 1;
// If the asset is deleted or not.
bool deleted = 2;
// Asset.
Asset asset = 3;
}
// A time window of (start_time, end_time].
message TimeWindow {
// Start time of the time window (exclusive).
google.protobuf.Timestamp start_time = 1;
// End time of the time window (inclusive).
// Current timestamp if not specified.
google.protobuf.Timestamp end_time = 2;
}
// Cloud asset. This includes all Google Cloud Platform resources,
// Cloud IAM policies, and other non-GCP assets.
message Asset {
// The full name of the asset. For example:
// `//compute.googleapis.com/projects/my_project_123/zones/zone1/instances/instance1`.
// See [Resource
// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
// for more information.
string name = 1;
// Type of the asset. Example: "compute.googleapis.com/Disk".
string asset_type = 2;
// Representation of the resource.
Resource resource = 3;
// Representation of the actual Cloud IAM policy set on a cloud resource. For
// each resource, there must be at most one Cloud IAM policy set on it.
google.iam.v1.Policy iam_policy = 4;
// Cloud IAM policy name of the Cloud IAM policy set on a cloud resource. For
// each resource, there must be at most one Cloud IAM policy name associated
// with it.
bytes iam_policy_name = 5;
// Asset's ancestry path in Cloud Resource Manager (CRM) hierarchy,
// represented as a list of relative resource names. Ancestry path starts with
// the closest CRM ancestor and ending at a visible root. If the asset is a
// CRM project/ folder/organization, this starts from the asset itself.
//
// Example: ["projects/123456789", "folders/5432", "organizations/1234"]
repeated string ancestors = 6;
}
// Representation of a cloud resource.
message Resource {
// The API version. Example: "v1".
string version = 1;
// The URL of the discovery document containing the resource's JSON schema.
// For example:
// `"https://www.googleapis.com/discovery/v1/apis/compute/v1/rest"`.
// It will be left unspecified for resources without a discovery-based API,
// such as Cloud Bigtable.
string discovery_document_uri = 2;
// The JSON schema name listed in the discovery document.
// Example: "Project". It will be left unspecified for resources (such as
// Cloud Bigtable) without a discovery-based API.
string discovery_name = 3;
// The REST URL for accessing the resource. An HTTP GET operation using this
// URL returns the resource itself.
// Example:
// `https://cloudresourcemanager.googleapis.com/v1/projects/my-project-123`.
// It will be left unspecified for resources without a REST API.
string resource_url = 4;
// The full name of the immediate parent of this resource. See
// [Resource
// Names](https://cloud.google.com/apis/design/resource_names#full_resource_name)
// for more information.
//
// For GCP assets, it is the parent resource defined in the [Cloud IAM policy
// hierarchy](https://cloud.google.com/iam/docs/overview#policy_hierarchy).
// For example:
// `"//cloudresourcemanager.googleapis.com/projects/my_project_123"`.
//
// For third-party assets, it is up to the users to define.
string parent = 5;
// The content of the resource, in which some sensitive fields are scrubbed
// away and may not be present.
google.protobuf.Struct data = 6;
// The actual metadata content for the resource, only visible for internal
// users.
google.protobuf.Any internal_data = 7;
}

View file

@ -0,0 +1,184 @@
type: com.google.api.codegen.ConfigProto
config_schema_version: 1.0.0
# The settings of generated code in a specific language.
language_settings:
java:
package_name: com.google.cloud.asset.v1p2beta1
python:
package_name: google.cloud.asset_v1p2beta1.gapic
go:
package_name: cloud.google.com/go/asset/apiv1p2beta1
csharp:
package_name: Google.Cloud.Asset.V1p2beta1
ruby:
package_name: Google::Cloud::Asset::V1p2beta1
php:
package_name: Google\Cloud\Asset\V1p2beta1
nodejs:
package_name: asset.v1p2beta1
# A list of API interface configurations.
interfaces:
# The fully qualified name of the API interface.
- name: google.cloud.asset.v1p2beta1.AssetService
# A list of resource collection configurations.
# Consists of a name_pattern and an entity_name.
# The name_pattern is a pattern to describe the names of the resources of this
# collection, using the platform's conventions for URI patterns. A generator
# may use this to generate methods to compose and decompose such names. The
# pattern should use named placeholders as in `shelves/{shelf}/books/{book}`;
# those will be taken as hints for the parameter names of the generated
# methods. If empty, no name methods are generated.
# The entity_name is the name to be used as a basis for generated methods and
# classes.
collections:
- name_pattern: '{unknown}/{unknown}/feeds/{feed}'
entity_name: feed
# Definition for retryable codes.
retry_codes_def:
- name: idempotent
retry_codes:
- DEADLINE_EXCEEDED
- UNAVAILABLE
- name: non_idempotent
retry_codes: []
# Definition for retry/backoff parameters.
retry_params_def:
- name: default
initial_retry_delay_millis: 100
retry_delay_multiplier: 1.3
max_retry_delay_millis: 60000
initial_rpc_timeout_millis: 20000
rpc_timeout_multiplier: 1
max_rpc_timeout_millis: 20000
total_timeout_millis: 600000
# A list of method configurations.
# Common properties:
#
# name - The simple name of the method.
#
# flattening - Specifies the configuration for parameter flattening.
# Describes the parameter groups for which a generator should produce method
# overloads which allow a client to directly pass request message fields as
# method parameters. This information may or may not be used, depending on
# the target language.
# Consists of groups, which each represent a list of parameters to be
# flattened. Each parameter listed must be a field of the request message.
#
# required_fields - Fields that are always required for a request to be
# valid.
#
# page_streaming - Specifies the configuration for paging.
# Describes information for generating a method which transforms a paging
# list RPC into a stream of resources.
# Consists of a request and a response.
# The request specifies request information of the list method. It defines
# which fields match the paging pattern in the request. The request consists
# of a page_size_field and a token_field. The page_size_field is the name of
# the optional field specifying the maximum number of elements to be
# returned in the response. The token_field is the name of the field in the
# request containing the page token.
# The response specifies response information of the list method. It defines
# which fields match the paging pattern in the response. The response
# consists of a token_field and a resources_field. The token_field is the
# name of the field in the response containing the next page token. The
# resources_field is the name of the field in the response containing the
# list of resources belonging to the page.
#
# retry_codes_name - Specifies the configuration for retryable codes. The
# name must be defined in interfaces.retry_codes_def.
#
# retry_params_name - Specifies the configuration for retry/backoff
# parameters. The name must be defined in interfaces.retry_params_def.
#
# field_name_patterns - Maps the field name of the request type to
# entity_name of interfaces.collections.
# Specifies the string pattern that the field must follow.
#
# timeout_millis - Specifies the default timeout for a non-retrying call. If
# the call is retrying, refer to retry_params_name instead.
methods:
- name: ExportAssets
required_fields:
- parent
- output_config
retry_codes_name: non_idempotent
retry_params_name: default
long_running:
return_type: google.cloud.asset.v1p2beta1.ExportAssetsResponse
metadata_type: google.cloud.asset.v1p2beta1.ExportAssetsRequest
initial_poll_delay_millis: 500
poll_delay_multiplier: 1.5
max_poll_delay_millis: 5000
total_poll_timeout_millis: 300000
timeout_millis: 600000
- name: BatchGetAssetsHistory
flattening:
groups:
- parameters:
- parent
required_fields:
- parent
- asset_names
- content_type
retry_codes_name: idempotent
retry_params_name: default
timeout_millis: 600000
- name: CreateFeed
flattening:
groups:
- parameters:
- parent
required_fields:
- parent
- feed_id
- feed
retry_codes_name: non_idempotent
retry_params_name: default
timeout_millis: 30000
- name: GetFeed
flattening:
groups:
- parameters:
- name
required_fields:
- name
retry_codes_name: idempotent
retry_params_name: default
field_name_patterns:
name: feed
timeout_millis: 10000
- name: ListFeeds
flattening:
groups:
- parameters:
- parent
required_fields:
- parent
retry_codes_name: idempotent
retry_params_name: default
timeout_millis: 10000
- name: UpdateFeed
flattening:
groups:
- parameters:
- feed
required_fields:
- feed
- update_mask
retry_codes_name: non_idempotent
retry_params_name: default
field_name_patterns:
feed.name: feed
timeout_millis: 30000
- name: DeleteFeed
flattening:
groups:
- parameters:
- name
required_fields:
- name
retry_codes_name: idempotent
retry_params_name: default
field_name_patterns:
name: feed
timeout_millis: 30000