index

Please note that index links to approximate location of each term.

Symbols

+json suffix, media type 268

$ref JSON reference property 104, 107

2XX class 167

4XX class 123, 129, 167, 210

5XX class 123, 210

200 OK HTTP 44, 47, 48, 89, 123, 142, 167, 283, 300, 328

201 Created 129, 142, 167, 225, 278, 314

202 Accepted 129, 142, 167, 225, 278

207 Multi-Status 288, 291

301 Moved Permanently 226

304 Not Modified 257

400 Bad Request 123, 127, 132, 167, 210, 225, 288, 315, 352

401 Unauthorized 209

403 Forbidden 123, 127, 209

404 Not Found 47, 123, 167, 209, 226, 288, 300, 328

405 Method Not Allowed 226

406 Not Acceptable 150, 152

409 Conflict 124

410 Gone 145

413 Payload Too Large 167

415 Unsupported Media Type error 150

429 Too many requests 225

500 Internal Server Error 124, 210, 225, 298

503 Service Unavailable 297

A

access control 184

adapting design for 201202

overview 200202

partitioning API to facilitate 191199

coarse-grained scopes 195197

defining scopes with API description format 198200

fine-grained scopes 192194

scope strategies 197198

access tokens 188

action resources 69

adaptability of design 147155

content negotiation 148

filtering 153155

formats 147151

internationalizing and localizing 151153

paginating 153155

sorting 153155

aggregating data, network communication efficiency 264267

aggregating goals, for flow of interactions 134135

analyze phase, API lifecycle 335

API calls

analyzing REST API calls 4546

security and 188189

API description format 7785

defined 7885

OAS, OpenAPI Specification. (see OAS (OpenAPI Specification))

reasons for using 8185

API design

facets of 1516

hiding implementation and 1011

importance of 914

learning principles 1415

overview 316

poor, consequences of 1114

private APIs 9

public APIs 9

software LEGO® bricks 68

API gateway solutions 84

apihandyman.io 47

API layers, network communication efficiency 273

API linting 346, 350

APIs 3, 4

defined 48

overview 46

API Stylebook 341

API styles 14

application/json media type 78, 80, 9899, 101102, 104, 149, 150, 160, 240, 283284, 295, 317318, 332

application/pdf 149, 150, 160

application/xml 150, 240, 295

arbitrary scopes 197

array OAS type 98

Authorization header 233

authorization server 187

B

backend API 6, 8, 10

backend applications 6

backend for frontend (BFF) 274, 304

before link, pagination 262

before property, pagination 262

BFF (backend for frontend) 274, 304

body parameters 100102, 290

boolean property 65, 114– 115

breaking changes, avoiding

in output data 215220

in success and error feedback 223225

overview 229

security breaches and 226228

to goals and flows 225226

to input data and parameters 220223

C

cacheability 73

Cache-Control header 257, 259

caching

choosing cache policies 258259

overview 255258

client ID 186

client/server separation 73

coarse-grained scope 197

code and business logic influences, avoiding 3637

code on demand 73, 134

collection resources 51

comma-separated values (CSV) 148, 161, 299

commercial off-the-shelf (COTS) software 293, 295

common practices and standards 143146

components section, OAS document 103, 106

components.securitySchemes section, OpenAPI document 198, 321

compression 254255

conditional requests 254258

consistency of design 138147

common practices and standards 143146

data 139141

goals 141142

levels of 142143

usability and 146147

consumer application 10

consumers 6

adapting design for 292296

choosing API versioning representation from perspective of 232234

notifying of events 279281

reviewing APIs from perspective of 350

software interfaces for 2224

Content header 295

Content-Language header 152

content negotiation 148

content property, OpenAPI Specification 98

Content-type header 150, 233

Content-type versioning 234

context 275305

adapting communication to goals and nature of data 277292

long processes 277278

notifying consumers of events 279281

processing multiple elements 286292

streaming event flows 281285

choosing API style according to 299305

data-based APIs 300304

event-based systems 305

function-based APIs 300304

resource-based APIs 300304

full, observing 292299

consumers’ existing practices and limitations 292296

provider’s limitations 296299

Conway’s law 34, 40

COTS (commercial off-the-shelf) software 293, 295

credentials, security 186188

CRUD functions (create, read, update, delete) 60, 69, 194

CSV (comma-separated values) 148, 161, 299

custom media type 237, 267, 268

vnd prefix, media type 233, 237, 267, 268

+json suffix, media type 268

