xref: /aosp_15_r20/external/googleapis/gapic/metadata/gapic_metadata.proto (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1// Copyright 2020 Google LLC.
2//
3// Licensed under the Apache License, Version 2.0 (the "License");
4// you may not use this file except in compliance with the License.
5// You may obtain a copy of the License at
6//
7//     http://www.apache.org/licenses/LICENSE-2.0
8//
9// Unless required by applicable law or agreed to in writing, software
10// distributed under the License is distributed on an "AS IS" BASIS,
11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12// See the License for the specific language governing permissions and
13// limitations under the License.
14//
15
16syntax = "proto3";
17
18package google.gapic.metadata;
19
20option csharp_namespace = "Google.Gapic.Metadata";
21option go_package = "google.golang.org/genproto/googleapis/gapic/metadata;metadata";
22option java_multiple_files = true;
23option java_outer_classname = "GapicMetadataProto";
24option java_package = "com.google.gapic.metadata";
25option php_namespace = "Google\\Gapic\\Metadata";
26option ruby_package = "Google::Gapic::Metadata";
27
28// Metadata about a GAPIC library for a specific combination of API, version, and
29// computer language.
30message GapicMetadata {
31  // Schema version of this proto. Current value: 1.0
32  string schema = 1;
33
34  // Any human-readable comments to be included in this file.
35  string comment = 2;
36
37  // Computer language of this generated language. This must be
38  // spelled out as it spoken in English, with no capitalization or
39  // separators (e.g. "csharp", "nodejs").
40  string language = 3;
41
42  // The proto package containing the API definition for which this
43  // GAPIC library was generated.
44  string proto_package = 4;
45
46  // The language-specific library package for this GAPIC library.
47  string library_package = 5;
48
49  // A map from each proto-defined service to ServiceForTransports,
50  // which allows listing information about transport-specific
51  // implementations of the service.
52  //
53  // The key is the name of the service as it appears in the .proto
54  // file.
55  map<string, ServiceForTransport> services = 6;
56
57  // A map from a transport name to ServiceAsClient, which allows
58  // listing information about the client objects that implement the
59  // parent RPC service for the specified transport.
60  //
61  // The key name is the transport, lower-cased with no separators
62  // (e.g. "grpc", "rest").
63  message ServiceForTransport {
64    map<string, ServiceAsClient> clients = 1;
65  }
66
67  // Information about a specific client implementing a proto-defined service.
68  message ServiceAsClient {
69    // The name of the library client formatted as it appears in the source code
70    string library_client = 1;
71
72    // A mapping from each proto-defined RPC name to the the list of
73    // methods in library_client that implement it. There can be more
74    // than one library_client method for each RPC. RPCs with no
75    // library_client methods need not be included.
76    //
77    // The key name is the name of the RPC as defined and formated in
78    // the proto file.
79    map<string, MethodList> rpcs = 2;
80  }
81
82  // List of GAPIC client methods implementing the proto-defined RPC
83  // for the transport and service specified in the containing
84  // structures.
85  message MethodList {
86    // List of methods for a specific proto-service client in the
87    // GAPIC. These names should be formatted as they appear in the
88    // source code.
89    repeated string methods = 1;
90  }
91
92}
93