Skip to content

Commit d506b0d

Browse files
authored
feat(AIP-9): adding client term (#1113)
The term "client" is not well-defined in the AIPs. Doing so will help clarify the categories, especially that both programmatic and direct user clients exist.
1 parent f896944 commit d506b0d

1 file changed

Lines changed: 67 additions & 47 deletions

File tree

aip/general/0009.md

Lines changed: 67 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -18,95 +18,107 @@ The following terminology **should** be used consistently throughout AIPs.
1818

1919
### API
2020

21-
Application Programming Interface. This can be a local interface (such as
22-
a client library) or a Network API (defined below).
21+
Application Programming Interface. This can be a local interface (such as a
22+
client library) or a Network API (defined below).
2323

2424
### API Backend
2525

26-
A set of servers and related infrastructure that implements the
27-
business logic for an API Service. An individual API backend server is often
28-
called an API server.
26+
A set of servers and related infrastructure that implements the business logic
27+
for an API Service. An individual API backend server is often called an API
28+
server.
2929

3030
### API Consumer
3131

32-
The entity that consumes an API Service. For Google APIs, it
33-
typically is a Google project that owns the client application or the server
34-
resource.
32+
The entity that consumes an API Service. For Google APIs, it typically is a
33+
Google project that owns the client application or the server resource.
3534

3635
### API Definition
3736

38-
The definition of an API, usually defined in a Protocol Buffer
39-
service. An API Definition can be implemented by any number of API Services.
37+
The definition of an API, usually defined in a Protocol Buffer service. An API
38+
Definition can be implemented by any number of API Services.
4039

4140
### API Frontend
4241

43-
A set of servers plus related infrastructure that provides
44-
common functionality across API Services, such as load balancing and
45-
authentication. An individual API frontend server is often called an API proxy.
42+
A set of servers plus related infrastructure that provides common functionality
43+
across API Services, such as load balancing and authentication. An individual
44+
API frontend server is often called an API proxy.
4645

47-
**Note:** the API frontend and the API backend may run next to each other or
48-
far away from each other. In some cases, they can be compiled into a single
46+
**Note:** the API frontend and the API backend may run next to each other or far
47+
away from each other. In some cases, they can be compiled into a single
4948
application binary and run inside a single process.
5049

5150
### API Method
5251

53-
An individual operation within an API. It is typically represented
54-
in Protocol Buffers by an `rpc` definition, and is mapped to a function in the
55-
API in most programming languages.
52+
An individual operation within an API. It is typically represented in Protocol
53+
Buffers by an `rpc` definition, and is mapped to a function in the API in most
54+
programming languages.
5655

5756
### API Producer
5857

59-
The entity that produces an API Service. For Google APIs, it
60-
typically is a Google team responsible for the API Service.
58+
The entity that produces an API Service. For Google APIs, it typically is a
59+
Google team responsible for the API Service.
6160

6261
### API Product
6362

64-
An API Service and its related components, such as Terms of
65-
Service, documentation, client libraries, and service support, are collectively
66-
presented to customers as a API Product. For example, Google Calendar API.
63+
An API Service and its related components, such as Terms of Service,
64+
documentation, client libraries, and service support, are collectively presented
65+
to customers as a API Product. For example, Google Calendar API.
6766

6867
**Note:** people sometimes refer to an API Product simply as an API.
6968

7069
### API Service
7170

72-
A deployed implementation of one or more APIs, exposed on one or
73-
more network addresses, such as the Cloud Pub/Sub API.
71+
A deployed implementation of one or more APIs, exposed on one or more network
72+
addresses, such as the Cloud Pub/Sub API.
7473

7574
### API Service Definition
7675

77-
The combination of API Definitions (`.proto` files)
78-
and API Service configurations (`.yaml` files) used to define an API Service.
79-
The schema for Google API Service Definition is `google.api.Service`.
76+
The combination of API Definitions (`.proto` files) and API Service
77+
configurations (`.yaml` files) used to define an API Service. The schema for
78+
Google API Service Definition is `google.api.Service`.
8079

8180
### API Service Endpoint
8281

83-
Refers to a network address that an API Service uses to
84-
handle incoming API Requests. One API Service may have multiple API Service
85-
Endpoints, such as `https://pubsub.googleapis.com` and
86-
`https://content-pubsub.googleapis.com`.
82+
Refers to a network address that an API Service uses to handle incoming API
83+
Requests. One API Service may have multiple API Service Endpoints, such as
84+
`https://pubsub.googleapis.com` and `https://content-pubsub.googleapis.com`.
8785

8886
### API Service Name
8987

90-
Refers to the logical identifier of an API Service. Google
91-
APIs use RFC 1035 DNS compatible names as their API Service Names, such as
92-
`pubsub.googleapis.com`.
88+
Refers to the logical identifier of an API Service. Google APIs use RFC 1035 DNS
89+
compatible names as their API Service Names, such as `pubsub.googleapis.com`.
9390

9491
### API Request
9592

96-
A single invocation of an API Method. It is often used as the
97-
unit for billing, logging, monitoring, and rate limiting.
93+
A single invocation of an API Method. It is often used as the unit for billing,
94+
logging, monitoring, and rate limiting.
9895

9996
### API Version
10097

101-
The version of an API or a group of APIs if they are defined
102-
together. An API Version is often represented by a string, such as "v1", and
103-
presents in API requests and Protocol Buffers package names.
98+
The version of an API or a group of APIs if they are defined together. An API
99+
Version is often represented by a string, such as "v1", and presents in API
100+
requests and Protocol Buffers package names.
101+
102+
### Client
103+
104+
Clients are programs that perform a specific tasks by calling an API or generic
105+
tools, such as CLIs, that expose the API in a user-accessible fashion or operate
106+
on resource data at rest.
107+
108+
Examples of clients include the following:
109+
110+
- Command line interfaces
111+
- Libraries, such as an SDK for a particular programming language
112+
- Scripts that operates on a JSON representation of a resource after reading it
113+
from an API
114+
- Tools, such as an [IaC][] client
115+
- Visual UIs, such as a web application
104116

105117
### Google API
106118

107-
A Network API exposed by a Google service. Most of these are
108-
hosted on the `googleapis.com` domain. It does not include other types of APIs,
109-
such as client libraries and SDKs.
119+
A Network API exposed by a Google service. Most of these are hosted on the
120+
`googleapis.com` domain. It does not include other types of APIs, such as client
121+
libraries and SDKs.
110122

111123
### IaC
112124

@@ -117,17 +129,25 @@ desired state.
117129

118130
Examples of complexities that IaC clients abstract away include:
119131

120-
- Determing the appropriate imperative action (create / update / delete) to achieve desired state.
132+
- Determing the appropriate imperative action (create / update / delete) to
133+
achieve desired state.
121134
- Ordering of these imperative actions.
122135

123136
[Terraform][] is an example of such a client.
124137

138+
### User
139+
140+
A human being which is using an API directly, such as with cURL. This term is
141+
defined to differentiate usage in the AIPs between a human *user* and a
142+
programmatic *client*.
143+
125144
### Network API
126145

127-
An API that operates across a network of computers. Network APIs
128-
communicate using network protocols including HTTP, and are frequently produced
129-
by organizations separate from those that consume them.
146+
An API that operates across a network of computers. Network APIs communicate
147+
using network protocols including HTTP, and are frequently produced by
148+
organizations separate from those that consume them.
130149

150+
[IaC]: #iac
131151
[Terraform]: https://www.terraform.io/
132152

133153
## Changelog

0 commit comments

Comments
 (0)