D

data

aggregating 264267

consistency of design 139141

data granularity 175176

for list representations 262264

organizing 164166

security and 203206

data-based APIs 300304

data influences, avoiding 36

data types and formats, for representations 115116

date property 121, 217, 311

DELETE method 58, 145, 160, 298, 352

deprecated flag, OpenAPI Specification 331

description property, OpenAPI Specification 86, 88, 91, 93, 95, 101, 322

design guidelines, API 336342

continuously building 340342

overview 337340

designing for users 1741

avoiding provider’s perspective 3441

code and business logic influences 3637

data influences 36

detecting in API goals canvas 4142

human organization influences 4142

software architecture influences 3839

complicated interfaces 1820

identifying goals 2433

simple interfaces 2021

software interfaces 2124

API as software control panel 2122

consumer perspective 2224

design level, network communication efficiency 259274

aggregating data 264267

choosing relevant data for list representations 262264

creating different API layers 273

enabling expansion 268269

enabling filtering 260262

enabling querying 269271

proposing different representations 266267

providing more relevant data and goals 271273

design phase, API lifecycle 336

design process guidelines 337

developer experience (DX) 9

developer portal 185

discoverability 155161

HTTP 160161

hypermedia APIs 157160

providing metadata 156157

distributed systems 72

documentation 308333

of evolutions and retirement 330333

providing adequate information to implementers 327330

reference documentation 308323

API overview 321322

data models 310313

generating from implementation 322323

goals 313320

security 320321

user guide 323327

dynamic documentation 327

overview of common behaviors and principles 327

security 326327

use cases 324326

download speed 251

DX (developer experience) 9

E

efficiency 73, 111136, 246274

empty objects in YAML 86

error feedback

avoiding breaking changes in 223225

exhaustive 126128

identifying 121122

informative 122126

security and 209211

error message 289

errors, preventing in flow of interactions 132134

ETag header 257

event-based systems 305

event flows 281285

event property, SSE 285

evolution of design 213245

breaking changes, avoiding

in output data 215220

in success and error feedback 223225

overview 229

security breaches and 226228

to goals and flows 225226

to input data and parameters 220223

designing API evolutions 215229

documenting 330333

extensibility 239245

extensible APIs 245

extensible data 240243

extensible flows 244245

extensible interactions 243244

invisible interface contract 228229

versioning APIs 229239

choosing versioning representation 232234

granularity 234238

understanding impact of 238239

vs. implementation versioning 230233

exhaustive error feedback, interactions 126128

expansion, network communication efficiency 268269

experience APIs 274

extensibility 239245

extensible APIs 245

extensible data 240243

extensible flows 244245

extensible interactions 243244

F

fannish folk law 299

feedback

error feedback

avoiding breaking changes in 223225

exhaustive 126128

identifying 121122

informative 122126

organizing 167168

success feedback

avoiding breaking changes in 223225

interactions 128129

filtering

adaptabiity of design 153155

network communication efficiency 260262

flows

avoiding breaking changes in 225226

usability and straightforwardness of 129136

aggregating goals 134135

goal chain 131132

preventing errors 132134

stateless flows 135136

format parameter 148

formats, adaptabiity of design 147151

functional errors 121

functional limitations 297

function-based APIs 300304

G

GDPR (General Data Protection Regulation) 204

generic prefix 139

generic suffix 139

GET method 4445, 4748, 57, 88, 92, 98, 158, 160, 226, 296, 301

get property, OpenAPI Specification 88

goals, API 2433

aggregating goals for flow of interactions 134135

avoiding breaking changes in 225226

consistency of design 141142

documenting 313320

goal chain for flow of interactions 131132

goal granularity 176178

goals canvas

detecting provider’s perspective in 4142

identifying actions and their parameters and returns with 5254

identifying resources and their relationships with 4951

overview 3233

network communication efficiency 271273

organizing 168174

security and 207209

transposing into REST APIs 4960

Goals column, API goals canvas 32

granularity

of APIs 178180

of data 175176

of goals 176178

versioning APIs and 234238

GraphQL 269271, 300304

grouped errors 168

grouping

properties 165

gRPC 258, 300304

H

HATEOAS (hypermedia as the engine of the application state) 160

headers map 290

HIPAA (Health Insurance Portability and Accountability Act) 204

How’s column, API goals canvas 32

href property 158, 289

HTTP headers 149

Accept header 267, 283, 295

Accept-Language header 152

Cache-Control header 257, 259

