Skip to content

Commit e9de40c

Browse files
authored
Merge pull request #78 from SensibleWood/main
feat: New page for OpenAPI security features
2 parents 66f45eb + f2bed5b commit e9de40c

File tree

8 files changed

+779
-3
lines changed

8 files changed

+779
-3
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
11
.jekyll-cache/
22
_site/
33
*.swp
4+
.jekyll-metadata
5+
.ruby-version

Gemfile.lock

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,7 @@ GEM
7777

7878
PLATFORMS
7979
arm64-darwin-21
80+
x86_64-darwin-23
8081
x86_64-linux
8182

8283
DEPENDENCIES

README.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,12 @@
44

55
Are you new to the OpenAPI Specification?
66

7-
Read our [Getting started](https://learn.openapis.org/) page first.
7+
Read our [Getting Started](https://learn.openapis.org/) page first.
88

9+
<p>Original site customized based on a theme based on theme by Patrick Marsceill, distributed by an <a href="https://github.com/pmarsceill/just-the-docs/tree/master/LICENSE.txt">MIT license.</a></p>
910

11+
## Development
1012

11-
<p>Original site customized based on a theme based on theme by Patrick Marsceill, distributed by an <a href="https://github.com/pmarsceill/just-the-docs/tree/master/LICENSE.txt">MIT license.</a></p>
13+
To run this website locally you'll need to use Jekyll.
14+
15+
Please follow the official [Quickstart](https://jekyllrb.com/docs/) guide for more information if you are starting from scratch, and then follow the instructions in the [Contributing Guide](./CONTRIBUTING.md).

_config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ footer_content: "\xA9 2023 OpenAPI Initiative. <a rel=\"license\" href=\"http://
88
><img alt=\"Creative Commons License\" style=\"border-width:0\" src=\"https://i.creativecommons.org/l/by/4.0/80x15.png\"\
99
\ /></a><br />This work is licensed under a <a rel=\"license\" href=\"http://creativecommons.org/licenses/by/4.0/\"\
1010
>Creative Commons Attribution 4.0 International License</a>. The documentation is\
11-
\ maintained in <a href=\"https://github.com/OAI/Documentation/\">https://github.com/OAI/Documentation/</a>."
11+
\ maintained in <a href=\"https://github.com/OAI/learn.openapis.org/\">https://github.com/OAI/learn.openapis.org/</a>."
1212
color_scheme: oai
1313
highlighter: rouge
1414
plugins:

examples/tictactoe.yaml

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,10 @@ paths:
2323
application/json:
2424
schema:
2525
$ref: "#/components/schemas/status"
26+
security:
27+
apiKey: []
28+
app2AppOauth:
29+
- board:read
2630

2731
# Single square operations
2832
/board/{row}/{column}:
@@ -49,6 +53,10 @@ paths:
4953
schema:
5054
$ref: "#/components/schemas/errorMessage"
5155
example: "Illegal coordinates"
56+
security:
57+
bearerHttpAuthentication: []
58+
user2AppOauth:
59+
- board:read
5260
put:
5361
summary: Set a single board square
5462
description: Places a mark on the board and retrieves the whole board and the winner (if any).
@@ -81,6 +89,10 @@ paths:
8189
value: "Square is not empty."
8290
invalidMark:
8391
value: "Invalid Mark (X or O)."
92+
security:
93+
bearerHttpAuthentication: []
94+
user2AppOauth:
95+
- board:write
8496

8597
components:
8698
parameters:
@@ -135,3 +147,36 @@ components:
135147
$ref: "#/components/schemas/winner"
136148
board:
137149
$ref: "#/components/schemas/board"
150+
securitySchemes:
151+
defaultApiKey:
152+
description: API key provided in console
153+
type: apiKey
154+
name: api-key
155+
in: header
156+
basicHttpAuthentication:
157+
description: Basic HTTP Authentication
158+
type: http
159+
scheme: Basic
160+
bearerHttpAuthentication:
161+
description: Bearer token using a JWT
162+
type: http
163+
scheme: Bearer
164+
bearerFormat: JWT
165+
app2AppOauth:
166+
type: oauth2
167+
flows:
168+
clientCredentials:
169+
tokenUrl: https://learn.openapis.org/oauth/2.0/token
170+
scopes:
171+
# Only reading the board allow with delegated access
172+
board:read: Read the board
173+
user2AppOauth:
174+
type: oauth2
175+
flows:
176+
authorizationCode:
177+
authorizationUrl: https://learn.openapis.org/oauth/2.0/auth
178+
tokenUrl: https://learn.openapis.org/oauth/2.0/token
179+
scopes:
180+
# Reads and writes permitted via authorization code flow
181+
board:read: Read the board
182+
board:write: Write to the board

img/security-object.dot

Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
digraph componentsObject {
2+
node [shape = none; fontname = monospace; tooltip = "Click to jump to the specification of this object";];
3+
rankdir = LR;
4+
bgcolor = white;
5+
6+
openapiObject [URL = "https://spec.openapis.org/oas/v3.1.0#oasObject";target = "_blank";label = <<table border="0" cellspacing="0">
7+
<tr><td border="1" bgcolor="#94d60a"><font face="arial"><b>OpenAPI Object</b></font></td></tr>
8+
<tr><td border="1" bgcolor="#6ca437">openapi</td></tr>
9+
<tr><td border="1" bgcolor="#6ca437">info</td></tr>
10+
<tr><td border="1" bgcolor="#6ca437" port="components">components</td></tr>
11+
<tr><td border="1" bgcolor="#6ca437" port="security">security</td></tr>
12+
<tr><td border="1" bgcolor="#6ca437" port="paths">paths</td></tr>
13+
<tr><td border="1" bgcolor="#6ca437">…</td></tr></table>>;];
14+
15+
pathsObject [URL = "https://spec.openapis.org/oas/v3.1.0#pathsObject";target = "_blank";label = <<table border="0" cellspacing="0">
16+
<tr><td border="1" bgcolor="#939598" port="header"><font face="arial"><b>Paths Object</b></font></td></tr>
17+
<tr><td border="1" bgcolor="#6d6e71" port="endpoint1">/endpoint1</td></tr>
18+
<tr><td border="1" bgcolor="#6d6e71" port="endpoint2">/endpoint2</td></tr>
19+
<tr><td border="1" bgcolor="#6d6e71" port="endpoint3">/endpoint3</td></tr>
20+
<tr><td border="1" bgcolor="#6d6e71">…</td></tr></table>>;];
21+
22+
pathItemObject [URL = "https://spec.openapis.org/oas/v3.1.0#pathItemObject";target = "_blank";label = <<table border="0" cellspacing="0">
23+
<tr><td border="1" bgcolor="#939598" port="header"><font face="arial"><b>Path Item Object</b></font></td></tr>
24+
<tr><td border="1" bgcolor="#6d6e71" port="delete">delete</td></tr>
25+
<tr><td border="1" bgcolor="#6d6e71" port="get">get</td></tr>
26+
<tr><td border="1" bgcolor="#6d6e71" port="patch">patch</td></tr>
27+
<tr><td border="1" bgcolor="#6d6e71" port="post">post</td></tr>
28+
<tr><td border="1" bgcolor="#6d6e71" port="put">put</td></tr>
29+
<tr><td border="1" bgcolor="#6d6e71">…</td></tr></table>>;];
30+
31+
operationObject [URL = "https://spec.openapis.org/oas/v3.1.0#operationObject";target = "_blank";label = <<table border="0" cellspacing="0">
32+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>Operation Object</b></font></td></tr>
33+
<tr><td border="1" bgcolor="#6ca437" port="security">security</td></tr>
34+
<tr><td border="1" bgcolor="#6ca437">…</td></tr></table>>;];
35+
36+
securityRequirementObject [URL = "https://spec.openapis.org/oas/v3.1.0#securityRequirementObject";target = "_blank";label = <<table border="0" cellspacing="0">
37+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>Security Requirement Object</b></font></td></tr>
38+
<tr><td border="1" bgcolor="#6ca437" port="name">name</td></tr></table>>;];
39+
40+
componentsObject [URL = "https://spec.openapis.org/oas/v3.1.0#componentsObject";target = "_blank";label = <<table border="0" cellspacing="0">
41+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>Components Object</b></font></td></tr>
42+
<tr><td border="1" bgcolor="#6ca437" port="schemas">schemas</td></tr>
43+
<tr><td border="1" bgcolor="#6ca437" port="responses">responses</td></tr>
44+
<tr><td border="1" bgcolor="#6ca437" port="parameters">parameters</td></tr>
45+
<tr><td border="1" bgcolor="#6ca437" port="securitySchemes">securitySchemes</td></tr>
46+
<tr><td border="1" bgcolor="#6ca437">…</td></tr></table>>;];
47+
48+
securitySchemesMap [URL = "https://spec.openapis.org/oas/v3.1.0#securitySchemeObject";target = "_blank";label = <<table border="0" cellspacing="0">
49+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>Security Schemes Map</b></font></td></tr>
50+
<tr><td border="1" bgcolor="#6ca437" port="securityScheme1">securityScheme1</td></tr>
51+
<tr><td border="1" bgcolor="#6ca437" port="securityScheme2">securityScheme2</td></tr>
52+
<tr><td border="1" bgcolor="#6ca437" port="securityScheme3">securityScheme3</td></tr>
53+
<tr><td border="1" bgcolor="#6ca437">…</td></tr></table>>;];
54+
55+
securitySchemeObject [URL = "https://spec.openapis.org/oas/v3.1.0#securitySchemeObject";target = "_blank";label = <<table border="0" cellspacing="0">
56+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>Security Scheme Object</b></font></td></tr>
57+
<tr><td border="1" bgcolor="#6ca437">type</td></tr>
58+
<tr><td border="1" bgcolor="#6ca437">description</td></tr>
59+
<tr><td border="1" bgcolor="#6ca437">name</td></tr>
60+
<tr><td border="1" bgcolor="#6ca437">in</td></tr>
61+
<tr><td border="1" bgcolor="#6ca437" port="flows">flows</td></tr>
62+
<tr><td border="1" bgcolor="#6ca437">…</td></tr></table>>;];
63+
64+
oauthFlowsObject [URL = "https://spec.openapis.org/oas/v3.1.0#oauthFlowsObject";target = "_blank";label = <<table border="0" cellspacing="0">
65+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>OAuth Flows Object</b></font></td></tr>
66+
<tr><td border="1" bgcolor="#6ca437" port="implicit">implicit</td></tr>
67+
<tr><td border="1" bgcolor="#6ca437" port="password">password</td></tr>
68+
<tr><td border="1" bgcolor="#6ca437" port="clientCredentials">clientCredentials</td></tr>
69+
<tr><td border="1" bgcolor="#6ca437" port="authorizationCode">authorizationCode</td></tr></table>>;];
70+
71+
oauthFlowObject [URL = "https://spec.openapis.org/oas/v3.1.0#oauthFlowObject";target = "_blank";label = <<table border="0" cellspacing="0">
72+
<tr><td border="1" bgcolor="#94d60a" port="header"><font face="arial"><b>OAuth Flow Object</b></font></td></tr>
73+
<tr><td border="1" bgcolor="#6ca437">authorizationUrl</td></tr>
74+
<tr><td border="1" bgcolor="#6ca437">tokenUrl</td></tr>
75+
<tr><td border="1" bgcolor="#6ca437">refreshUrl</td></tr>
76+
<tr><td border="1" bgcolor="#6ca437">scopes</td></tr></table>>;];
77+
78+
79+
openapiObject:components -> componentsObject:header;
80+
openapiObject:security -> securityRequirementObject:name;
81+
82+
openapiObject:paths -> pathsObject:header;
83+
84+
pathsObject:endpoint1 -> pathItemObject:header;
85+
pathsObject:endpoint2 -> pathItemObject:header;
86+
pathsObject:endpoint3 -> pathItemObject:header;
87+
88+
pathItemObject:delete -> operationObject:header;
89+
pathItemObject:get -> operationObject:header;
90+
pathItemObject:patch -> operationObject:header;
91+
pathItemObject:post -> operationObject:header;
92+
pathItemObject:put -> operationObject:header;
93+
94+
95+
operationObject:security -> securityRequirementObject:name;
96+
securityRequirementObject:name -> securitySchemesMap:header;
97+
98+
componentsObject:securitySchemes -> securitySchemesMap:header;
99+
100+
securitySchemesMap:securityScheme1 -> securitySchemeObject:header;
101+
securitySchemesMap:securityScheme2 -> securitySchemeObject:header;
102+
securitySchemesMap:securityScheme3 -> securitySchemeObject:header;
103+
104+
securitySchemeObject:flows -> oauthFlowsObject:header;
105+
106+
oauthFlowsObject:implicit -> oauthFlowObject:header;
107+
oauthFlowsObject:password -> oauthFlowObject:header;
108+
oauthFlowsObject:clientCredentials -> oauthFlowObject:header;
109+
oauthFlowsObject:authorizationCode -> oauthFlowObject:header;
110+
}

0 commit comments

Comments
 (0)