Skip to content

Commit 4299734

Browse files
committed
feat(AEP-3): add AEP for glossary (aep-dev#73)
As a precursor to additional AEPs (e.g. resource types), adding a glossary to ensure common terminology across the AEP document. This deviates slightly from google.aip.dev/0009. Most notably: - Eliminates the concept of multiple services being hosted at a single endpoint, for simplicities sake. - Consolidates the concept of clients across a couple separate terms. Adding some missed prettifying.
1 parent 4acb1f4 commit 4299734

File tree

6 files changed

+119
-4
lines changed

6 files changed

+119
-4
lines changed

aep/general/0003/aep.md

Lines changed: 106 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,106 @@
1+
# Glossary
2+
3+
This AEP defines common terminology.
4+
5+
## Guidance
6+
7+
The following terminology **must** be used consistently throughout AEPs.
8+
9+
### API
10+
11+
Application Programming Interface. This can be a local interface (such as an
12+
SDK) or a Network API (defined below).
13+
14+
### API Backend
15+
16+
A set of servers and related infrastructure that implements the business logic
17+
for an API Service.
18+
19+
### API Client
20+
21+
An API Client is a program or library that perform a specific tasks by calling
22+
an API or generic tools, such as CLIs, that expose the API in a user-accessible
23+
fashion or operate on resource data at rest.
24+
25+
Examples of clients include the following:
26+
27+
- Command line interfaces
28+
- Libraries, such as an SDK for a particular programming language
29+
- Scripts that operates on a JSON representation of a resource after reading it
30+
from an API
31+
- Tools, such as a [Declarative client][]
32+
- Visual UIs, such as a web application
33+
34+
### API Definition
35+
36+
A well-structured representation of an API Service.
37+
38+
### API Endpoint
39+
40+
Refers to a network address that an API Service uses to handle incoming API
41+
Requests. One API Service may have multiple API Service Endpoints, such as
42+
`https://pubsub.example.com` and `https://content-pubsub.example.com`.
43+
44+
### API Gateway
45+
46+
One or more services that together provide common functionality across API
47+
Services, such as load balancing and authentication.
48+
49+
### API Method
50+
51+
An individual operation within an API. It is typically represented in Protocol
52+
Buffers by an `rpc` definition, or in HTTP via a `method` and a `path`.
53+
54+
### API Request
55+
56+
A single invocation of an API Method. It is often used as the unit for billing,
57+
logging, monitoring, and rate limiting.
58+
59+
### API Resource
60+
61+
An object upon which one or more API methods operate.
62+
63+
### API Resource Type
64+
65+
An API resource type represents a category of that consumes and API,
66+
67+
### Consumer
68+
69+
Either a programmatic client or a user that consumes an API. This term should
70+
be used when a statement refers broadly to both programs and users.
71+
72+
### Declarative Clients
73+
74+
Declarative Clients, also known as Infrastructure as Code (IaC), describes a
75+
category of clients that consumes a markup language or code that represents
76+
resources exposed by an API, and executes the appropriate imperative actions to
77+
drive the resource to that desired state. To determine what changes to make and
78+
if a set of updates was successful a declarative client compares server side
79+
resource attributes with client defined values. The comparison feature ensures
80+
accuracy of a creation or an update but it requires services to treat the
81+
client set fields as read-only and diligently preserve those values.
82+
83+
Examples of complexities that declarative clients abstract away include:
84+
85+
- Determing the appropriate imperative action (create / update / delete) to
86+
achieve desired state.
87+
- Ordering of these imperative actions.
88+
89+
[Terraform][] is an example of such a client.
90+
91+
### User
92+
93+
A human being which is using an API directly, such as with cURL. This term is
94+
defined to differentiate usage in the AIPs between a human _user_ and a
95+
programmatic _client_.
96+
97+
### Network API
98+
99+
An API that operates across a network of computers. Network APIs communicate
100+
using network protocols including HTTP, and are frequently produced by
101+
organizations separate from those that consume them.
102+
103+
[Declarative clients]: #declarative-clients
104+
[Terraform]: https://www.terraform.io/
105+
106+
## Changelog

aep/general/0003/aep.yaml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
id: 3
3+
state: approved
4+
slug: glossary
5+
created: 2023-11-15
6+
placement:
7+
category: general

aep/general/0126/aep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ created: 2019-07-24
66
placement:
77
category: resources
88
order: 60
9-
redirect_from: "/enums"
9+
redirect_from: '/enums'

aep/general/0151/aep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ created: 2019-07-25
66
placement:
77
category: standard-methods
88
order: 70
9-
redirect_from: "/lro"
9+
redirect_from: '/lro'

aep/general/0211/aep.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ created: 2021-02-24
66
placement:
77
category: design-patterns
88
order: 115
9-
redirect_from: "/authz"
9+
redirect_from: '/authz'

aep/general/scope.yaml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ order: 0
44
categories:
55
- code: meta
66
title: Meta
7+
- code: general
8+
title: General
79
- code: resources
810
title: Resources
911
- code: standard-methods
1012
title: Standard Methods
1113
- code: fields
1214
title: Fields
1315
- code: operations
14-
title: Fields
16+
title: Operations
1517
- code: design-patterns
1618
title: Design Patterns

0 commit comments

Comments
 (0)