Content header 295

Content-Language header 152

Content-type header 150, 233

ETag header 257

Link header 160

Location header 339

HTTP (HyperText Transfer Protocol) 6, 45, 47, 54, 72, 74, 122, 145, 225, 237, 285

cheat sheet 60

overview 4748

HTTP method 47

DELETE method 58, 145, 160, 298, 352

GET method 4445, 4748, 57, 88, 92, 98, 158, 160, 226, 296, 301

OPTIONS HTTP method 161, 300

PATCH method 59, 70, 301

POST method 47, 56, 60, 70, 78, 8990, 105, 202, 270, 276, 296

PROPFIND method 289

PROPPATCH method 289

PUT method 60, 301

HTTP status code 46

2XX class 167

4XX class 123, 129, 167, 210

5XX class 123, 210

200 OK HTTP 44, 47, 48, 89, 123, 142, 167, 283, 300, 328

201 Created 129, 142, 167, 225, 278, 314

202 Accepted 129, 142, 167, 225, 278

207 Multi-Status 288, 291

301 Moved Permanently 226

304 Not Modified 257

400 Bad Request 123, 127, 132, 167, 210, 225, 288, 315, 352

401 Unauthorized 209

403 Forbidden 123, 127, 209

404 Not Found 47, 123, 167, 209, 226, 288, 300, 328

405 Method Not Allowed 226

406 Not Acceptable 150, 152

409 Conflict 124

410 Gone 145

413 Payload Too Large 167

415 Unsupported Media Type error 150

429 Too many requests 225

500 Internal Server Error 124, 210, 225, 298

503 Service Unavailable 297

human organization influences, avoiding 4142

hypermedia APIs 157160

actions element 157

hypermedia as the engine of the application state (HATEOAS) 160

HyperText Transfer Protocol. See HTTP (HyperText Transfer Protocol)

Hyrum’s law 228

I

id property 240, 288

implementation 5

generating reference documentation from 322323

versioning 230, 230233

implementation specifications 307

implement phase, API lifecycle 336

implicit flow 198

info.contact.url, OpenAPI Specification 326

info.description.section, OpenAPI Specification 326, 331

information leak 209

informative error feedback, interactions 122126

info.section, OpenAPI Specification 321

in property, OpenAPI Specification 93, 106

input data

avoiding breaking changes in 220223

interactions 119121

Inputs (source) column, API goals canvas 32

interactions, usability and straightforwardness of 118129

error feedback

exhaustive 126128

identifying 121122

informative 122126

input data 119121

success feedback 128129

interfaces

complicated 1820

design challenges 6971

balancing user-friendliness and compliance 71

REST trade-off examples 6971

REST APIs 45, 48

basic principles of 48

calls, analyzing 4546

HTTP 4748

impact of constraints on design 7476

style overview 7274

transposing API goals into 4960

simple 2021

internationalizing design 151153

International Telecommunication Union (ITU) 348

invalid parameters 244

invisible interface contract 228229

IoT (Internet of Things) 305

ISO 639 language codes 151

ISO 3166 country codes 151

ISO 4217 currency codes 144

ISO 7000 graphical symbols for use on equipment 144

items property, list 141, 156, 223, 240241, 283, 287, 289

items property, OpenAPI Specification 9899, 104

ITU (International Telecommunication Union) 348

J

java.lang.NullPointerException 210, 216

JSON reference 103

JSON Schema 91, 9497, 106, 113

L

language parameter 151

latency 251

layered systems 73

learning principles, design 1415

least privilege principle 192

lifecycle, API 335336

Link header 160

links property 159

linting 343348

localizing design 151153

Location header 339

long processes, managing 277278

M

malformed request errors 121

mandatory properties 221

Markdown format 318

Maslow’s law 299

media type 9899, 101, 149150, 152, 233, 237, 267268, 284, 288

custom 237, 267268

vnd prefix, media type 233, 237, 267268

+json suffix, media type 268

media types

application/json media type 78, 80, 9899, 101102, 104, 149150, 160, 240, 283284, 295, 317318, 332

application/pdf 149150, 160

application/xml 150, 240, 295

text/csv 149150, 160

text/event-stream media type 283284

text/plain 240

Message Queuing Telemetry Protocol (MQTP) 305

metadata 156157, 262

Microsoft Visual Studio Code editor 82

MQTP (Message Queuing Telemetry Protocol) 305

N

names, choosing 113115

network communication efficiency 246274

at design level 259274

