xref: /aosp_15_r20/external/googleapis/README.md (revision d5c09012810ac0c9f33fe448fb6da8260d444cc9)
1*d5c09012SAndroid Build Coastguard Worker# Google APIs
2*d5c09012SAndroid Build Coastguard Worker
3*d5c09012SAndroid Build Coastguard WorkerThis repository contains the original interface definitions of public
4*d5c09012SAndroid Build Coastguard WorkerGoogle APIs that support both REST and gRPC protocols. Reading the
5*d5c09012SAndroid Build Coastguard Workeroriginal interface definitions can provide a better understanding of
6*d5c09012SAndroid Build Coastguard WorkerGoogle APIs and help you to utilize them more efficiently. You can also
7*d5c09012SAndroid Build Coastguard Workeruse these definitions with open source tools to generate client
8*d5c09012SAndroid Build Coastguard Workerlibraries, documentation, and other artifacts.
9*d5c09012SAndroid Build Coastguard Worker
10*d5c09012SAndroid Build Coastguard Worker## Building
11*d5c09012SAndroid Build Coastguard Worker### Bazel
12*d5c09012SAndroid Build Coastguard Worker
13*d5c09012SAndroid Build Coastguard WorkerThe recommended way to build the API client libraries is through
14*d5c09012SAndroid Build Coastguard Worker[Bazel](https://bazel.build/) >= 4.2.2.
15*d5c09012SAndroid Build Coastguard Worker
16*d5c09012SAndroid Build Coastguard WorkerFirst, [install bazel](https://docs.bazel.build/versions/master/install.html).
17*d5c09012SAndroid Build Coastguard Worker
18*d5c09012SAndroid Build Coastguard WorkerTo build all libraries:
19*d5c09012SAndroid Build Coastguard Worker
20*d5c09012SAndroid Build Coastguard Worker```
21*d5c09012SAndroid Build Coastguard Workerbazel build //...
22*d5c09012SAndroid Build Coastguard Worker```
23*d5c09012SAndroid Build Coastguard Worker
24*d5c09012SAndroid Build Coastguard WorkerTo test all libraries:
25*d5c09012SAndroid Build Coastguard Worker
26*d5c09012SAndroid Build Coastguard Worker```
27*d5c09012SAndroid Build Coastguard Workerbazel test //...
28*d5c09012SAndroid Build Coastguard Worker```
29*d5c09012SAndroid Build Coastguard Worker
30*d5c09012SAndroid Build Coastguard WorkerTo build one library in all languages:
31*d5c09012SAndroid Build Coastguard Worker
32*d5c09012SAndroid Build Coastguard Worker```
33*d5c09012SAndroid Build Coastguard Workerbazel build //google/example/library/v1/...
34*d5c09012SAndroid Build Coastguard Worker```
35*d5c09012SAndroid Build Coastguard Worker
36*d5c09012SAndroid Build Coastguard WorkerTo build the Java package for one library:
37*d5c09012SAndroid Build Coastguard Worker
38*d5c09012SAndroid Build Coastguard Worker```
39*d5c09012SAndroid Build Coastguard Workerbazel build //google/example/library/v1:google-cloud-example-library-v1-java
40*d5c09012SAndroid Build Coastguard Worker```
41*d5c09012SAndroid Build Coastguard Worker
42*d5c09012SAndroid Build Coastguard WorkerBazel packages exist in all the libraries for Java, Go, Python, Ruby, Node.js, PHP and C#.
43*d5c09012SAndroid Build Coastguard Worker
44*d5c09012SAndroid Build Coastguard Worker## Overview
45*d5c09012SAndroid Build Coastguard Worker
46*d5c09012SAndroid Build Coastguard WorkerGoogle APIs are typically deployed as API services that are hosted
47*d5c09012SAndroid Build Coastguard Workerunder different DNS names. One API service may implement multiple APIs
48*d5c09012SAndroid Build Coastguard Workerand multiple versions of the same API.
49*d5c09012SAndroid Build Coastguard Worker
50*d5c09012SAndroid Build Coastguard WorkerGoogle APIs use [Protocol Buffers](https://github.com/google/protobuf)
51*d5c09012SAndroid Build Coastguard Workerversion 3 (proto3) as their Interface Definition Language (IDL) to
52*d5c09012SAndroid Build Coastguard Workerdefine the API interface and the structure of the payload messages. The
53*d5c09012SAndroid Build Coastguard Workersame interface definition is used for both REST and RPC versions of the
54*d5c09012SAndroid Build Coastguard WorkerAPI, which can be accessed over different wire protocols.
55*d5c09012SAndroid Build Coastguard Worker
56*d5c09012SAndroid Build Coastguard WorkerThere are several ways of accessing Google APIs:
57*d5c09012SAndroid Build Coastguard Worker
58*d5c09012SAndroid Build Coastguard Worker1.  JSON over HTTP: You can access all Google APIs directly using JSON
59*d5c09012SAndroid Build Coastguard Workerover HTTP, using
60*d5c09012SAndroid Build Coastguard Worker[Google API client library](https://developers.google.com/api-client-library)
61*d5c09012SAndroid Build Coastguard Workeror third-party API client libraries.
62*d5c09012SAndroid Build Coastguard Worker
63*d5c09012SAndroid Build Coastguard Worker2.  Protocol Buffers over gRPC: You can access Google APIs published
64*d5c09012SAndroid Build Coastguard Workerin this repository through [GRPC](https://github.com/grpc), which is
65*d5c09012SAndroid Build Coastguard Workera high-performance binary RPC protocol over HTTP/2. It offers many
66*d5c09012SAndroid Build Coastguard Workeruseful features, including request/response multiplex and full-duplex
67*d5c09012SAndroid Build Coastguard Workerstreaming.
68*d5c09012SAndroid Build Coastguard Worker
69*d5c09012SAndroid Build Coastguard Worker3.  [Google Cloud Client Libraries](https://cloud.google.com/apis/docs/cloud-client-libraries):
70*d5c09012SAndroid Build Coastguard WorkerYou can use these libraries to access Google Cloud APIs. They are based
71*d5c09012SAndroid Build Coastguard Workeron gRPC for better performance and provide idiomatic client surface for
72*d5c09012SAndroid Build Coastguard Workerbetter developer experience.
73*d5c09012SAndroid Build Coastguard Worker
74*d5c09012SAndroid Build Coastguard Worker## Discussions
75*d5c09012SAndroid Build Coastguard Worker
76*d5c09012SAndroid Build Coastguard WorkerThis repo contains copies of Google API definitions and related files.  For
77*d5c09012SAndroid Build Coastguard Workerdiscussions or to raise issues about
78*d5c09012SAndroid Build Coastguard Worker[Google API client libraries](https://github.com/googleapis),
79*d5c09012SAndroid Build Coastguard Worker[GRPC](https://github.com/grpc) or
80*d5c09012SAndroid Build Coastguard Worker[Google Cloud Client Libraries](https://github.com/googlecloudplatform) please
81*d5c09012SAndroid Build Coastguard Workerrefer to the repos associated with each area.
82*d5c09012SAndroid Build Coastguard Worker
83*d5c09012SAndroid Build Coastguard Worker## Repository Structure
84*d5c09012SAndroid Build Coastguard Worker
85*d5c09012SAndroid Build Coastguard WorkerThis repository uses a directory hierarchy that reflects the Google
86*d5c09012SAndroid Build Coastguard WorkerAPI product structure. In general, every API has its own root
87*d5c09012SAndroid Build Coastguard Workerdirectory, and each major version of the API has its own subdirectory.
88*d5c09012SAndroid Build Coastguard WorkerThe proto package names exactly match the directory: this makes it
89*d5c09012SAndroid Build Coastguard Workereasy to locate the proto definitions and ensures that the generated
90*d5c09012SAndroid Build Coastguard Workerclient libraries have idiomatic namespaces in most programming
91*d5c09012SAndroid Build Coastguard Workerlanguages. Alongside the API directories live the configuration files
92*d5c09012SAndroid Build Coastguard Workerfor the [GAPIC toolkit](https://github.com/googleapis/toolkit).
93*d5c09012SAndroid Build Coastguard Worker
94*d5c09012SAndroid Build Coastguard Worker**NOTE:** The major version of an API is used to indicate breaking
95*d5c09012SAndroid Build Coastguard Workerchange to the API.
96*d5c09012SAndroid Build Coastguard Worker
97*d5c09012SAndroid Build Coastguard Worker## Generate gRPC Source Code
98*d5c09012SAndroid Build Coastguard Worker
99*d5c09012SAndroid Build Coastguard WorkerTo generate gRPC source code for Google APIs in this repository, you
100*d5c09012SAndroid Build Coastguard Workerfirst need to install both Protocol Buffers and gRPC on your local
101*d5c09012SAndroid Build Coastguard Workermachine, then you can run `make LANGUAGE=xxx all` to generate the
102*d5c09012SAndroid Build Coastguard Workersource code. You need to integrate the generated source code into
103*d5c09012SAndroid Build Coastguard Workeryour application build system.
104*d5c09012SAndroid Build Coastguard Worker
105*d5c09012SAndroid Build Coastguard Worker**NOTE:** The Makefile is only intended to generate source code for the
106*d5c09012SAndroid Build Coastguard Workerentire repository. It is not for generating linkable client library
107*d5c09012SAndroid Build Coastguard Workerfor a specific API. Please see other repositories under
108*d5c09012SAndroid Build Coastguard Workerhttps://github.com/googleapis for generating linkable client libraries.
109*d5c09012SAndroid Build Coastguard Worker
110*d5c09012SAndroid Build Coastguard Worker### Go gRPC Source Code
111*d5c09012SAndroid Build Coastguard WorkerIt is difficult to generate Go gRPC source code from this repository,
112*d5c09012SAndroid Build Coastguard Workersince Go has different directory structure.
113*d5c09012SAndroid Build Coastguard WorkerPlease use [this repository](https://github.com/google/go-genproto) instead.
114