aggregating data 264267

choosing relevant data for list representations 262264

creating different API layers 273

enabling expansion 268269

enabling filtering 260262

enabling querying 269271

proposing different representations 266267

providing more relevant data and goals 271273

at protocol level 254259

activating compression and persistent connections 254255

choosing cache policies 258259

enabling caching and conditional requests 255258

overview 247254

nonfunctional requirements 292

non-volatile storage 259

number data type 64, 115, 139, 206

O

OAI (OpenAPI Initiative) 79

OAS (OpenAPI Specification) 78, 8591, 113, 146, 200

array OAS type 98

API data 91102

body parameters 100102

JSON Schema and 9497

query parameters 9293

responses 97100

creating OAS document 8586

defining scopes with 198200

describing API resources and actions with 8687

describing operations on resource 8791

describing API data 91102

body parameters 100102

JSON Schema and 9497

query parameters 9293

responses 97100

array type 98

describing path parameters 105108

describing resources 8687

documentation 107

overview 7981

reusing components 102105

security

defining scopes with 198200

oauth2 security type 198

oauth2 security type, OpenAPI Specification 198

OpenAPI Initiative (OAI) 79

OpenAPI Map 81, 107, 312

OpenAPI Specification (OAS). See OAS (OpenAPI Specification)

OpenID Connect 188

Open Web Application Security Project (OWASP) 192

OPTIONS HTTP method 161, 300

organizing APIs 163174

data 164166

feedback 167168

goals 168174

output data, avoiding breaking changes in 215220

Output (usage) column, API goals canvas 32

OWASP (Open Web Application Security Project) 192

P

page parameter 153, 261

pageSize parameter 153, 244

paginating 153155

after property 262

before link 262

before property 262

page parameter 153, 261

pageSize parameter 153, 244

size query parameter 261

parameters, API data

avoiding breaking changes in 220223

body parameters 100102

checking parameter data sources 6768

designing 6869

path parameters 105108

query parameters 9293

parameters property, OpenAPI Specification 92

partitioning API to facilitate access control 191199

partner APIs 8, 308

PATCH method 59, 70, 287, 301

path parameters 54, 105108

paths property, OpenAPI Specification 86

PCI DSS (Payment Card Industry Data Security Standard) 204

persistent connections, network communication efficiency 254255

PlantUML (PUML) 326

portable data types 115

Postel’s law 243

POST method 47, 56, 60, 70, 78, 8990, 105, 202, 270, 276, 296

predictability of design 137161

adaptabiity 147155

filtering 153155

formats 147151

internationalizing and localizing 151153

paginating 153155

sorting 153155

consistency 138147

common practices and standards 143146

data 139141

goals 141142

levels of 142143

usability and 146147

discoverability 155161

HTTP 160161

hypermedia APIs 157160

providing metadata 156157

prefixes 114

private APIs 89, 184, 308

PROPFIND method 289

PROPPATCH method 289

ProtoBuf data format 303

protocol level, network communication efficiency 254259

activating compression and persistent connections 254255

choosing cache policies 258259

enabling caching and conditional requests 255258

provider applications 6, 10

provider-facing documentation 330

provider’s perspective 18, 3441

adapting design for provider’s limitations 296299

code and business logic influences 3637

data influences 36

detecting in API goals canvas 4142

human organization influences 4142

reviewing APIs from 348350

software architecture influences 3839

public APIs 89, 13, 184, 308, 327

publish phase, API lifecycle 336

PUML (PlantUML) 326

PUT method 60, 301

Q

querying, network communication efficiency 269271

query parameters 57, 68, 9293, 142, 211, 244

query property, GraphQL 270

R

Range header 154

redoc-cli command-line utility 309

ReDoc 83

reference documentation 308323

API overview 321322

data models 310313

generating from implementation 322323

goals 313320

security 320321

reference guidelines 337

reference property 44, 62, 66, 94, 97

registering consumers 185186

reliability 73

Remote Procedure Call (RPC) 301

Representational State Transfer (REST). See REST (Representational State Transfer)

representations

network communication efficiency 266267

usability and straightforwardness of 112118

data types and formats 115116

names 113115

ready-to-use data 116118

requestBody property, OpenAPI Specification 78, 101

Request For Comments (RFC). See RFC (Request For Comments)

required property, OpenAPI Specification 93, 95

resource-based APIs 300304

resource expansion 268

resource owner 187

resources 47

resource server 187

resources type 145

response body 46

responses, API data

describing 97100

designing from concepts 6566

responses property 8889

REST APIs 4548, 74

analyzing REST API calls 4546

basic principles of 48

HTTP

cheat sheet 60

overview 4748

impact of constraints on design 7476

style overview 7274

transposing API goals into 4960

API goals canvas 4954

cheat sheet 60

representing resources with paths 5456

REST (Representational State Transfer) 44, 72, 75, 76, 160, 277, 300, 303

reusability 73

reusable schema, OpenAPI Specification 103

reviewing APIs 342353

challenging and analyzing needs 343344

from consumer’s perspective 350

from provider’s perspective 348350

linting 346350

verifying implementation 350353

RFC 5646 Tags for Identifying Languages 151

RFC 5988 Web Linking 159

RFC 6455 The Websocket Protocol 285

RFC 6749 The OAuth 2.0 Authorization Framework 188

RFC 7231 Hypertext Transfer Protocol 153

RFC (Request For Comments) 123, 129, 146

RPC (Remote Procedure Call) 301

S

scalability 73

Schema Object description, OpenAPI Specification 97

schema property, OpenAPI Specification 93, 318

schemas property, OpenAPI Specification 103

scopes 192, 195, 227

coarse-grained 195197

defining with API description format 198200

fine-grained 192194

strategies 197198

Secure Sockets Layer (SSL) 188

security 183211

access control 200203

adapting design for 201202

overview 200202

partitioning API to facilitate 191199

API calls 188189

credentials 186188

documenting 320321

envisioning API design from perspective of 189191

handling sensitive material 203211

identifying architecture and protocol issues 211212

secure error feedback 209211

sensitive data 203206

sensitive goals 207209

overview 185191

registering consumers 185186

security breaches 226, 226228

user guide 326327

security, OpenAPI Specification 199

self relationship 159

semantic versioning 231

sensitive data 204

sensitive material 184

server errors 121

Server-Sent Events (SSE) 284, 303, 305

silent breaking change 221, 226

Siren hypermedia format 159

sizing APIs 174180

API granularity 178180

data granularity 175176

goal granularity 176178

software architecture influences, avoiding 3839

software interfaces 2124

consumer’s perspective 2224

viewing API as software’s control panel 2122

software LEGO® bricks 68

sorting, adaptability of design and 153155

sort parameter, pagination 155

source (Inputs) column, API goals canvas 32

SSE (Server-Sent Events) 284, 303, 305

SSL (Secure Sockets Layer) 188. See TLS (Transport Layer Security) encryption

standardized HTTP methods 75

standard method 145

stateful flow 136

stateless flows 135136

statelessness 73

string data type 115

string property 64, 88, 94

success feedback

avoiding breaking changes in 223225

interactions 128129

suffixes 114

summary property, OpenAPI Specification 88, 90

Sunset header 332

Swagger Editor 82

Swagger UI 83

Swagger Viewer extension 82

T

tags property, OpenAPI Specification 169

text/csv 149, 150, 160

text/event-stream media type 283284

text/plain 240

time-to-live values 258, 271

TLS (Transport Layer Security) encryption 188

tokens 186

Transport Layer Security (TLS) encryption 188

U

UI (user interface) 4

uniform interfaces 74, 145, 148, 160

UNIX timestamp 116, 140, 168

usability and straightfowardness 111136

consistency of design and 146147

flows 129136

aggregating goals 134135

goal chain 131132

preventing errors 132134

stateless flows 135136

interactions 118129

error feedback 121128

inputs 119121

success feedback 128129

representations 112118

data types and formats 115116

names 113115

ready-to-use data 116118

usage (Output) column, API goals canvas 32

user-friendly scope 197

user guide 323327

dynamic documentation 327

overview of common behaviors and principles 327

security 326327

use cases 324326

user interface (UI) 4

users, designing for

designing for users 36

V

versioning APIs 229239

choosing versioning representation 232234

granularity 234238

understanding impact of 238239

vs. implementation versioning 230233

virtual goals organization 172

vnd prefix, media type 233, 237, 267268

W

web APIs 46

Web Concepts website 341

WebDAV server 288

webhook APIs 280

WebSocket APIs 285

WebSub 281

What’s column, API goals canvas 32

Who’s column, API goals canvas 32

X

x- properties, OpenAPI Specification 330, 332

Y

YAML (YAML Ain’t Markup Language) 80

..................Content has been hidden....................

You can't read the all page of ebook, please click here login for view all page.
Reset