├── .gitignore
├── .gitmodules
├── Dockerfile
├── README.md
├── docs
├── README.md
├── index.html
├── pub
│ ├── css
│ │ ├── darkula.css
│ │ ├── obsidian.css
│ │ ├── print.css
│ │ ├── print_overrides.css
│ │ ├── screen.css
│ │ ├── screen_overrides.css
│ │ ├── theme_overrides.css
│ │ └── tradegecko.min.css
│ ├── js
│ │ ├── .gitignore
│ │ └── dummy.js
│ └── pub
│ │ ├── css
│ │ ├── darkula.css
│ │ ├── obsidian.css
│ │ ├── print.css
│ │ ├── print_overrides.css
│ │ ├── screen.css
│ │ ├── screen_overrides.css
│ │ ├── theme_overrides.css
│ │ └── tradegecko.min.css
│ │ └── js
│ │ ├── .gitignore
│ │ └── dummy.js
└── source
│ ├── apisguru.html.md
│ ├── asyncapi.html.md
│ ├── fonts
│ ├── slate.eot
│ ├── slate.svg
│ ├── slate.ttf
│ ├── slate.woff
│ └── slate.woff2
│ ├── images
│ ├── logo.png
│ └── navbar.png
│ ├── include.md
│ ├── includes
│ ├── _errors.md
│ └── _head.md
│ ├── index.html.md
│ ├── javascripts
│ ├── all.bundle.inc
│ ├── all.inc
│ ├── all.js
│ ├── all_nosearch.inc
│ ├── all_nosearch.js
│ └── app
│ │ ├── _lang.js
│ │ ├── _search.js
│ │ └── _toc.js
│ ├── layouts
│ └── layout.ejs
│ ├── master.html.md
│ ├── semoasa.html.md
│ ├── source
│ ├── apisguru.html.md
│ ├── asyncapi.html.md
│ ├── fonts
│ │ ├── slate.eot
│ │ ├── slate.svg
│ │ ├── slate.ttf
│ │ ├── slate.woff
│ │ └── slate.woff2
│ ├── images
│ │ ├── logo.png
│ │ └── navbar.png
│ ├── include.md
│ ├── includes
│ │ ├── _errors.md
│ │ └── _head.md
│ ├── index.html.md
│ ├── javascripts
│ │ ├── all.bundle.inc
│ │ ├── all.inc
│ │ ├── all.js
│ │ ├── all_nosearch.inc
│ │ ├── all_nosearch.js
│ │ └── app
│ │ │ ├── _lang.js
│ │ │ ├── _search.js
│ │ │ └── _toc.js
│ ├── layouts
│ │ └── layout.ejs
│ ├── master.html.md
│ ├── semoasa.html.md
│ └── stylesheets
│ │ ├── _icon-font.scss
│ │ ├── _normalize.scss
│ │ ├── _rtl.scss
│ │ ├── _variables.scss
│ │ ├── print.css.scss
│ │ └── screen.css.scss
│ └── stylesheets
│ ├── _icon-font.scss
│ ├── _normalize.scss
│ ├── _rtl.scss
│ ├── _variables.scss
│ ├── print.css.scss
│ └── screen.css.scss
├── gen_docs
├── requests_and_rest.robot
├── requirements.txt
├── rfdocker
└── tests
├── contract.json
├── contract.template.json
├── contract_driven.robot
├── model.json
├── model_based.robot
└── user.json
/.gitignore:
--------------------------------------------------------------------------------
1 | log.html
2 | output.xml
3 | report.html
4 |
--------------------------------------------------------------------------------
/.gitmodules:
--------------------------------------------------------------------------------
1 | [submodule "shins"]
2 | path = shins
3 | url = git@github.com:Mermade/shins.git
4 | [submodule "widdershins"]
5 | path = widdershins
6 | url = git@github.com:Mermade/widdershins.git
7 |
--------------------------------------------------------------------------------
/Dockerfile:
--------------------------------------------------------------------------------
1 | # https://github.com/asyrjasalo/rfdocker
2 | # https://hub.docker.com/r/robotframework/rfdocker
3 |
4 | FROM robotframework/rfdocker:3.1.1
5 |
6 | ### Uncomment following two lines if having external test libraries:
7 | COPY requirements.txt .
8 | RUN pip install --no-cache-dir -r requirements.txt
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Robot Framework for APIs
2 |
3 | This is a demo on using Robot Framework
4 | [RequestsLibrary](https://github.com/bulkan/robotframework-requests) and
5 | [RESTinstance](https://github.com/asyrjasalo/RESTinstance)
6 | for API (test) automation.
7 |
8 | We are using [JSONPlaceholder](https://jsonplaceholder.typicode.com/users)
9 | as the system under test in these examples.
10 |
11 | ## Rationale
12 |
13 | ### robotframework-requests is truly great HTTP test library
14 |
15 | But it takes a lot of keywords to test JSON APIs even for simple things:
16 |
17 | ```robot
18 | *** Settings ***
19 | Library RequestsLibrary
20 | Library Collections
21 | Library json
22 | Suite setup Create Session typicode https://jsonplaceholder.typicode.com
23 | Suite teardown Delete all sessions
24 |
25 |
26 | *** Test Cases ***
27 | requests: Should have a name and belong to a company with a slogan
28 | ${resp}= Get request typicode /users/1
29 | Should Be Equal As Integers ${resp.status_code} 200
30 | ${name}= Get From Dictionary ${resp.json()} name
31 | Should Be Equal As Strings ${name} Leanne Graham
32 | ${co}= Get From Dictionary ${resp.json()} company
33 | ${co_slogan}= Get From Dictionary ${co} catchPhrase
34 | Should Be Equal As Strings ${co_slogan} Multi-layered client-server neural-net
35 | ${json}= Dumps ${resp.json()} indent=${4}
36 | Log to Console ${json}
37 | ```
38 |
39 | ### For JSON APIs, `pip install --upgrade RESTinstance`
40 |
41 | Then the same as above:
42 |
43 | ```robot
44 | *** Settings ***
45 | Library REST https://jsonplaceholder.typicode.com
46 |
47 |
48 | *** Test Cases ***
49 | RESTinstance: Should have a name and belong to a company with a slogan
50 | GET /users/1
51 | Integer response status 200
52 | String $.name Leanne Graham
53 | String $..catchPhrase Multi-layered client-server neural-net
54 | Output $
55 | ```
56 |
57 | Also, enjoy the colored JSON `Output` - powered by
58 | [pygments](http://pygments.org), thanks Georg Brandl et al.
59 |
60 |
61 | ## Towards model-based testing: Properties matter, values do not
62 |
63 | Let's move the logic from tests to JSON Schemas.
64 |
65 | Our original goal was to enable tests that are three lines at maximum:
66 |
67 | ```robot
68 | *** Settings ***
69 | Library REST https://jsonplaceholder.typicode.com
70 | Suite setup Expect response body ${CURDIR}/model.json
71 |
72 | *** Test Cases ***
73 | Valid user
74 | GET /users/1
75 | String $.email format=email
76 |
77 | New user
78 | POST /users ${CURDIR}/user.json
79 |
80 | Edit user
81 | PUT /users/1 ${CURDIR}/user.json
82 |
83 | Edit email
84 | PATCH /users/2 { "email": "ismo.aro@robotframework.dev" }
85 |
86 | Delete
87 | [Setup] Expect response body { "required": [] }
88 | DELETE /users/10
89 | [Teardown] Clear expectations
90 |
91 | Valid users
92 | GET /users
93 | Array $ minItems=1 maxItems=10
94 | Integer $[*].id maximum=10
95 | ```
96 |
97 |
98 | ## Towards contract-driven testing: From JSON Schemas to OpenAPI specifications
99 |
100 | But as usual, we decided to challenge ourselves a bit: As JSON Schema is
101 | a subset of OpenAPI/Swagger, why not include the allowed HTTP operations there?
102 |
103 | So, one line should be enough. For everyone:
104 |
105 | ```robot
106 | *** Settings ***
107 | Library REST https://jsonplaceholder.typicode.com
108 | ... spec=${CURDIR}/contract.json
109 |
110 | *** Test Cases ***
111 | Valid user
112 | GET /users/1
113 |
114 | New user
115 | POST /users ${CURDIR}/user.json
116 |
117 | Edit user
118 | PUT /users/1 ${CURDIR}/user.json
119 |
120 | Edit email
121 | PATCH /users/2 { "email": "ismo.aro@robotframework.dev" }
122 |
123 | Delete
124 | DELETE /users/10
125 |
126 | Valid users
127 | GET /users
128 |
129 |
130 | ```
131 |
132 | By the way, this covers the all the possible users the API might ever handle.
133 |
134 | REST your mind, OSS got your back.
135 |
--------------------------------------------------------------------------------
/docs/pub/css/darkula.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Darkula color scheme from the JetBrains family of IDEs
4 |
5 | */
6 |
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #2b2b2b;
13 | -webkit-text-size-adjust: none;
14 | }
15 |
16 | .hljs,
17 | .hljs-tag,
18 | .hljs-title,
19 | .css .hljs-rule,
20 | .css .hljs-value,
21 | .aspectj .hljs-function,
22 | .css .hljs-function .hljs-preprocessor,
23 | .hljs-pragma {
24 | color: #bababa;
25 | }
26 |
27 | .hljs-strongemphasis,
28 | .hljs-strong,
29 | .hljs-emphasis {
30 | color: #a8a8a2;
31 | }
32 |
33 | .hljs-bullet,
34 | .hljs-blockquote,
35 | .hljs-horizontal_rule,
36 | .hljs-number,
37 | .hljs-regexp,
38 | .alias .hljs-keyword,
39 | .hljs-literal,
40 | .hljs-hexcolor {
41 | color: #6896ba;
42 | }
43 |
44 | .hljs-tag .hljs-value,
45 | .hljs-code,
46 | .css .hljs-class,
47 | .hljs-class .hljs-title:last-child {
48 | color: #a6e22e;
49 | }
50 |
51 | .hljs-link_url {
52 | font-size: 80%;
53 | }
54 |
55 | .hljs-emphasis,
56 | .hljs-strongemphasis,
57 | .hljs-class .hljs-title:last-child,
58 | .hljs-typename {
59 | font-style: italic;
60 | }
61 |
62 | .hljs-keyword,
63 | .ruby .hljs-class .hljs-keyword:first-child,
64 | .ruby .hljs-function .hljs-keyword,
65 | .hljs-function,
66 | .hljs-change,
67 | .hljs-winutils,
68 | .hljs-flow,
69 | .nginx .hljs-title,
70 | .tex .hljs-special,
71 | .hljs-header,
72 | .hljs-attribute,
73 | .hljs-symbol,
74 | .hljs-symbol .hljs-string,
75 | .hljs-tag .hljs-title,
76 | .hljs-value,
77 | .alias .hljs-keyword:first-child,
78 | .css .hljs-tag,
79 | .css .unit,
80 | .css .hljs-important {
81 | color: #cb7832;
82 | }
83 |
84 | .hljs-function .hljs-keyword,
85 | .hljs-class .hljs-keyword:first-child,
86 | .hljs-aspect .hljs-keyword:first-child,
87 | .hljs-constant,
88 | .hljs-typename,
89 | .css .hljs-attribute {
90 | color: #cb7832;
91 | }
92 |
93 | .hljs-variable,
94 | .hljs-params,
95 | .hljs-class .hljs-title,
96 | .hljs-aspect .hljs-title {
97 | color: #b9b9b9;
98 | }
99 |
100 | .hljs-string,
101 | .css .hljs-id,
102 | .hljs-subst,
103 | .hljs-type,
104 | .ruby .hljs-class .hljs-parent,
105 | .hljs-built_in,
106 | .django .hljs-template_tag,
107 | .django .hljs-variable,
108 | .smalltalk .hljs-class,
109 | .django .hljs-filter .hljs-argument,
110 | .smalltalk .hljs-localvars,
111 | .smalltalk .hljs-array,
112 | .hljs-attr_selector,
113 | .hljs-pseudo,
114 | .hljs-addition,
115 | .hljs-stream,
116 | .hljs-envvar,
117 | .apache .hljs-tag,
118 | .apache .hljs-cbracket,
119 | .tex .hljs-command,
120 | .hljs-prompt,
121 | .hljs-link_label,
122 | .hljs-link_url,
123 | .hljs-name {
124 | color: #e0c46c;
125 | }
126 |
127 | .hljs-comment,
128 | .hljs-annotation,
129 | .hljs-pi,
130 | .hljs-doctype,
131 | .hljs-deletion,
132 | .hljs-shebang,
133 | .apache .hljs-sqbracket,
134 | .tex .hljs-formula {
135 | color: #7f7f7f;
136 | }
137 |
138 | .hljs-decorator {
139 | color: #bab429;
140 | }
141 |
142 | .coffeescript .javascript,
143 | .javascript .xml,
144 | .tex .hljs-formula,
145 | .xml .javascript,
146 | .xml .vbscript,
147 | .xml .css,
148 | .xml .hljs-cdata,
149 | .xml .php,
150 | .php .xml {
151 | opacity: 0.5;
152 | }
153 |
--------------------------------------------------------------------------------
/docs/pub/css/obsidian.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Obsidian style
3 | * ported by Alexander Marenin (http://github.com/ioncreature)
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #282b2e;
11 | -webkit-text-size-adjust: none;
12 | }
13 |
14 | .hljs-keyword,
15 | .hljs-literal,
16 | .hljs-change,
17 | .hljs-winutils,
18 | .hljs-flow,
19 | .nginx .hljs-title,
20 | .css .hljs-id,
21 | .tex .hljs-special {
22 | color: #93c763;
23 | }
24 |
25 | .hljs-number {
26 | color: #ffcd22;
27 | }
28 |
29 | .hljs {
30 | color: #e0e2e4;
31 | }
32 |
33 | .css .hljs-tag,
34 | .css .hljs-pseudo {
35 | color: #d0d2b5;
36 | }
37 |
38 | .hljs-attribute,
39 | .hljs .hljs-constant {
40 | color: #668bb0;
41 | }
42 |
43 | .xml .hljs-attribute {
44 | color: #b3b689;
45 | }
46 |
47 | .xml .hljs-tag .hljs-value {
48 | color: #e8e2b7;
49 | }
50 |
51 | .hljs-code,
52 | .hljs-class .hljs-title,
53 | .hljs-header {
54 | color: white;
55 | }
56 |
57 | .hljs-class,
58 | .hljs-hexcolor {
59 | color: #93c763;
60 | }
61 |
62 | .hljs-regexp {
63 | color: #d39745;
64 | }
65 |
66 | .hljs-at_rule,
67 | .hljs-at_rule .hljs-keyword {
68 | color: #a082bd;
69 | }
70 |
71 | .hljs-doctype {
72 | color: #557182;
73 | }
74 |
75 | .hljs-link_url,
76 | .hljs-tag,
77 | .hljs-tag .hljs-title,
78 | .hljs-bullet,
79 | .hljs-subst,
80 | .hljs-emphasis,
81 | .hljs-type,
82 | .hljs-preprocessor,
83 | .hljs-pragma,
84 | .ruby .hljs-class .hljs-parent,
85 | .hljs-built_in,
86 | .django .hljs-template_tag,
87 | .django .hljs-variable,
88 | .smalltalk .hljs-class,
89 | .django .hljs-filter .hljs-argument,
90 | .smalltalk .hljs-localvars,
91 | .smalltalk .hljs-array,
92 | .hljs-attr_selector,
93 | .hljs-pseudo,
94 | .hljs-addition,
95 | .hljs-stream,
96 | .hljs-envvar,
97 | .apache .hljs-tag,
98 | .apache .hljs-cbracket,
99 | .tex .hljs-command,
100 | .hljs-prompt,
101 | .hljs-name {
102 | color: #8cbbad;
103 | }
104 |
105 | .hljs-string {
106 | color: #ec7600;
107 | }
108 |
109 | .hljs-comment,
110 | .hljs-annotation,
111 | .hljs-blockquote,
112 | .hljs-horizontal_rule,
113 | .hljs-decorator,
114 | .hljs-pi,
115 | .hljs-deletion,
116 | .hljs-shebang,
117 | .apache .hljs-sqbracket,
118 | .tex .hljs-formula {
119 | color: #818e96;
120 | }
121 |
122 | .hljs-keyword,
123 | .hljs-literal,
124 | .css .hljs-id,
125 | .hljs-doctag,
126 | .hljs-title,
127 | .hljs-header,
128 | .hljs-type,
129 | .vbscript .hljs-built_in,
130 | .rsl .hljs-built_in,
131 | .smalltalk .hljs-class,
132 | .diff .hljs-header,
133 | .hljs-chunk,
134 | .hljs-winutils,
135 | .bash .hljs-variable,
136 | .apache .hljs-tag,
137 | .tex .hljs-special,
138 | .hljs-request,
139 | .hljs-at_rule .hljs-keyword,
140 | .hljs-status {
141 | font-weight: bold;
142 | }
143 |
144 | .coffeescript .javascript,
145 | .javascript .xml,
146 | .tex .hljs-formula,
147 | .xml .javascript,
148 | .xml .vbscript,
149 | .xml .css,
150 | .xml .hljs-cdata {
151 | opacity: 0.5;
152 | }
153 |
--------------------------------------------------------------------------------
/docs/pub/css/print.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 | /**
3 | * 1. Set default font family to sans-serif.
4 | * 2. Prevent iOS text size adjust after orientation change, without disabling
5 | * user zoom.
6 | */
7 | html {
8 | font-family: sans-serif;
9 | /* 1 */
10 | -ms-text-size-adjust: 100%;
11 | /* 2 */
12 | -webkit-text-size-adjust: 100%;
13 | /* 2 */ }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 | body {
19 | margin: 0; }
20 |
21 | /* HTML5 display definitions
22 | ========================================================================== */
23 | /**
24 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
25 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
26 | * and Firefox.
27 | * Correct `block` display not defined for `main` in IE 11.
28 | */
29 | article,
30 | aside,
31 | details,
32 | figcaption,
33 | figure,
34 | footer,
35 | header,
36 | hgroup,
37 | main,
38 | menu,
39 | nav,
40 | section,
41 | summary {
42 | display: block; }
43 |
44 | /**
45 | * 1. Correct `inline-block` display not defined in IE 8/9.
46 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
47 | */
48 | audio,
49 | canvas,
50 | progress,
51 | video {
52 | display: inline-block;
53 | /* 1 */
54 | vertical-align: baseline;
55 | /* 2 */ }
56 |
57 | /**
58 | * Prevent modern browsers from displaying `audio` without controls.
59 | * Remove excess height in iOS 5 devices.
60 | */
61 | audio:not([controls]) {
62 | display: none;
63 | height: 0; }
64 |
65 | /**
66 | * Address `[hidden]` styling not present in IE 8/9/10.
67 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
68 | */
69 | [hidden],
70 | template {
71 | display: none; }
72 |
73 | /* Links
74 | ========================================================================== */
75 | /**
76 | * Remove the gray background color from active links in IE 10.
77 | */
78 | a {
79 | background-color: transparent; }
80 |
81 | /**
82 | * Improve readability when focused and also mouse hovered in all browsers.
83 | */
84 | a:active,
85 | a:hover {
86 | outline: 0; }
87 |
88 | /* Text-level semantics
89 | ========================================================================== */
90 | /**
91 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
92 | */
93 | abbr[title] {
94 | border-bottom: 1px dotted; }
95 |
96 | /**
97 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
98 | */
99 | b,
100 | strong {
101 | font-weight: bold; }
102 |
103 | /**
104 | * Address styling not present in Safari and Chrome.
105 | */
106 | dfn {
107 | font-style: italic; }
108 |
109 | /**
110 | * Address variable `h1` font-size and margin within `section` and `article`
111 | * contexts in Firefox 4+, Safari, and Chrome.
112 | */
113 | h1 {
114 | font-size: 2em;
115 | margin: 0.67em 0; }
116 |
117 | /**
118 | * Address styling not present in IE 8/9.
119 | */
120 | mark {
121 | background: #ff0;
122 | color: #000; }
123 |
124 | /**
125 | * Address inconsistent and variable font size in all browsers.
126 | */
127 | small {
128 | font-size: 80%; }
129 |
130 | /**
131 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
132 | */
133 | sub,
134 | sup {
135 | font-size: 75%;
136 | line-height: 0;
137 | position: relative;
138 | vertical-align: baseline; }
139 |
140 | sup {
141 | top: -0.5em; }
142 |
143 | sub {
144 | bottom: -0.25em; }
145 |
146 | /* Embedded content
147 | ========================================================================== */
148 | /**
149 | * Remove border when inside `a` element in IE 8/9/10.
150 | */
151 | img {
152 | border: 0; }
153 |
154 | /**
155 | * Correct overflow not hidden in IE 9/10/11.
156 | */
157 | svg:not(:root) {
158 | overflow: hidden; }
159 |
160 | /* Grouping content
161 | ========================================================================== */
162 | /**
163 | * Address margin not present in IE 8/9 and Safari.
164 | */
165 | figure {
166 | margin: 1em 40px; }
167 |
168 | /**
169 | * Address differences between Firefox and other browsers.
170 | */
171 | hr {
172 | -moz-box-sizing: content-box;
173 | box-sizing: content-box;
174 | height: 0; }
175 |
176 | /**
177 | * Contain overflow in all browsers.
178 | */
179 | pre {
180 | overflow: auto; }
181 |
182 | /**
183 | * Address odd `em`-unit font size rendering in all browsers.
184 | */
185 | code,
186 | kbd,
187 | pre,
188 | samp {
189 | font-family: monospace, monospace;
190 | font-size: 1em; }
191 |
192 | /* Forms
193 | ========================================================================== */
194 | /**
195 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
196 | * styling of `select`, unless a `border` property is set.
197 | */
198 | /**
199 | * 1. Correct color not being inherited.
200 | * Known issue: affects color of disabled elements.
201 | * 2. Correct font properties not being inherited.
202 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
203 | */
204 | button,
205 | input,
206 | optgroup,
207 | select,
208 | textarea {
209 | color: inherit;
210 | /* 1 */
211 | font: inherit;
212 | /* 2 */
213 | margin: 0;
214 | /* 3 */ }
215 |
216 | /**
217 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
218 | */
219 | button {
220 | overflow: visible; }
221 |
222 | /**
223 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
224 | * All other form control elements do not inherit `text-transform` values.
225 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
226 | * Correct `select` style inheritance in Firefox.
227 | */
228 | button,
229 | select {
230 | text-transform: none; }
231 |
232 | /**
233 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
234 | * and `video` controls.
235 | * 2. Correct inability to style clickable `input` types in iOS.
236 | * 3. Improve usability and consistency of cursor style between image-type
237 | * `input` and others.
238 | */
239 | button,
240 | html input[type="button"],
241 | input[type="reset"],
242 | input[type="submit"] {
243 | -webkit-appearance: button;
244 | /* 2 */
245 | cursor: pointer;
246 | /* 3 */ }
247 |
248 | /**
249 | * Re-set default cursor for disabled elements.
250 | */
251 | button[disabled],
252 | html input[disabled] {
253 | cursor: default; }
254 |
255 | /**
256 | * Remove inner padding and border in Firefox 4+.
257 | */
258 | button::-moz-focus-inner,
259 | input::-moz-focus-inner {
260 | border: 0;
261 | padding: 0; }
262 |
263 | /**
264 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
265 | * the UA stylesheet.
266 | */
267 | input {
268 | line-height: normal; }
269 |
270 | /**
271 | * It's recommended that you don't attempt to style these elements.
272 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
273 | *
274 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
275 | * 2. Remove excess padding in IE 8/9/10.
276 | */
277 | input[type="checkbox"],
278 | input[type="radio"] {
279 | box-sizing: border-box;
280 | /* 1 */
281 | padding: 0;
282 | /* 2 */ }
283 |
284 | /**
285 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
286 | * `font-size` values of the `input`, it causes the cursor style of the
287 | * decrement button to change from `default` to `text`.
288 | */
289 | input[type="number"]::-webkit-inner-spin-button,
290 | input[type="number"]::-webkit-outer-spin-button {
291 | height: auto; }
292 |
293 | /**
294 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
295 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
296 | * (include `-moz` to future-proof).
297 | */
298 | input[type="search"] {
299 | -webkit-appearance: textfield;
300 | /* 1 */
301 | -moz-box-sizing: content-box;
302 | -webkit-box-sizing: content-box;
303 | /* 2 */
304 | box-sizing: content-box; }
305 |
306 | /**
307 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
308 | * Safari (but not Chrome) clips the cancel button when the search input has
309 | * padding (and `textfield` appearance).
310 | */
311 | input[type="search"]::-webkit-search-cancel-button,
312 | input[type="search"]::-webkit-search-decoration {
313 | -webkit-appearance: none; }
314 |
315 | /**
316 | * Define consistent border, margin, and padding.
317 | */
318 | fieldset {
319 | border: 1px solid #c0c0c0;
320 | margin: 0 2px;
321 | padding: 0.35em 0.625em 0.75em; }
322 |
323 | /**
324 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
325 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
326 | */
327 | legend {
328 | border: 0;
329 | /* 1 */
330 | padding: 0;
331 | /* 2 */ }
332 |
333 | /**
334 | * Remove default vertical scrollbar in IE 8/9/10/11.
335 | */
336 | textarea {
337 | overflow: auto; }
338 |
339 | /**
340 | * Don't inherit the `font-weight` (applied by a rule above).
341 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
342 | */
343 | optgroup {
344 | font-weight: bold; }
345 |
346 | /* Tables
347 | ========================================================================== */
348 | /**
349 | * Remove most spacing between table cells.
350 | */
351 | table {
352 | border-collapse: collapse;
353 | border-spacing: 0; }
354 |
355 | td,
356 | th {
357 | padding: 0; }
358 |
359 | /*
360 | Copyright 2008-2013 Concur Technologies, Inc.
361 |
362 | Licensed under the Apache License, Version 2.0 (the "License"); you may
363 | not use this file except in compliance with the License. You may obtain
364 | a copy of the License at
365 |
366 | http://www.apache.org/licenses/LICENSE-2.0
367 |
368 | Unless required by applicable law or agreed to in writing, software
369 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
370 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
371 | License for the specific language governing permissions and limitations
372 | under the License.
373 | */
374 | .content h1, .content h2, .content h3, .content h4, body {
375 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
376 | font-size: 14px; }
377 |
378 | .content h1, .content h2, .content h3, .content h4 {
379 | font-weight: bold; }
380 |
381 | .content pre, .content code {
382 | font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;
383 | font-size: 12px;
384 | line-height: 1.5; }
385 |
386 | .content pre, .content code {
387 | word-break: break-all;
388 | hyphens: auto; }
389 |
390 | @font-face {
391 | font-family: 'slate';
392 | src: url('../../source/fonts/slate.eot?-syv14m');
393 | src: url('../../source/fonts/slate.eot?#iefix-syv14m') format("embedded-opentype"), url('../../source/fonts/slate.woff2?-syv14m') format("woff2"), url('../../source/fonts/slate.woff?-syv14m') format("woff"), url('../../source/fonts/slate.ttf?-syv14m') format("truetype"), url('../../source/fonts/slate.svg?-syv14m#slate') format("svg");
394 | font-weight: normal;
395 | font-style: normal; }
396 |
397 | .content aside.warning:before, .content aside.notice:before, .content aside.success:before {
398 | font-family: 'slate';
399 | speak: none;
400 | font-style: normal;
401 | font-weight: normal;
402 | font-variant: normal;
403 | text-transform: none;
404 | line-height: 1; }
405 |
406 | .content aside.warning:before {
407 | content: "\e600"; }
408 |
409 | .content aside.notice:before {
410 | content: "\e602"; }
411 |
412 | .content aside.success:before {
413 | content: "\e606"; }
414 |
415 | /*
416 | Copyright 2008-2013 Concur Technologies, Inc.
417 |
418 | Licensed under the Apache License, Version 2.0 (the "License"); you may
419 | not use this file except in compliance with the License. You may obtain
420 | a copy of the License at
421 |
422 | http://www.apache.org/licenses/LICENSE-2.0
423 |
424 | Unless required by applicable law or agreed to in writing, software
425 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
426 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
427 | License for the specific language governing permissions and limitations
428 | under the License.
429 | */
430 | .tocify, .toc-footer, .lang-selector, .search, #nav-button {
431 | display: none; }
432 |
433 | .tocify-wrapper > img {
434 | margin: 0 auto;
435 | display: block; }
436 |
437 | .content {
438 | font-size: 12px; }
439 | .content pre, .content code {
440 | border: 1px solid #999;
441 | border-radius: 5px;
442 | font-size: 0.8em; }
443 | .content pre code {
444 | border: 0; }
445 | .content pre {
446 | padding: 1.3em; }
447 | .content code {
448 | padding: 0.2em; }
449 | .content table {
450 | border: 1px solid #999; }
451 | .content table tr {
452 | border-bottom: 1px solid #999; }
453 | .content table td, .content table th {
454 | padding: 0.7em; }
455 | .content p {
456 | line-height: 1.5; }
457 | .content a {
458 | text-decoration: none;
459 | color: #000; }
460 | .content h1 {
461 | font-size: 2.5em;
462 | padding-top: 0.5em;
463 | padding-bottom: 0.5em;
464 | margin-top: 1em;
465 | margin-bottom: 21px;
466 | border: 2px solid #ccc;
467 | border-width: 2px 0;
468 | text-align: center; }
469 | .content h2 {
470 | font-size: 1.8em;
471 | margin-top: 2em;
472 | border-top: 2px solid #ccc;
473 | padding-top: 0.8em; }
474 | .content h1 + h2, .content h1 + div + h2 {
475 | border-top: none;
476 | padding-top: 0;
477 | margin-top: 0; }
478 | .content h3, .content h4 {
479 | font-size: 0.8em;
480 | margin-top: 1.5em;
481 | margin-bottom: 0.8em;
482 | text-transform: uppercase; }
483 | .content h5, .content h6 {
484 | text-transform: uppercase; }
485 | .content aside {
486 | padding: 1em;
487 | border: 1px solid #ccc;
488 | border-radius: 5px;
489 | margin-top: 1.5em;
490 | margin-bottom: 1.5em;
491 | line-height: 1.6; }
492 | .content aside:before {
493 | vertical-align: middle;
494 | padding-right: 0.5em;
495 | font-size: 14px; }
496 |
--------------------------------------------------------------------------------
/docs/pub/css/print_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
--------------------------------------------------------------------------------
/docs/pub/css/screen_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
3 | div .highlight {
4 | max-width: 95%;
5 | max-height: 350px;
6 | overflow-y: auto;
7 | overflow-x: hidden;
8 | }
9 | .toc-list-h3 {
10 | display: none;
11 | background-color: #1E2224;
12 | }
13 | .toc-h3 {
14 | padding-left: 35px;
15 | font-size: 11px;
16 | }
17 | .toc-list-h4 {
18 | display: none;
19 | background-color: #1E2224;
20 | }
21 | .toc-h4 {
22 | padding-left: 45px;
23 | font-size: 10px;
24 | }
25 | .toc-list-h5 {
26 | display: none;
27 | background-color: #1E2224;
28 | }
29 | .toc-h5 {
30 | padding-left: 55px;
31 | font-size: 9px;
32 | }
33 | .toc-list-h6 {
34 | display: none;
35 | background-color: #1E2224;
36 | }
37 | .toc-h6 {
38 | padding-left: 65px;
39 | font-size: 8px;
40 | }
41 | .well {
42 | background: rgba(0, 0, 0, 0.01);
43 | }
44 |
--------------------------------------------------------------------------------
/docs/pub/css/theme_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
--------------------------------------------------------------------------------
/docs/pub/css/tradegecko.min.css:
--------------------------------------------------------------------------------
1 | @import url("//fonts.googleapis.com/css?family=Open+Sans:400,600,700");@import url("//fonts.googleapis.com/css?family=Raleway:300,500,700");/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html,body,.content aside:before{font-size:14px}.tocify-wrapper,.tocify-wrapper .tocify-subheader .tocify-item>a,.faux-toc-link{font-size:13px;font-weight:600}.content code,.content pre,.tocify-wrapper .toc-footer li{font-size:12px}.private,.deprecated{font-size:10px;font-weight:600;text-transform:uppercase}html,body{font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-family:"Raleway", "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif;font-weight:300}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;line-height:1.5;color:#f6574d}.content code{word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(/fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.tocify-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify-wrapper>.search:before{content:"\e607"}html,body{color:#2d3033;padding:0;margin:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:rgba(244,244,245,0.5);height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.tocify-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#ffffff;padding:10px;box-sizing:border-box}.tocify-wrapper .lang-selector{display:none}.tocify-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.tocify-wrapper>img{display:block;max-width:100%}.tocify-wrapper>.search{position:relative;margin:10px 0}.tocify-wrapper>.search input{background:rgba(244,244,245,0.5);padding:10px 0 10px 30px;box-sizing:border-box;width:210px;border:0;outline:none;border-radius:3px;color:#6c7279}.tocify-wrapper>.search:before{position:absolute;top:13px;left:10px;color:#6c7279}.tocify-wrapper img+.tocify{margin-top:20px}.tocify-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background-color:rgba(244,244,245,0.5)}.tocify-wrapper .search-results.visible{height:30%;margin-bottom:1em}.tocify-wrapper .search-results li{margin:1em 10px}.tocify-wrapper .search-results a{color:#6c7279;text-decoration:none}.tocify-wrapper .search-results a:hover{text-decoration:none;color:#2d3033}.tocify-wrapper .tocify-item>a,.tocify-wrapper .toc-footer li{padding:10px 0;display:block;overflow-x:hidden}.tocify-wrapper ul,.tocify-wrapper li{list-style:none;margin:0;padding:0}.tocify-wrapper li{color:#6c7279;padding:0 0 0 10px;transition-property:background;transition-timing-function:linear;transition-duration:230ms}.tocify-wrapper li a{color:#6c7279;text-decoration:none}.tocify-wrapper .tocify-focus{background-color:rgba(244,244,245,0.5);color:#2d3033;border-radius:3px}.tocify-wrapper .tocify-subheader{display:none;background-color:#fff;font-weight:500}.tocify-wrapper .tocify-subheader .tocify-item>a{padding-left:20px}.tocify-wrapper .toc-footer{padding:10px;margin-top:1em;border-top:1px dotted #e2e6e8}.tocify-wrapper .toc-footer li,.tocify-wrapper .toc-footer a{color:#a4aeb3;text-decoration:none}.tocify-wrapper .toc-footer a:hover{text-decoration:none}.tocify-wrapper .toc-footer li{text-decoration:none}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#2d3033;text-decoration:none;font-weight:bold;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;margin-top:5px;padding:10px;background-color:#2d3033;border-radius:0 3px 3px 0}#nav-button img{height:16px;vertical-align:bottom}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:rgba(244,244,245,0.5);min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2b4c56;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;padding:1em 28px;background-color:#244048}.lang-selector{background-color:#244048;border-radius:3px;width:100%}.lang-selector a{display:block;float:left;color:#ffffff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#244048;color:#ffffff;border-radius:3px}.lang-selector a.active{background-color:#f6574d;color:#ffffff;border-radius:3px;font-weight:600}.lang-selector:after{content:'';clear:both;display:block}.content{position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:30px;padding-top:1em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #e2e6e8}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:24px;margin-bottom:0;padding-top:2em;padding-bottom:.5em}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:18px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2b4c56;border-bottom:2px solid rgba(244,244,245,0.5)}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #e2e6e8;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #e2e6e8}.content table tr:nth-child(odd)>td{background-color:rgba(253,253,253,0.5)}.content table tr:nth-child(even)>td{background-color:rgba(243,243,244,0.5)}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.8;margin-top:0}.content a{font-weight:700;text-decoration:none;color:#70cf32;transition:linear 50ms}.content a:hover{color:#61b729}.content img{max-width:100%}.content code{background-color:rgba(45,48,51,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.2em}.content aside.notice:before{color:#a4aeb3}.content aside.warning:before{color:#f6574d}.content aside.success:before{color:#70cf32}.content .search-highlight{padding:2px;margin:-2px;border-radius:3px;background-color:rgba(123,227,189,0.3)}.content pre,.content blockquote{background-color:#244048;color:#ffffff;padding:2em 28px;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#ffffff;text-decoration:none;border-bottom:1px solid #e2e6e8}.content blockquote>p{background-color:rgba(45,48,51,0.3);border-radius:3px;padding:13px;color:#f4f4f5}@media (max-width: 930px){.content{padding-top:28px}.tocify-wrapper{left:-230px}.tocify-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.tocify-wrapper .lang-selector{display:block;margin:10px 0}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.private,.deprecated{color:#ffffff;background-color:#a4aeb3;border-radius:3px;padding:1px 5px;border-radius:3px}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#2d3033}.faux-toc-link{padding:10px;text-decoration:none;color:#2d3033}
2 |
--------------------------------------------------------------------------------
/docs/pub/js/.gitignore:
--------------------------------------------------------------------------------
1 | shins.js
2 |
--------------------------------------------------------------------------------
/docs/pub/js/dummy.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/pub/js/dummy.js
--------------------------------------------------------------------------------
/docs/pub/pub/css/darkula.css:
--------------------------------------------------------------------------------
1 | /*
2 |
3 | Darkula color scheme from the JetBrains family of IDEs
4 |
5 | */
6 |
7 |
8 | .hljs {
9 | display: block;
10 | overflow-x: auto;
11 | padding: 0.5em;
12 | background: #2b2b2b;
13 | -webkit-text-size-adjust: none;
14 | }
15 |
16 | .hljs,
17 | .hljs-tag,
18 | .hljs-title,
19 | .css .hljs-rule,
20 | .css .hljs-value,
21 | .aspectj .hljs-function,
22 | .css .hljs-function .hljs-preprocessor,
23 | .hljs-pragma {
24 | color: #bababa;
25 | }
26 |
27 | .hljs-strongemphasis,
28 | .hljs-strong,
29 | .hljs-emphasis {
30 | color: #a8a8a2;
31 | }
32 |
33 | .hljs-bullet,
34 | .hljs-blockquote,
35 | .hljs-horizontal_rule,
36 | .hljs-number,
37 | .hljs-regexp,
38 | .alias .hljs-keyword,
39 | .hljs-literal,
40 | .hljs-hexcolor {
41 | color: #6896ba;
42 | }
43 |
44 | .hljs-tag .hljs-value,
45 | .hljs-code,
46 | .css .hljs-class,
47 | .hljs-class .hljs-title:last-child {
48 | color: #a6e22e;
49 | }
50 |
51 | .hljs-link_url {
52 | font-size: 80%;
53 | }
54 |
55 | .hljs-emphasis,
56 | .hljs-strongemphasis,
57 | .hljs-class .hljs-title:last-child,
58 | .hljs-typename {
59 | font-style: italic;
60 | }
61 |
62 | .hljs-keyword,
63 | .ruby .hljs-class .hljs-keyword:first-child,
64 | .ruby .hljs-function .hljs-keyword,
65 | .hljs-function,
66 | .hljs-change,
67 | .hljs-winutils,
68 | .hljs-flow,
69 | .nginx .hljs-title,
70 | .tex .hljs-special,
71 | .hljs-header,
72 | .hljs-attribute,
73 | .hljs-symbol,
74 | .hljs-symbol .hljs-string,
75 | .hljs-tag .hljs-title,
76 | .hljs-value,
77 | .alias .hljs-keyword:first-child,
78 | .css .hljs-tag,
79 | .css .unit,
80 | .css .hljs-important {
81 | color: #cb7832;
82 | }
83 |
84 | .hljs-function .hljs-keyword,
85 | .hljs-class .hljs-keyword:first-child,
86 | .hljs-aspect .hljs-keyword:first-child,
87 | .hljs-constant,
88 | .hljs-typename,
89 | .css .hljs-attribute {
90 | color: #cb7832;
91 | }
92 |
93 | .hljs-variable,
94 | .hljs-params,
95 | .hljs-class .hljs-title,
96 | .hljs-aspect .hljs-title {
97 | color: #b9b9b9;
98 | }
99 |
100 | .hljs-string,
101 | .css .hljs-id,
102 | .hljs-subst,
103 | .hljs-type,
104 | .ruby .hljs-class .hljs-parent,
105 | .hljs-built_in,
106 | .django .hljs-template_tag,
107 | .django .hljs-variable,
108 | .smalltalk .hljs-class,
109 | .django .hljs-filter .hljs-argument,
110 | .smalltalk .hljs-localvars,
111 | .smalltalk .hljs-array,
112 | .hljs-attr_selector,
113 | .hljs-pseudo,
114 | .hljs-addition,
115 | .hljs-stream,
116 | .hljs-envvar,
117 | .apache .hljs-tag,
118 | .apache .hljs-cbracket,
119 | .tex .hljs-command,
120 | .hljs-prompt,
121 | .hljs-link_label,
122 | .hljs-link_url,
123 | .hljs-name {
124 | color: #e0c46c;
125 | }
126 |
127 | .hljs-comment,
128 | .hljs-annotation,
129 | .hljs-pi,
130 | .hljs-doctype,
131 | .hljs-deletion,
132 | .hljs-shebang,
133 | .apache .hljs-sqbracket,
134 | .tex .hljs-formula {
135 | color: #7f7f7f;
136 | }
137 |
138 | .hljs-decorator {
139 | color: #bab429;
140 | }
141 |
142 | .coffeescript .javascript,
143 | .javascript .xml,
144 | .tex .hljs-formula,
145 | .xml .javascript,
146 | .xml .vbscript,
147 | .xml .css,
148 | .xml .hljs-cdata,
149 | .xml .php,
150 | .php .xml {
151 | opacity: 0.5;
152 | }
153 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/obsidian.css:
--------------------------------------------------------------------------------
1 | /**
2 | * Obsidian style
3 | * ported by Alexander Marenin (http://github.com/ioncreature)
4 | */
5 |
6 | .hljs {
7 | display: block;
8 | overflow-x: auto;
9 | padding: 0.5em;
10 | background: #282b2e;
11 | -webkit-text-size-adjust: none;
12 | }
13 |
14 | .hljs-keyword,
15 | .hljs-literal,
16 | .hljs-change,
17 | .hljs-winutils,
18 | .hljs-flow,
19 | .nginx .hljs-title,
20 | .css .hljs-id,
21 | .tex .hljs-special {
22 | color: #93c763;
23 | }
24 |
25 | .hljs-number {
26 | color: #ffcd22;
27 | }
28 |
29 | .hljs {
30 | color: #e0e2e4;
31 | }
32 |
33 | .css .hljs-tag,
34 | .css .hljs-pseudo {
35 | color: #d0d2b5;
36 | }
37 |
38 | .hljs-attribute,
39 | .hljs .hljs-constant {
40 | color: #668bb0;
41 | }
42 |
43 | .xml .hljs-attribute {
44 | color: #b3b689;
45 | }
46 |
47 | .xml .hljs-tag .hljs-value {
48 | color: #e8e2b7;
49 | }
50 |
51 | .hljs-code,
52 | .hljs-class .hljs-title,
53 | .hljs-header {
54 | color: white;
55 | }
56 |
57 | .hljs-class,
58 | .hljs-hexcolor {
59 | color: #93c763;
60 | }
61 |
62 | .hljs-regexp {
63 | color: #d39745;
64 | }
65 |
66 | .hljs-at_rule,
67 | .hljs-at_rule .hljs-keyword {
68 | color: #a082bd;
69 | }
70 |
71 | .hljs-doctype {
72 | color: #557182;
73 | }
74 |
75 | .hljs-link_url,
76 | .hljs-tag,
77 | .hljs-tag .hljs-title,
78 | .hljs-bullet,
79 | .hljs-subst,
80 | .hljs-emphasis,
81 | .hljs-type,
82 | .hljs-preprocessor,
83 | .hljs-pragma,
84 | .ruby .hljs-class .hljs-parent,
85 | .hljs-built_in,
86 | .django .hljs-template_tag,
87 | .django .hljs-variable,
88 | .smalltalk .hljs-class,
89 | .django .hljs-filter .hljs-argument,
90 | .smalltalk .hljs-localvars,
91 | .smalltalk .hljs-array,
92 | .hljs-attr_selector,
93 | .hljs-pseudo,
94 | .hljs-addition,
95 | .hljs-stream,
96 | .hljs-envvar,
97 | .apache .hljs-tag,
98 | .apache .hljs-cbracket,
99 | .tex .hljs-command,
100 | .hljs-prompt,
101 | .hljs-name {
102 | color: #8cbbad;
103 | }
104 |
105 | .hljs-string {
106 | color: #ec7600;
107 | }
108 |
109 | .hljs-comment,
110 | .hljs-annotation,
111 | .hljs-blockquote,
112 | .hljs-horizontal_rule,
113 | .hljs-decorator,
114 | .hljs-pi,
115 | .hljs-deletion,
116 | .hljs-shebang,
117 | .apache .hljs-sqbracket,
118 | .tex .hljs-formula {
119 | color: #818e96;
120 | }
121 |
122 | .hljs-keyword,
123 | .hljs-literal,
124 | .css .hljs-id,
125 | .hljs-doctag,
126 | .hljs-title,
127 | .hljs-header,
128 | .hljs-type,
129 | .vbscript .hljs-built_in,
130 | .rsl .hljs-built_in,
131 | .smalltalk .hljs-class,
132 | .diff .hljs-header,
133 | .hljs-chunk,
134 | .hljs-winutils,
135 | .bash .hljs-variable,
136 | .apache .hljs-tag,
137 | .tex .hljs-special,
138 | .hljs-request,
139 | .hljs-at_rule .hljs-keyword,
140 | .hljs-status {
141 | font-weight: bold;
142 | }
143 |
144 | .coffeescript .javascript,
145 | .javascript .xml,
146 | .tex .hljs-formula,
147 | .xml .javascript,
148 | .xml .vbscript,
149 | .xml .css,
150 | .xml .hljs-cdata {
151 | opacity: 0.5;
152 | }
153 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/print.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 | /**
3 | * 1. Set default font family to sans-serif.
4 | * 2. Prevent iOS text size adjust after orientation change, without disabling
5 | * user zoom.
6 | */
7 | html {
8 | font-family: sans-serif;
9 | /* 1 */
10 | -ms-text-size-adjust: 100%;
11 | /* 2 */
12 | -webkit-text-size-adjust: 100%;
13 | /* 2 */ }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 | body {
19 | margin: 0; }
20 |
21 | /* HTML5 display definitions
22 | ========================================================================== */
23 | /**
24 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
25 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
26 | * and Firefox.
27 | * Correct `block` display not defined for `main` in IE 11.
28 | */
29 | article,
30 | aside,
31 | details,
32 | figcaption,
33 | figure,
34 | footer,
35 | header,
36 | hgroup,
37 | main,
38 | menu,
39 | nav,
40 | section,
41 | summary {
42 | display: block; }
43 |
44 | /**
45 | * 1. Correct `inline-block` display not defined in IE 8/9.
46 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
47 | */
48 | audio,
49 | canvas,
50 | progress,
51 | video {
52 | display: inline-block;
53 | /* 1 */
54 | vertical-align: baseline;
55 | /* 2 */ }
56 |
57 | /**
58 | * Prevent modern browsers from displaying `audio` without controls.
59 | * Remove excess height in iOS 5 devices.
60 | */
61 | audio:not([controls]) {
62 | display: none;
63 | height: 0; }
64 |
65 | /**
66 | * Address `[hidden]` styling not present in IE 8/9/10.
67 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
68 | */
69 | [hidden],
70 | template {
71 | display: none; }
72 |
73 | /* Links
74 | ========================================================================== */
75 | /**
76 | * Remove the gray background color from active links in IE 10.
77 | */
78 | a {
79 | background-color: transparent; }
80 |
81 | /**
82 | * Improve readability when focused and also mouse hovered in all browsers.
83 | */
84 | a:active,
85 | a:hover {
86 | outline: 0; }
87 |
88 | /* Text-level semantics
89 | ========================================================================== */
90 | /**
91 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
92 | */
93 | abbr[title] {
94 | border-bottom: 1px dotted; }
95 |
96 | /**
97 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
98 | */
99 | b,
100 | strong {
101 | font-weight: bold; }
102 |
103 | /**
104 | * Address styling not present in Safari and Chrome.
105 | */
106 | dfn {
107 | font-style: italic; }
108 |
109 | /**
110 | * Address variable `h1` font-size and margin within `section` and `article`
111 | * contexts in Firefox 4+, Safari, and Chrome.
112 | */
113 | h1 {
114 | font-size: 2em;
115 | margin: 0.67em 0; }
116 |
117 | /**
118 | * Address styling not present in IE 8/9.
119 | */
120 | mark {
121 | background: #ff0;
122 | color: #000; }
123 |
124 | /**
125 | * Address inconsistent and variable font size in all browsers.
126 | */
127 | small {
128 | font-size: 80%; }
129 |
130 | /**
131 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
132 | */
133 | sub,
134 | sup {
135 | font-size: 75%;
136 | line-height: 0;
137 | position: relative;
138 | vertical-align: baseline; }
139 |
140 | sup {
141 | top: -0.5em; }
142 |
143 | sub {
144 | bottom: -0.25em; }
145 |
146 | /* Embedded content
147 | ========================================================================== */
148 | /**
149 | * Remove border when inside `a` element in IE 8/9/10.
150 | */
151 | img {
152 | border: 0; }
153 |
154 | /**
155 | * Correct overflow not hidden in IE 9/10/11.
156 | */
157 | svg:not(:root) {
158 | overflow: hidden; }
159 |
160 | /* Grouping content
161 | ========================================================================== */
162 | /**
163 | * Address margin not present in IE 8/9 and Safari.
164 | */
165 | figure {
166 | margin: 1em 40px; }
167 |
168 | /**
169 | * Address differences between Firefox and other browsers.
170 | */
171 | hr {
172 | -moz-box-sizing: content-box;
173 | box-sizing: content-box;
174 | height: 0; }
175 |
176 | /**
177 | * Contain overflow in all browsers.
178 | */
179 | pre {
180 | overflow: auto; }
181 |
182 | /**
183 | * Address odd `em`-unit font size rendering in all browsers.
184 | */
185 | code,
186 | kbd,
187 | pre,
188 | samp {
189 | font-family: monospace, monospace;
190 | font-size: 1em; }
191 |
192 | /* Forms
193 | ========================================================================== */
194 | /**
195 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
196 | * styling of `select`, unless a `border` property is set.
197 | */
198 | /**
199 | * 1. Correct color not being inherited.
200 | * Known issue: affects color of disabled elements.
201 | * 2. Correct font properties not being inherited.
202 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
203 | */
204 | button,
205 | input,
206 | optgroup,
207 | select,
208 | textarea {
209 | color: inherit;
210 | /* 1 */
211 | font: inherit;
212 | /* 2 */
213 | margin: 0;
214 | /* 3 */ }
215 |
216 | /**
217 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
218 | */
219 | button {
220 | overflow: visible; }
221 |
222 | /**
223 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
224 | * All other form control elements do not inherit `text-transform` values.
225 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
226 | * Correct `select` style inheritance in Firefox.
227 | */
228 | button,
229 | select {
230 | text-transform: none; }
231 |
232 | /**
233 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
234 | * and `video` controls.
235 | * 2. Correct inability to style clickable `input` types in iOS.
236 | * 3. Improve usability and consistency of cursor style between image-type
237 | * `input` and others.
238 | */
239 | button,
240 | html input[type="button"],
241 | input[type="reset"],
242 | input[type="submit"] {
243 | -webkit-appearance: button;
244 | /* 2 */
245 | cursor: pointer;
246 | /* 3 */ }
247 |
248 | /**
249 | * Re-set default cursor for disabled elements.
250 | */
251 | button[disabled],
252 | html input[disabled] {
253 | cursor: default; }
254 |
255 | /**
256 | * Remove inner padding and border in Firefox 4+.
257 | */
258 | button::-moz-focus-inner,
259 | input::-moz-focus-inner {
260 | border: 0;
261 | padding: 0; }
262 |
263 | /**
264 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
265 | * the UA stylesheet.
266 | */
267 | input {
268 | line-height: normal; }
269 |
270 | /**
271 | * It's recommended that you don't attempt to style these elements.
272 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
273 | *
274 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
275 | * 2. Remove excess padding in IE 8/9/10.
276 | */
277 | input[type="checkbox"],
278 | input[type="radio"] {
279 | box-sizing: border-box;
280 | /* 1 */
281 | padding: 0;
282 | /* 2 */ }
283 |
284 | /**
285 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
286 | * `font-size` values of the `input`, it causes the cursor style of the
287 | * decrement button to change from `default` to `text`.
288 | */
289 | input[type="number"]::-webkit-inner-spin-button,
290 | input[type="number"]::-webkit-outer-spin-button {
291 | height: auto; }
292 |
293 | /**
294 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
295 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
296 | * (include `-moz` to future-proof).
297 | */
298 | input[type="search"] {
299 | -webkit-appearance: textfield;
300 | /* 1 */
301 | -moz-box-sizing: content-box;
302 | -webkit-box-sizing: content-box;
303 | /* 2 */
304 | box-sizing: content-box; }
305 |
306 | /**
307 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
308 | * Safari (but not Chrome) clips the cancel button when the search input has
309 | * padding (and `textfield` appearance).
310 | */
311 | input[type="search"]::-webkit-search-cancel-button,
312 | input[type="search"]::-webkit-search-decoration {
313 | -webkit-appearance: none; }
314 |
315 | /**
316 | * Define consistent border, margin, and padding.
317 | */
318 | fieldset {
319 | border: 1px solid #c0c0c0;
320 | margin: 0 2px;
321 | padding: 0.35em 0.625em 0.75em; }
322 |
323 | /**
324 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
325 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
326 | */
327 | legend {
328 | border: 0;
329 | /* 1 */
330 | padding: 0;
331 | /* 2 */ }
332 |
333 | /**
334 | * Remove default vertical scrollbar in IE 8/9/10/11.
335 | */
336 | textarea {
337 | overflow: auto; }
338 |
339 | /**
340 | * Don't inherit the `font-weight` (applied by a rule above).
341 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
342 | */
343 | optgroup {
344 | font-weight: bold; }
345 |
346 | /* Tables
347 | ========================================================================== */
348 | /**
349 | * Remove most spacing between table cells.
350 | */
351 | table {
352 | border-collapse: collapse;
353 | border-spacing: 0; }
354 |
355 | td,
356 | th {
357 | padding: 0; }
358 |
359 | /*
360 | Copyright 2008-2013 Concur Technologies, Inc.
361 |
362 | Licensed under the Apache License, Version 2.0 (the "License"); you may
363 | not use this file except in compliance with the License. You may obtain
364 | a copy of the License at
365 |
366 | http://www.apache.org/licenses/LICENSE-2.0
367 |
368 | Unless required by applicable law or agreed to in writing, software
369 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
370 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
371 | License for the specific language governing permissions and limitations
372 | under the License.
373 | */
374 | .content h1, .content h2, .content h3, .content h4, body {
375 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
376 | font-size: 14px; }
377 |
378 | .content h1, .content h2, .content h3, .content h4 {
379 | font-weight: bold; }
380 |
381 | .content pre, .content code {
382 | font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;
383 | font-size: 12px;
384 | line-height: 1.5; }
385 |
386 | .content pre, .content code {
387 | word-break: break-all;
388 | hyphens: auto; }
389 |
390 | @font-face {
391 | font-family: 'slate';
392 | src: url('../../source/fonts/slate.eot?-syv14m');
393 | src: url('../../source/fonts/slate.eot?#iefix-syv14m') format("embedded-opentype"), url('../../source/fonts/slate.woff2?-syv14m') format("woff2"), url('../../source/fonts/slate.woff?-syv14m') format("woff"), url('../../source/fonts/slate.ttf?-syv14m') format("truetype"), url('../../source/fonts/slate.svg?-syv14m#slate') format("svg");
394 | font-weight: normal;
395 | font-style: normal; }
396 |
397 | .content aside.warning:before, .content aside.notice:before, .content aside.success:before {
398 | font-family: 'slate';
399 | speak: none;
400 | font-style: normal;
401 | font-weight: normal;
402 | font-variant: normal;
403 | text-transform: none;
404 | line-height: 1; }
405 |
406 | .content aside.warning:before {
407 | content: "\e600"; }
408 |
409 | .content aside.notice:before {
410 | content: "\e602"; }
411 |
412 | .content aside.success:before {
413 | content: "\e606"; }
414 |
415 | /*
416 | Copyright 2008-2013 Concur Technologies, Inc.
417 |
418 | Licensed under the Apache License, Version 2.0 (the "License"); you may
419 | not use this file except in compliance with the License. You may obtain
420 | a copy of the License at
421 |
422 | http://www.apache.org/licenses/LICENSE-2.0
423 |
424 | Unless required by applicable law or agreed to in writing, software
425 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
426 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
427 | License for the specific language governing permissions and limitations
428 | under the License.
429 | */
430 | .tocify, .toc-footer, .lang-selector, .search, #nav-button {
431 | display: none; }
432 |
433 | .tocify-wrapper > img {
434 | margin: 0 auto;
435 | display: block; }
436 |
437 | .content {
438 | font-size: 12px; }
439 | .content pre, .content code {
440 | border: 1px solid #999;
441 | border-radius: 5px;
442 | font-size: 0.8em; }
443 | .content pre code {
444 | border: 0; }
445 | .content pre {
446 | padding: 1.3em; }
447 | .content code {
448 | padding: 0.2em; }
449 | .content table {
450 | border: 1px solid #999; }
451 | .content table tr {
452 | border-bottom: 1px solid #999; }
453 | .content table td, .content table th {
454 | padding: 0.7em; }
455 | .content p {
456 | line-height: 1.5; }
457 | .content a {
458 | text-decoration: none;
459 | color: #000; }
460 | .content h1 {
461 | font-size: 2.5em;
462 | padding-top: 0.5em;
463 | padding-bottom: 0.5em;
464 | margin-top: 1em;
465 | margin-bottom: 21px;
466 | border: 2px solid #ccc;
467 | border-width: 2px 0;
468 | text-align: center; }
469 | .content h2 {
470 | font-size: 1.8em;
471 | margin-top: 2em;
472 | border-top: 2px solid #ccc;
473 | padding-top: 0.8em; }
474 | .content h1 + h2, .content h1 + div + h2 {
475 | border-top: none;
476 | padding-top: 0;
477 | margin-top: 0; }
478 | .content h3, .content h4 {
479 | font-size: 0.8em;
480 | margin-top: 1.5em;
481 | margin-bottom: 0.8em;
482 | text-transform: uppercase; }
483 | .content h5, .content h6 {
484 | text-transform: uppercase; }
485 | .content aside {
486 | padding: 1em;
487 | border: 1px solid #ccc;
488 | border-radius: 5px;
489 | margin-top: 1.5em;
490 | margin-bottom: 1.5em;
491 | line-height: 1.6; }
492 | .content aside:before {
493 | vertical-align: middle;
494 | padding-right: 0.5em;
495 | font-size: 14px; }
496 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/print_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/screen_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
3 | div .highlight {
4 | max-width: 95%;
5 | max-height: 350px;
6 | overflow-y: auto;
7 | overflow-x: hidden;
8 | }
9 | .toc-list-h3 {
10 | display: none;
11 | background-color: #1E2224;
12 | }
13 | .toc-h3 {
14 | padding-left: 35px;
15 | font-size: 11px;
16 | }
17 | .toc-list-h4 {
18 | display: none;
19 | background-color: #1E2224;
20 | }
21 | .toc-h4 {
22 | padding-left: 45px;
23 | font-size: 10px;
24 | }
25 | .toc-list-h5 {
26 | display: none;
27 | background-color: #1E2224;
28 | }
29 | .toc-h5 {
30 | padding-left: 55px;
31 | font-size: 9px;
32 | }
33 | .toc-list-h6 {
34 | display: none;
35 | background-color: #1E2224;
36 | }
37 | .toc-h6 {
38 | padding-left: 65px;
39 | font-size: 8px;
40 | }
41 | .well {
42 | background: rgba(0, 0, 0, 0.01);
43 | }
44 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/theme_overrides.css:
--------------------------------------------------------------------------------
1 | /* place your custom CSS overrides here */
2 |
--------------------------------------------------------------------------------
/docs/pub/pub/css/tradegecko.min.css:
--------------------------------------------------------------------------------
1 | @import url("//fonts.googleapis.com/css?family=Open+Sans:400,600,700");@import url("//fonts.googleapis.com/css?family=Raleway:300,500,700");/*! normalize.css v3.0.2 | MIT License | git.io/normalize */html{font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}article,aside,details,figcaption,figure,footer,header,hgroup,main,menu,nav,section,summary{display:block}audio,canvas,progress,video{display:inline-block;vertical-align:baseline}audio:not([controls]){display:none;height:0}[hidden],template{display:none}a{background-color:transparent}a:active,a:hover{outline:0}abbr[title]{border-bottom:1px dotted}b,strong{font-weight:bold}dfn{font-style:italic}h1{font-size:2em;margin:0.67em 0}mark{background:#ff0;color:#000}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-0.5em}sub{bottom:-0.25em}img{border:0}svg:not(:root){overflow:hidden}figure{margin:1em 40px}hr{box-sizing:content-box;height:0}pre{overflow:auto}code,kbd,pre,samp{font-family:monospace, monospace;font-size:1em}button,input,optgroup,select,textarea{color:inherit;font:inherit;margin:0}button{overflow:visible}button,select{text-transform:none}button,html input[type="button"],input[type="reset"],input[type="submit"]{-webkit-appearance:button;cursor:pointer}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{border:0;padding:0}input{line-height:normal}input[type="checkbox"],input[type="radio"]{box-sizing:border-box;padding:0}input[type="number"]::-webkit-inner-spin-button,input[type="number"]::-webkit-outer-spin-button{height:auto}input[type="search"]{-webkit-appearance:textfield;box-sizing:content-box}input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{-webkit-appearance:none}fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:0.35em 0.625em 0.75em}legend{border:0;padding:0}textarea{overflow:auto}optgroup{font-weight:bold}table{border-collapse:collapse;border-spacing:0}td,th{padding:0}html,body,.content aside:before{font-size:14px}.tocify-wrapper,.tocify-wrapper .tocify-subheader .tocify-item>a,.faux-toc-link{font-size:13px;font-weight:600}.content code,.content pre,.tocify-wrapper .toc-footer li{font-size:12px}.private,.deprecated{font-size:10px;font-weight:600;text-transform:uppercase}html,body{font-family:"Open Sans", "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif}.content h1,.content h2,.content h3,.content h4,.content h5,.content h6{font-family:"Raleway", "Helvetica Neue", Helvetica, Arial, "Microsoft Yahei","微软雅黑", STXihei, "华文细黑", sans-serif;font-weight:300}.content code,.content pre{font-family:Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;line-height:1.5;color:#f6574d}.content code{word-break:break-all;word-break:break-word;-webkit-hyphens:auto;-moz-hyphens:auto;-ms-hyphens:auto;hyphens:auto}@font-face{font-family:'slate';src:url(/fonts/slate.eot?-syv14m);src:url(../fonts/slate.eot?#iefix-syv14m) format("embedded-opentype"),url(../fonts/slate.woff2?-syv14m) format("woff2"),url(../fonts/slate.woff?-syv14m) format("woff"),url(../fonts/slate.ttf?-syv14m) format("truetype"),url(../fonts/slate.svg?-syv14m#slate) format("svg");font-weight:normal;font-style:normal}.content aside.warning:before,.content aside.notice:before,.content aside.success:before,.tocify-wrapper>.search:before{font-family:'slate';speak:none;font-style:normal;font-weight:normal;font-variant:normal;text-transform:none;line-height:1}.content aside.warning:before{content:"\e600"}.content aside.notice:before{content:"\e602"}.content aside.success:before{content:"\e606"}.tocify-wrapper>.search:before{content:"\e607"}html,body{color:#2d3033;padding:0;margin:0;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:rgba(244,244,245,0.5);height:100%;-webkit-text-size-adjust:none}#toc>ul>li>a>span{float:right;background-color:#2484FF;border-radius:40px;width:20px}.tocify-wrapper{transition:left 0.3s ease-in-out;overflow-y:auto;overflow-x:hidden;position:fixed;z-index:30;top:0;left:0;bottom:0;width:230px;background-color:#ffffff;padding:10px;box-sizing:border-box}.tocify-wrapper .lang-selector{display:none}.tocify-wrapper .lang-selector a{padding-top:0.5em;padding-bottom:0.5em}.tocify-wrapper>img{display:block;max-width:100%}.tocify-wrapper>.search{position:relative;margin:10px 0}.tocify-wrapper>.search input{background:rgba(244,244,245,0.5);padding:10px 0 10px 30px;box-sizing:border-box;width:210px;border:0;outline:none;border-radius:3px;color:#6c7279}.tocify-wrapper>.search:before{position:absolute;top:13px;left:10px;color:#6c7279}.tocify-wrapper img+.tocify{margin-top:20px}.tocify-wrapper .search-results{margin-top:0;box-sizing:border-box;height:0;overflow-y:auto;overflow-x:hidden;transition-property:height, margin;transition-duration:180ms;transition-timing-function:ease-in-out;background-color:rgba(244,244,245,0.5)}.tocify-wrapper .search-results.visible{height:30%;margin-bottom:1em}.tocify-wrapper .search-results li{margin:1em 10px}.tocify-wrapper .search-results a{color:#6c7279;text-decoration:none}.tocify-wrapper .search-results a:hover{text-decoration:none;color:#2d3033}.tocify-wrapper .tocify-item>a,.tocify-wrapper .toc-footer li{padding:10px 0;display:block;overflow-x:hidden}.tocify-wrapper ul,.tocify-wrapper li{list-style:none;margin:0;padding:0}.tocify-wrapper li{color:#6c7279;padding:0 0 0 10px;transition-property:background;transition-timing-function:linear;transition-duration:230ms}.tocify-wrapper li a{color:#6c7279;text-decoration:none}.tocify-wrapper .tocify-focus{background-color:rgba(244,244,245,0.5);color:#2d3033;border-radius:3px}.tocify-wrapper .tocify-subheader{display:none;background-color:#fff;font-weight:500}.tocify-wrapper .tocify-subheader .tocify-item>a{padding-left:20px}.tocify-wrapper .toc-footer{padding:10px;margin-top:1em;border-top:1px dotted #e2e6e8}.tocify-wrapper .toc-footer li,.tocify-wrapper .toc-footer a{color:#a4aeb3;text-decoration:none}.tocify-wrapper .toc-footer a:hover{text-decoration:none}.tocify-wrapper .toc-footer li{text-decoration:none}#nav-button{padding:0 1.5em 5em 0;display:none;position:fixed;top:0;left:0;z-index:100;color:#2d3033;text-decoration:none;font-weight:bold;line-height:16px;transition:left 0.3s ease-in-out}#nav-button span{display:block;margin-top:5px;padding:10px;background-color:#2d3033;border-radius:0 3px 3px 0}#nav-button img{height:16px;vertical-align:bottom}#nav-button.open{left:230px}.page-wrapper{margin-left:230px;position:relative;z-index:10;background-color:rgba(244,244,245,0.5);min-height:100%;padding-bottom:1px}.page-wrapper .dark-box{width:50%;background-color:#2b4c56;position:absolute;right:0;top:0;bottom:0}.page-wrapper .lang-selector{position:fixed;z-index:50;padding:1em 28px;background-color:#244048}.lang-selector{background-color:#244048;border-radius:3px;width:100%}.lang-selector a{display:block;float:left;color:#ffffff;text-decoration:none;padding:0 10px;line-height:30px;outline:0}.lang-selector a:active,.lang-selector a:focus{background-color:#244048;color:#ffffff;border-radius:3px}.lang-selector a.active{background-color:#f6574d;color:#ffffff;border-radius:3px;font-weight:600}.lang-selector:after{content:'';clear:both;display:block}.content{position:relative;z-index:30}.content:after{content:'';display:block;clear:both}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:50%;padding:0 28px;box-sizing:border-box;display:block}.content>ul,.content>ol{padding-left:43px}.content>h1,.content>h2,.content>div{clear:both}.content h1{font-size:30px;padding-top:1em;padding-bottom:0.5em;margin-bottom:21px;margin-top:2em;border-top:1px solid #e2e6e8}.content h1:first-child,.content div:first-child+h1{border-top-width:0;margin-top:0}.content h2{font-size:24px;margin-bottom:0;padding-top:2em;padding-bottom:.5em}.content h1+h2,.content h1+div+h2{margin-top:-21px;border-top:none}.content h3,.content h4,.content h5,.content h6{font-size:18px;margin-top:2.5em;margin-bottom:0.8em}.content h4,.content h5,.content h6{font-size:10px}.content hr{margin:2em 0;border-top:2px solid #2b4c56;border-bottom:2px solid rgba(244,244,245,0.5)}.content table{margin-bottom:1em;overflow:auto}.content table th,.content table td{text-align:left;vertical-align:top;line-height:1.6}.content table th{padding:5px 10px;border-bottom:1px solid #e2e6e8;vertical-align:bottom}.content table td{padding:10px}.content table tr:last-child{border-bottom:1px solid #e2e6e8}.content table tr:nth-child(odd)>td{background-color:rgba(253,253,253,0.5)}.content table tr:nth-child(even)>td{background-color:rgba(243,243,244,0.5)}.content dt{font-weight:bold}.content dd{margin-left:15px}.content p,.content li,.content dt,.content dd{line-height:1.8;margin-top:0}.content a{font-weight:700;text-decoration:none;color:#70cf32;transition:linear 50ms}.content a:hover{color:#61b729}.content img{max-width:100%}.content code{background-color:rgba(45,48,51,0.05);padding:3px;border-radius:3px}.content pre>code{background-color:transparent;padding:0}.content aside{padding-top:1em;padding-bottom:1em;margin-top:1.5em;margin-bottom:1.5em;line-height:1.6}.content aside:before{vertical-align:middle;padding-right:0.2em}.content aside.notice:before{color:#a4aeb3}.content aside.warning:before{color:#f6574d}.content aside.success:before{color:#70cf32}.content .search-highlight{padding:2px;margin:-2px;border-radius:3px;background-color:rgba(123,227,189,0.3)}.content pre,.content blockquote{background-color:#244048;color:#ffffff;padding:2em 28px;margin:0;width:50%;float:right;clear:right;box-sizing:border-box}.content pre>p,.content blockquote>p{margin:0}.content pre a,.content blockquote a{color:#ffffff;text-decoration:none;border-bottom:1px solid #e2e6e8}.content blockquote>p{background-color:rgba(45,48,51,0.3);border-radius:3px;padding:13px;color:#f4f4f5}@media (max-width: 930px){.content{padding-top:28px}.tocify-wrapper{left:-230px}.tocify-wrapper.open{left:0}.page-wrapper{margin-left:0}#nav-button{display:block}}@media (max-width: 700px){.dark-box{display:none}.content>h1,.content>h2,.content>h3,.content>h4,.content>h5,.content>h6,.content>p,.content>table,.content>ul,.content>ol,.content>aside,.content>dl{margin-right:0}.tocify-wrapper .lang-selector{display:block;margin:10px 0}.page-wrapper .lang-selector{display:none}.content pre,.content blockquote{width:auto;float:none}.content>pre+h1,.content>blockquote+h1,.content>pre+h2,.content>blockquote+h2,.content>pre+h3,.content>blockquote+h3,.content>pre+h4,.content>blockquote+h4,.content>pre+h5,.content>blockquote+h5,.content>pre+h6,.content>blockquote+h6,.content>pre+p,.content>blockquote+p,.content>pre+table,.content>blockquote+table,.content>pre+ul,.content>blockquote+ul,.content>pre+ol,.content>blockquote+ol,.content>pre+aside,.content>blockquote+aside,.content>pre+dl,.content>blockquote+dl{margin-top:28px}}.private,.deprecated{color:#ffffff;background-color:#a4aeb3;border-radius:3px;padding:1px 5px;border-radius:3px}.highlight .c,.highlight .cm,.highlight .c1,.highlight .cs{color:#909090}.highlight,.highlight .w{background-color:#2d3033}.faux-toc-link{padding:10px;text-decoration:none;color:#2d3033}
2 |
--------------------------------------------------------------------------------
/docs/pub/pub/js/.gitignore:
--------------------------------------------------------------------------------
1 | shins.js
2 |
--------------------------------------------------------------------------------
/docs/pub/pub/js/dummy.js:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/pub/pub/js/dummy.js
--------------------------------------------------------------------------------
/docs/source/asyncapi.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: AsyncAPI Sample v1.0.0
3 | language_tabs:
4 | - javascript--nodejs: Node.JS
5 | - javascript: JavaScript
6 | - ruby: Ruby
7 | - python: Python
8 | - java: Java
9 | - go: Go
10 | headingLevel: 3
11 | toc_footers:
12 | - 'See OpenAPI example'
13 | includes: []
14 | search: true
15 | highlight_theme: darkula
16 |
17 | ---
18 |
19 | # AsyncAPI Sample v1.0.0
20 |
21 | > Scroll down for code samples, example headers and payloads. Select a language for code samples from the tabs above or the mobile navigation menu.
22 |
23 | This is a simple example of an _AsyncAPI_ document.
24 |
25 | Base URLs:
26 |
27 | * mqtt://api.company.com:{port}/{app-id}
28 |
29 | * **app-id** - You can find your `app-id` in our control panel, under the auth tab. Default: demo
30 |
31 | * **port** - Default: 5676
32 |
33 | * 5676
34 | * 5677
35 |
36 | Base Topic: **hitch**
37 |
38 | Terms of service
39 |
40 | # user
41 |
42 | ## accounts.1.0.action.user.signup
43 |
44 | ### publish
45 |
46 | Note: **Deprecated**
47 |
48 | > Example headers
49 |
50 | ```json
51 |
52 | {
53 | "qos": 1,
54 | "retainFlag": false
55 | }
56 | ```
57 |
58 | > Example payload
59 |
60 | ```json
61 |
62 | {
63 | "user": {
64 | "full_name": "string",
65 | "username": "string"
66 | },
67 | "signup": {
68 | "method": "email",
69 | "datetime": "2018-04-03T07:32:55Z"
70 | }
71 | }
72 | ```
73 |
74 | > Code Samples
75 |
76 | ```javascript--nodejs
77 | const hermes = require('hermesjs');
78 | const app = hermes();
79 |
80 | app.from.client.send({
81 | topic: 'accounts.1.0.action.user.signup',
82 | payload: {
83 | "user": {
84 | "full_name": "string",
85 | "username": "string"
86 | },
87 | "signup": {
88 | "method": "email",
89 | "datetime": "2018-04-03T07:32:55Z"
90 | }
91 | }
92 | });
93 |
94 | ```
95 |
96 | ```javascript
97 | //Coming soon...
98 |
99 | ```
100 |
101 | ```ruby
102 | # Coming soon...
103 |
104 | ```
105 |
106 | ```python
107 | //Coming soon...
108 |
109 | ```
110 |
111 | ```java
112 | /* asyncapi-java-tools */
113 | try (JmsServer client = builder.build()) {
114 |
115 | client.accounts.1.0.action.user.signup()
116 | .publish({
117 | "user": {
118 | "full_name": "string",
119 | "username": "string"
120 | },
121 | "signup": {
122 | "method": "email",
123 | "datetime": "2018-04-03T07:32:55Z"
124 | }
125 | })
126 | .toCompletableFuture()
127 | .get();
128 | }
129 |
130 | ```
131 |
132 | ```go
133 | //Coming soon...
134 |
135 | ```
136 |
137 | *Action to sign a user up.*
138 |
139 | Multiline description of what this action does. **It allows Markdown.**
140 |
141 | #### Headers
142 |
143 | ##### Properties
144 |
145 | |Name|Type|Required|Description|
146 | |---|---|---|---|
147 | |qos|integer|false|Quality of Service|
148 | |retainFlag|boolean|false|This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts.|
149 |
150 | #### Payload
151 |
152 | ##### Properties
153 |
154 | |Name|Type|Required|Description|
155 | |---|---|---|---|
156 | |user|object|false|No description|
157 | |full_name|string|false|User full name|
158 | |username|string|true|User handle|
159 | |signup|object|false|No description|
160 | |method|string|true|Signup method|
161 | |datetime|string|true|Date and Time of the message|
162 |
163 |
166 |
167 | # Default
168 |
169 | ## accounts.1.0.event.user.signup
170 |
171 | ### subscribe
172 |
173 | > Example payload
174 |
175 | ```json
176 |
177 | {
178 | "user": {
179 | "id": "string",
180 | "full_name": "string",
181 | "username": "string"
182 | },
183 | "signup": {
184 | "method": "email",
185 | "datetime": "2018-04-03T07:32:55Z"
186 | }
187 | }
188 | ```
189 |
190 | > Code Samples
191 |
192 | ```javascript--nodejs
193 | const hermes = require('hermesjs');
194 | const app = hermes();
195 |
196 | app.from.client.send({
197 | topic: 'accounts.1.0.event.user.signup',
198 | payload: {
199 | "user": {
200 | "id": "string",
201 | "full_name": "string",
202 | "username": "string"
203 | },
204 | "signup": {
205 | "method": "email",
206 | "datetime": "2018-04-03T07:32:55Z"
207 | }
208 | }
209 | });
210 |
211 | ```
212 |
213 | ```javascript
214 | //Coming soon...
215 |
216 | ```
217 |
218 | ```ruby
219 | # Coming soon...
220 |
221 | ```
222 |
223 | ```python
224 | //Coming soon...
225 |
226 | ```
227 |
228 | ```java
229 | /* asyncapi-java-tools */
230 | try (JmsServer client = builder.build()) {
231 |
232 | client.accounts.1.0.event.user.signup()
233 | .publish({
234 | "user": {
235 | "id": "string",
236 | "full_name": "string",
237 | "username": "string"
238 | },
239 | "signup": {
240 | "method": "email",
241 | "datetime": "2018-04-03T07:32:55Z"
242 | }
243 | })
244 | .toCompletableFuture()
245 | .get();
246 | }
247 |
248 | ```
249 |
250 | ```go
251 | //Coming soon...
252 |
253 | ```
254 |
255 | #### Payload
256 |
257 | ##### Properties
258 |
259 | |Name|Type|Required|Description|
260 | |---|---|---|---|
261 | |user|object|false|No description|
262 | |id|string|true|Resource identifier|
263 | |full_name|string|false|User full name|
264 | |username|string|true|User handle|
265 | |signup|object|false|No description|
266 | |method|string|true|Signup method|
267 | |datetime|string|true|Date and Time of the message|
268 |
269 |
272 |
273 | # Schemas
274 |
275 | ## id
276 |
277 |
278 |
279 | ```json
280 | "string"
281 | ```
282 |
283 | ### Properties
284 |
285 | |Name|Type|Required|Description|
286 | |---|---|---|---|
287 | |id|[id](#schemaid)|false|Resource identifier|
288 |
289 | ## username
290 |
291 |
292 |
293 | ```json
294 | "string"
295 | ```
296 |
297 | ### Properties
298 |
299 | |Name|Type|Required|Description|
300 | |---|---|---|---|
301 | |username|[username](#schemausername)|false|User handle|
302 |
303 | ## datetime
304 |
305 |
306 |
307 | ```json
308 | "2018-04-03T07:32:55Z"
309 | ```
310 |
311 | ### Properties
312 |
313 | |Name|Type|Required|Description|
314 | |---|---|---|---|
315 | |datetime|[datetime](#schemadatetime)(date-time)|false|Date and Time of the message|
316 |
317 | ## MQTTQoSHeader
318 |
319 |
320 |
321 | ```json
322 | 1
323 | ```
324 |
325 | ### Properties
326 |
327 | |Name|Type|Required|Description|
328 | |---|---|---|---|
329 | |qos|[MQTTQoSHeader](#schemamqttqosheader)(int32)|false|Quality of Service|
330 |
331 | #### Enumerated Values
332 |
333 | |Property|Value|
334 | |---|---|
335 | |qos|0|
336 | |qos|2|
337 |
338 | ## MQTTRetainHeader
339 |
340 |
341 |
342 | ```json
343 | false
344 | ```
345 |
346 | ### Properties
347 |
348 | |Name|Type|Required|Description|
349 | |---|---|---|---|
350 | |retainFlag|[MQTTRetainHeader](#schemamqttretainheader)|false|This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts.|
351 |
352 | ## user
353 |
354 |
355 |
356 | ```json
357 | {
358 | "id": "string",
359 | "full_name": "string",
360 | "username": "string"
361 | }
362 | ```
363 |
364 | ### Properties
365 |
366 | |Name|Type|Required|Description|
367 | |---|---|---|---|
368 | |» id|[id](#schemaid)|true|Resource identifier|
369 | |» full_name|string|false|User full name|
370 | |» username|[username](#schemausername)|true|User handle|
371 |
372 | ## userCreate
373 |
374 |
375 |
376 | ```json
377 | {
378 | "full_name": "string",
379 | "username": "string"
380 | }
381 | ```
382 |
383 | ### Properties
384 |
385 | |Name|Type|Required|Description|
386 | |---|---|---|---|
387 | |» full_name|string|false|User full name|
388 | |» username|[username](#schemausername)|true|User handle|
389 |
390 | ## signup
391 |
392 |
393 |
394 | ```json
395 | {
396 | "method": "email",
397 | "datetime": "2018-04-03T07:32:55Z"
398 | }
399 | ```
400 |
401 | ### Properties
402 |
403 | |Name|Type|Required|Description|
404 | |---|---|---|---|
405 | |» method|string|true|Signup method|
406 | |» datetime|[datetime](#schemadatetime)(date-time)|true|Date and Time of the message|
407 |
408 | #### Enumerated Values
409 |
410 | |Property|Value|
411 | |---|---|
412 | |method|email|
413 | |method|facebook|
414 | |method|twitter|
415 | |method|github|
416 | |method|google|
417 |
418 |
--------------------------------------------------------------------------------
/docs/source/fonts/slate.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/fonts/slate.eot
--------------------------------------------------------------------------------
/docs/source/fonts/slate.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/docs/source/fonts/slate.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/fonts/slate.ttf
--------------------------------------------------------------------------------
/docs/source/fonts/slate.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/fonts/slate.woff
--------------------------------------------------------------------------------
/docs/source/fonts/slate.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/fonts/slate.woff2
--------------------------------------------------------------------------------
/docs/source/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/images/logo.png
--------------------------------------------------------------------------------
/docs/source/images/navbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/images/navbar.png
--------------------------------------------------------------------------------
/docs/source/include.md:
--------------------------------------------------------------------------------
1 | ###
2 |
3 | This content comes from `include.md`
4 |
--------------------------------------------------------------------------------
/docs/source/includes/_errors.md:
--------------------------------------------------------------------------------
1 | # Errors
2 |
3 |
6 |
7 | The Kittn API uses the following error codes:
8 |
9 |
10 | Error Code | Meaning
11 | ---------- | -------
12 | 400 | Bad Request -- Your request is invalid.
13 | 401 | Unauthorized -- Your API key is wrong.
14 | 403 | Forbidden -- The kitten requested is hidden for administrators only.
15 | 404 | Not Found -- The specified kitten could not be found.
16 | 405 | Method Not Allowed -- You tried to access a kitten with an invalid method.
17 | 406 | Not Acceptable -- You requested a format that isn't json.
18 | 410 | Gone -- The kitten requested has been removed from our servers.
19 | 418 | I'm a teapot.
20 | 429 | Too Many Requests -- You're requesting too many kittens! Slow down!
21 | 500 | Internal Server Error -- We had a problem with our server. Try again later.
22 | 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later.
23 |
--------------------------------------------------------------------------------
/docs/source/includes/_head.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/docs/source/javascripts/all.bundle.inc:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/source/javascripts/all.inc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
23 |
--------------------------------------------------------------------------------
/docs/source/javascripts/all.js:
--------------------------------------------------------------------------------
1 | //= require ./all_nosearch
2 | //= require ./app/_search
3 |
--------------------------------------------------------------------------------
/docs/source/javascripts/all_nosearch.inc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
19 |
--------------------------------------------------------------------------------
/docs/source/javascripts/all_nosearch.js:
--------------------------------------------------------------------------------
1 | //= require ./lib/_energize
2 | //= require ./app/_toc
3 | //= require ./app/_lang
4 |
5 | $(function() {
6 | loadToc($('#toc'), '.toc-link', '.toc-list-h2, .toc-list-h3, .toc-list-h4, .toc-list-h5, .toc-list-h6', 10);
7 | setupLanguages($('body').data('languages'));
8 | $('.content').imagesLoaded( function() {
9 | window.recacheHeights();
10 | window.refreshToc();
11 | });
12 | });
13 |
14 | window.onpopstate = function() {
15 | activateLanguage(getLanguageFromQueryString());
16 | };
17 |
--------------------------------------------------------------------------------
/docs/source/javascripts/app/_lang.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_jquery
2 |
3 | /*
4 | Copyright 2008-2013 Concur Technologies, Inc.
5 |
6 | Licensed under the Apache License, Version 2.0 (the "License"); you may
7 | not use this file except in compliance with the License. You may obtain
8 | a copy of the License at
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | License for the specific language governing permissions and limitations
16 | under the License.
17 | */
18 | ;(function () {
19 | 'use strict';
20 |
21 | var languages = [];
22 |
23 | window.setupLanguages = setupLanguages;
24 | window.activateLanguage = activateLanguage;
25 | window.getLanguageFromQueryString = getLanguageFromQueryString;
26 |
27 | function activateLanguage(language) {
28 | if (!language) return;
29 | if (language === "") return;
30 |
31 | $(".lang-selector a").removeClass('active');
32 | $(".lang-selector a[data-language-name='" + language + "']").addClass('active');
33 | for (var i=0; i < languages.length; i++) {
34 | $(".highlight.tab-" + languages[i]).hide();
35 | $(".lang-specific." + languages[i]).hide();
36 | }
37 | $(".highlight.tab-" + language).show();
38 | $(".lang-specific." + language).show();
39 |
40 | window.recacheHeights();
41 |
42 | // scroll to the new location of the position
43 | if ($(window.location.hash).get(0)) {
44 | $(window.location.hash).get(0).scrollIntoView(true);
45 | }
46 | }
47 |
48 | // parseURL and stringifyURL are from https://github.com/sindresorhus/query-string
49 | // MIT licensed
50 | // https://github.com/sindresorhus/query-string/blob/7bee64c16f2da1a326579e96977b9227bf6da9e6/license
51 | function parseURL(str) {
52 | if (typeof str !== 'string') {
53 | return {};
54 | }
55 |
56 | str = str.trim().replace(/^(\?|#|&)/, '');
57 |
58 | if (!str) {
59 | return {};
60 | }
61 |
62 | return str.split('&').reduce(function (ret, param) {
63 | var parts = param.replace(/\+/g, ' ').split('=');
64 | var key = parts[0];
65 | var val = parts[1];
66 |
67 | key = decodeURIComponent(key);
68 | // missing `=` should be `null`:
69 | // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
70 | val = val === undefined ? null : decodeURIComponent(val);
71 |
72 | if (!ret.hasOwnProperty(key)) {
73 | ret[key] = val;
74 | } else if (Array.isArray(ret[key])) {
75 | ret[key].push(val);
76 | } else {
77 | ret[key] = [ret[key], val];
78 | }
79 |
80 | return ret;
81 | }, {});
82 | };
83 |
84 | function stringifyURL(obj) {
85 | return obj ? Object.keys(obj).sort().map(function (key) {
86 | var val = obj[key];
87 |
88 | if (Array.isArray(val)) {
89 | return val.sort().map(function (val2) {
90 | return encodeURIComponent(key) + '=' + encodeURIComponent(val2);
91 | }).join('&');
92 | }
93 |
94 | return encodeURIComponent(key) + '=' + encodeURIComponent(val);
95 | }).join('&') : '';
96 | };
97 |
98 | // gets the language set in the query string
99 | function getLanguageFromQueryString() {
100 | if (location.search.length >= 1) {
101 | var language = parseURL(location.search).language;
102 | if (language) {
103 | return language;
104 | } else if (jQuery.inArray(location.search.substr(1), languages) != -1) {
105 | return location.search.substr(1);
106 | }
107 | }
108 |
109 | return false;
110 | }
111 |
112 | // returns a new query string with the new language in it
113 | function generateNewQueryString(language) {
114 | var url = parseURL(location.search);
115 | if (url.language) {
116 | url.language = language;
117 | return stringifyURL(url);
118 | }
119 | return language;
120 | }
121 |
122 | // if a button is clicked, add the state to the history
123 | function pushURL(language) {
124 | if (!history) { return; }
125 | var hash = window.location.hash;
126 | if (hash) {
127 | hash = hash.replace(/^#+/, '');
128 | }
129 | history.pushState({}, '', '?' + generateNewQueryString(language) + '#' + hash);
130 |
131 | // save language as next default
132 | localStorage.setItem("language", language);
133 | }
134 |
135 | function setupLanguages(l) {
136 | var defaultLanguage = localStorage.getItem("language");
137 |
138 | languages = l;
139 |
140 | var presetLanguage = getLanguageFromQueryString();
141 | if (presetLanguage) {
142 | // the language is in the URL, so use that language!
143 | activateLanguage(presetLanguage);
144 |
145 | localStorage.setItem("language", presetLanguage);
146 | } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) {
147 | // the language was the last selected one saved in localstorage, so use that language!
148 | activateLanguage(defaultLanguage);
149 | } else {
150 | // no language selected, so use the default
151 | activateLanguage(languages[0]);
152 | }
153 | }
154 |
155 | // if we click on a language tab, activate that language
156 | $(function() {
157 | $(".lang-selector a").on("click", function() {
158 | var language = $(this).data("language-name");
159 | pushURL(language);
160 | activateLanguage(language);
161 | return false;
162 | });
163 | });
164 | })();
165 |
--------------------------------------------------------------------------------
/docs/source/javascripts/app/_search.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_lunr
2 | //= require ../lib/_jquery
3 | //= require ../lib/_jquery.highlight
4 | ;(function () {
5 | 'use strict';
6 |
7 | var content, searchResults;
8 | var highlightOpts = { element: 'span', className: 'search-highlight' };
9 | var searchDelay = 0;
10 | var timeoutHandle = 0;
11 |
12 | var index = new lunr.Index();
13 |
14 | index.ref('id');
15 | index.field('title', { boost: 10 });
16 | index.field('body');
17 | index.pipeline.add(lunr.trimmer, lunr.stopWordFilter);
18 |
19 | $(populate);
20 | $(bind);
21 |
22 | function populate() {
23 | $('h1, h2').each(function() {
24 | var title = $(this);
25 | var body = title.nextUntil('h1, h2');
26 | index.add({
27 | id: title.prop('id'),
28 | title: title.text(),
29 | body: body.text()
30 | });
31 | });
32 |
33 | determineSearchDelay();
34 | }
35 | function determineSearchDelay() {
36 | if(index.tokenStore.length>5000) {
37 | searchDelay = 300;
38 | }
39 | }
40 |
41 | function bind() {
42 | content = $('.content');
43 | searchResults = $('.search-results');
44 |
45 | $('#input-search').on('keyup',function(e) {
46 | var wait = function() {
47 | return function(executingFunction, waitTime){
48 | clearTimeout(timeoutHandle);
49 | timeoutHandle = setTimeout(executingFunction, waitTime);
50 | };
51 | }();
52 | wait(function(){
53 | search(e);
54 | }, searchDelay );
55 | });
56 | }
57 |
58 | function search(event) {
59 |
60 | var searchInput = $('#input-search')[0];
61 |
62 | unhighlight();
63 | searchResults.addClass('visible');
64 |
65 | // ESC clears the field
66 | if (event.keyCode === 27) searchInput.value = '';
67 |
68 | if (searchInput.value) {
69 | var results = index.search(searchInput.value).filter(function(r) {
70 | return r.score > 0.0001;
71 | });
72 |
73 | if (results.length) {
74 | searchResults.empty();
75 | $.each(results, function (index, result) {
76 | var elem = document.getElementById(result.ref);
77 | searchResults.append("
" + $(elem).text() + "");
78 | });
79 | highlight.call(searchInput);
80 | } else {
81 | searchResults.html('');
82 | $('.search-results li').text('No Results Found for "' + searchInput.value + '"');
83 | }
84 | } else {
85 | unhighlight();
86 | searchResults.removeClass('visible');
87 | }
88 | }
89 |
90 | function highlight() {
91 | if (this.value) content.highlight(this.value, highlightOpts);
92 | }
93 |
94 | function unhighlight() {
95 | content.unhighlight(highlightOpts);
96 | }
97 | })();
98 |
99 |
--------------------------------------------------------------------------------
/docs/source/javascripts/app/_toc.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_jquery
2 | //= require ../lib/_imagesloaded.min
3 | ;(function () {
4 | 'use strict';
5 |
6 | var htmlPattern = /<[^>]*>/g;
7 | var loaded = false;
8 |
9 | var debounce = function(func, waitTime) {
10 | var timeout = false;
11 | return function() {
12 | if (timeout === false) {
13 | setTimeout(function() {
14 | func();
15 | timeout = false;
16 | }, waitTime);
17 | timeout = true;
18 | }
19 | };
20 | };
21 |
22 | var closeToc = function() {
23 | $(".toc-wrapper").removeClass('open');
24 | $("#nav-button").removeClass('open');
25 | };
26 |
27 | function loadToc($toc, tocLinkSelector, tocListSelector, scrollOffset) {
28 | var headerHeights = {};
29 | var pageHeight = 0;
30 | var windowHeight = 0;
31 | var originalTitle = document.title;
32 |
33 | var recacheHeights = function() {
34 | headerHeights = {};
35 | pageHeight = $(document).height();
36 | windowHeight = $(window).height();
37 |
38 | $toc.find(tocLinkSelector).each(function() {
39 | var targetId = $(this).attr('href');
40 | if (targetId[0] === "#") {
41 | headerHeights[targetId] = $(targetId).offset().top;
42 | }
43 | });
44 | };
45 |
46 | var refreshToc = function() {
47 | var currentTop = $(document).scrollTop() + scrollOffset;
48 |
49 | if (currentTop + windowHeight >= pageHeight) {
50 | // at bottom of page, so just select last header by making currentTop very large
51 | // this fixes the problem where the last header won't ever show as active if its content
52 | // is shorter than the window height
53 | currentTop = pageHeight + 1000;
54 | }
55 |
56 | var best = null;
57 | for (var name in headerHeights) {
58 | if ((headerHeights[name] < currentTop && headerHeights[name] > headerHeights[best]) || best === null) {
59 | best = name;
60 | }
61 | }
62 |
63 | // Catch the initial load case
64 | if (currentTop == scrollOffset && !loaded) {
65 | best = window.location.hash;
66 | loaded = true;
67 | }
68 |
69 | var $best = $toc.find("[href='" + best + "']").first();
70 | if (!$best.hasClass("active")) {
71 | // .active is applied to the ToC link we're currently on, and its parent s selected by tocListSelector
72 | // .active-expanded is applied to the ToC links that are parents of this one
73 | $toc.find(".active").removeClass("active");
74 | $toc.find(".active-parent").removeClass("active-parent");
75 | $best.addClass("active");
76 | $best.parents(tocListSelector).addClass("active").siblings(tocLinkSelector).addClass('active-parent');
77 | $best.siblings(tocListSelector).addClass("active");
78 | $toc.find(tocListSelector).filter(":not(.active)").slideUp(150);
79 | $toc.find(tocListSelector).filter(".active").slideDown(150);
80 | if (window.history.replaceState) {
81 | window.history.replaceState(null, "", best);
82 | }
83 | var thisTitle = $best.data("title")
84 | if (thisTitle !== undefined && thisTitle.length > 0) {
85 | document.title = thisTitle + " – " + originalTitle;
86 | } else {
87 | document.title = originalTitle;
88 | }
89 | }
90 | };
91 |
92 | var makeToc = function() {
93 | recacheHeights();
94 | refreshToc();
95 |
96 | $("#nav-button").click(function() {
97 | $(".toc-wrapper").toggleClass('open');
98 | $("#nav-button").toggleClass('open');
99 | return false;
100 | });
101 | $(".page-wrapper").click(closeToc);
102 | $(".toc-link").click(closeToc);
103 |
104 | // reload immediately after scrolling on toc click
105 | $toc.find(tocLinkSelector).click(function() {
106 | setTimeout(function() {
107 | refreshToc();
108 | }, 0);
109 | });
110 |
111 | $(window).scroll(debounce(refreshToc, 200));
112 | $(window).resize(debounce(recacheHeights, 200));
113 | };
114 |
115 | makeToc();
116 |
117 | window.recacheHeights = recacheHeights;
118 | window.refreshToc = refreshToc;
119 | }
120 |
121 | window.loadToc = loadToc;
122 | })();
123 |
--------------------------------------------------------------------------------
/docs/source/layouts/layout.ejs:
--------------------------------------------------------------------------------
1 | <%#
2 | Copyright 2008-2013 Concur Technologies, Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may
5 | not use this file except in compliance with the License. You may obtain
6 | a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | License for the specific language governing permissions and limitations
14 | under the License.
15 | %>
16 | <% var language_tabs = current_page.data.language_tabs || []; %>
17 | <% if (current_page.data.includes) { for (var include in current_page.data.includes) { %>
18 | <% page_content += partial(current_page.data.includes[include]) %>
19 | <% } %>
20 |
21 |
22 |
23 |
24 |
25 |
26 | <%= current_page.data.title || "API Documentation" %>
27 |
28 |
30 | <%- stylesheet_link_tag('screen','screen') %>
31 | <%- stylesheet_link_tag('print','print') %>
32 | <%- stylesheet_link_tag(current_page.data.highlight_theme||'darkula','screen') %>
33 | <% if (current_page.data.search) {%>
34 | <%- javascript_include_tag("all") %>
35 | <% } else { %>
36 | <%- javascript_include_tag("all_nosearch") %>
37 | <% } %>
38 | <%- partial('head') %>
39 |
40 |
41 | class="<%= current_page.page_classes %>" <% } %>data-languages="<%- language_array(current_page.data.language_tabs) %>">
42 |
43 |
44 | NAV
45 | <%- image_tag('navbar.png','Navigation') %>
46 |
47 |
48 |
49 | <%- logo_image_tag() %>
50 | <% if (language_tabs.length>0) {%>
51 |
60 | <% } %>
61 | <% if (current_page.data.search) { %>
62 |
63 |
64 |
65 |
66 | <% } %>
67 |
68 |
69 | <% for (var h1 of toc_data(page_content)) { %>
70 | -
71 | <%= h1.content %>
72 | <% if (h1.children && (h1.children.length > 0)) { %>
73 |
74 | <% for (var h2 of h1.children) { %>
75 | -
76 | <%= h2.content %>
77 | <% if (h2.children && (h2.children.length > 0)) { %>
78 |
79 | <% for (var h3 of h2.children) { %>
80 | -
81 | <%= h3.content %>
82 |
83 | <% } %>
84 |
85 | <% } %>
86 |
87 | <% } %>
88 |
89 | <% } %>
90 |
91 | <% } %>
92 |
93 |
94 | <% if (current_page.data.toc_footers) { %>
95 |
100 | <% } %>
101 |
102 |
103 |
104 |
105 | <%- page_content %>
106 |
107 |
108 | <% if (language_tabs) %>
109 |
118 | <% } %>
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/docs/source/master.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Master/Include Sample v1.0.0
3 | language_tabs:
4 | - javascript--nodejs: Node.JS
5 | - javascript: JavaScript
6 | - python: Python
7 | - ruby: Ruby
8 | - java: Java
9 | - go: Go
10 | toc_footers:
11 | - 'See OpenAPI example'
12 | includes: []
13 | search: true
14 | highlight_theme: darkula
15 | ---
16 |
17 | # Master content
18 |
19 | ## Included content
20 |
21 | include::include.md[]
22 |
23 | ## Included content 2
24 |
25 | !INCLUDE include.md
26 |
27 |
--------------------------------------------------------------------------------
/docs/source/semoasa.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: SEMOASA documentation
3 | language_tabs:
4 | - json
5 | - yaml
6 | toc_footers: []
7 | includes: []
8 | search: true
9 | highlight_theme: darkula
10 |
11 | ---
12 |
13 | # OpenAPI Extensions Documentation
14 |
15 | > Scroll down for schema examples. Select a format for examples from the tabs above or the mobile navigation menu.
16 |
17 | This documentation was automatically generated from a v0.1.0 [SEMOASA](https://github.com/RepreZen/SEMOASA) file.
18 |
19 |
20 |
21 |
22 |
23 |
24 | # com.amazon.aws
25 |
26 |
27 |
28 | Provider: Amazon Web Services
29 |
30 |
31 |
32 |
33 | ## x-amazon-apigateway-integration
34 | > x-amazon-apigateway-integration example
35 | ```json
36 | {
37 | "cacheKeyParameters": [
38 | "string"
39 | ],
40 | "cacheNamespace": "string",
41 | "credentials": "string",
42 | "contentHandling": "string",
43 | "httpMethod": "string"
44 | }
45 | ```
46 | ```yaml
47 | cacheKeyParameters:
48 | - string
49 | cacheNamespace: string
50 | credentials: string
51 | contentHandling: string
52 | httpMethod: string
53 |
54 | ```
55 |
56 |
57 |
58 |
59 |
60 | *Specifies the integration of the method with the backend.*
61 |
62 | Specifies details of the backend integration used for this method.
63 | This extension is an extended property of the Swagger Operation object.
64 | The result is an API Gateway integration object.
65 |
66 |
67 |
68 |
69 |
70 | AWS documentation page in the Amazon API Gateway Developer Guide
71 |
72 |
73 |
74 |
75 | |Property|Type|Required|Description
76 | |---|---|---|---|
77 | |cacheNamespace|string|false|An API-specific tag group of related cached parameters.|
78 | |credentials|string|false|For AWS IAM role-based credentials, specify the ARN of an appropriate IAM role. If unspecified, credentials will default to resource-based permissions that must be added manually to allow the API to access the resource. For more information, see Granting Permissions Using a Resource Policy. |
79 | |contentHandling|string|false|Request payload encoding conversion types. Valid values are 1) CONVERT_TO_TEXT, for converting a binary payload into a Base64-encoded string or converting a text payload into a utf-8-encoded string or passing through the text payload natively without modification, and 2) CONVERT_TO_BINARY, for converting a text payload into Base64-decoded blob or passing through a binary payload natively without modification. |
80 | |httpMethod|string|false|The HTTP method used in the integration request. For Lambda function invocations, the value must be POST. |
81 | |cacheKeyParameters|[string]|false|A list of request parameters whose values are to be cached.|
82 |
83 |
84 |
85 | **In the OpenAPI specification v2.0, this extension can be used as follows:**
86 |
87 |
88 |
89 |
92 |
93 | |Object|Description|
94 | |---|---|
95 | |OperationObject|Describes a single API operation on a path.|
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | **In the OpenAPI specification v3.x, this extension can be used as follows:**
109 |
110 |
111 |
112 |
115 |
116 | |Object|Description|
117 | |---|---|
118 | |OperationObject|Describes a single API operation on a path.|
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/docs/source/source/asyncapi.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: AsyncAPI Sample v1.0.0
3 | language_tabs:
4 | - javascript--nodejs: Node.JS
5 | - javascript: JavaScript
6 | - ruby: Ruby
7 | - python: Python
8 | - java: Java
9 | - go: Go
10 | headingLevel: 3
11 | toc_footers:
12 | - 'See OpenAPI example'
13 | includes: []
14 | search: true
15 | highlight_theme: darkula
16 |
17 | ---
18 |
19 | # AsyncAPI Sample v1.0.0
20 |
21 | > Scroll down for code samples, example headers and payloads. Select a language for code samples from the tabs above or the mobile navigation menu.
22 |
23 | This is a simple example of an _AsyncAPI_ document.
24 |
25 | Base URLs:
26 |
27 | * mqtt://api.company.com:{port}/{app-id}
28 |
29 | * **app-id** - You can find your `app-id` in our control panel, under the auth tab. Default: demo
30 |
31 | * **port** - Default: 5676
32 |
33 | * 5676
34 | * 5677
35 |
36 | Base Topic: **hitch**
37 |
38 | Terms of service
39 |
40 | # user
41 |
42 | ## accounts.1.0.action.user.signup
43 |
44 | ### publish
45 |
46 | Note: **Deprecated**
47 |
48 | > Example headers
49 |
50 | ```json
51 |
52 | {
53 | "qos": 1,
54 | "retainFlag": false
55 | }
56 | ```
57 |
58 | > Example payload
59 |
60 | ```json
61 |
62 | {
63 | "user": {
64 | "full_name": "string",
65 | "username": "string"
66 | },
67 | "signup": {
68 | "method": "email",
69 | "datetime": "2018-04-03T07:32:55Z"
70 | }
71 | }
72 | ```
73 |
74 | > Code Samples
75 |
76 | ```javascript--nodejs
77 | const hermes = require('hermesjs');
78 | const app = hermes();
79 |
80 | app.from.client.send({
81 | topic: 'accounts.1.0.action.user.signup',
82 | payload: {
83 | "user": {
84 | "full_name": "string",
85 | "username": "string"
86 | },
87 | "signup": {
88 | "method": "email",
89 | "datetime": "2018-04-03T07:32:55Z"
90 | }
91 | }
92 | });
93 |
94 | ```
95 |
96 | ```javascript
97 | //Coming soon...
98 |
99 | ```
100 |
101 | ```ruby
102 | # Coming soon...
103 |
104 | ```
105 |
106 | ```python
107 | //Coming soon...
108 |
109 | ```
110 |
111 | ```java
112 | /* asyncapi-java-tools */
113 | try (JmsServer client = builder.build()) {
114 |
115 | client.accounts.1.0.action.user.signup()
116 | .publish({
117 | "user": {
118 | "full_name": "string",
119 | "username": "string"
120 | },
121 | "signup": {
122 | "method": "email",
123 | "datetime": "2018-04-03T07:32:55Z"
124 | }
125 | })
126 | .toCompletableFuture()
127 | .get();
128 | }
129 |
130 | ```
131 |
132 | ```go
133 | //Coming soon...
134 |
135 | ```
136 |
137 | *Action to sign a user up.*
138 |
139 | Multiline description of what this action does. **It allows Markdown.**
140 |
141 | #### Headers
142 |
143 | ##### Properties
144 |
145 | |Name|Type|Required|Description|
146 | |---|---|---|---|
147 | |qos|integer|false|Quality of Service|
148 | |retainFlag|boolean|false|This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts.|
149 |
150 | #### Payload
151 |
152 | ##### Properties
153 |
154 | |Name|Type|Required|Description|
155 | |---|---|---|---|
156 | |user|object|false|No description|
157 | |full_name|string|false|User full name|
158 | |username|string|true|User handle|
159 | |signup|object|false|No description|
160 | |method|string|true|Signup method|
161 | |datetime|string|true|Date and Time of the message|
162 |
163 |
166 |
167 | # Default
168 |
169 | ## accounts.1.0.event.user.signup
170 |
171 | ### subscribe
172 |
173 | > Example payload
174 |
175 | ```json
176 |
177 | {
178 | "user": {
179 | "id": "string",
180 | "full_name": "string",
181 | "username": "string"
182 | },
183 | "signup": {
184 | "method": "email",
185 | "datetime": "2018-04-03T07:32:55Z"
186 | }
187 | }
188 | ```
189 |
190 | > Code Samples
191 |
192 | ```javascript--nodejs
193 | const hermes = require('hermesjs');
194 | const app = hermes();
195 |
196 | app.from.client.send({
197 | topic: 'accounts.1.0.event.user.signup',
198 | payload: {
199 | "user": {
200 | "id": "string",
201 | "full_name": "string",
202 | "username": "string"
203 | },
204 | "signup": {
205 | "method": "email",
206 | "datetime": "2018-04-03T07:32:55Z"
207 | }
208 | }
209 | });
210 |
211 | ```
212 |
213 | ```javascript
214 | //Coming soon...
215 |
216 | ```
217 |
218 | ```ruby
219 | # Coming soon...
220 |
221 | ```
222 |
223 | ```python
224 | //Coming soon...
225 |
226 | ```
227 |
228 | ```java
229 | /* asyncapi-java-tools */
230 | try (JmsServer client = builder.build()) {
231 |
232 | client.accounts.1.0.event.user.signup()
233 | .publish({
234 | "user": {
235 | "id": "string",
236 | "full_name": "string",
237 | "username": "string"
238 | },
239 | "signup": {
240 | "method": "email",
241 | "datetime": "2018-04-03T07:32:55Z"
242 | }
243 | })
244 | .toCompletableFuture()
245 | .get();
246 | }
247 |
248 | ```
249 |
250 | ```go
251 | //Coming soon...
252 |
253 | ```
254 |
255 | #### Payload
256 |
257 | ##### Properties
258 |
259 | |Name|Type|Required|Description|
260 | |---|---|---|---|
261 | |user|object|false|No description|
262 | |id|string|true|Resource identifier|
263 | |full_name|string|false|User full name|
264 | |username|string|true|User handle|
265 | |signup|object|false|No description|
266 | |method|string|true|Signup method|
267 | |datetime|string|true|Date and Time of the message|
268 |
269 |
272 |
273 | # Schemas
274 |
275 | ## id
276 |
277 |
278 |
279 | ```json
280 | "string"
281 | ```
282 |
283 | ### Properties
284 |
285 | |Name|Type|Required|Description|
286 | |---|---|---|---|
287 | |id|[id](#schemaid)|false|Resource identifier|
288 |
289 | ## username
290 |
291 |
292 |
293 | ```json
294 | "string"
295 | ```
296 |
297 | ### Properties
298 |
299 | |Name|Type|Required|Description|
300 | |---|---|---|---|
301 | |username|[username](#schemausername)|false|User handle|
302 |
303 | ## datetime
304 |
305 |
306 |
307 | ```json
308 | "2018-04-03T07:32:55Z"
309 | ```
310 |
311 | ### Properties
312 |
313 | |Name|Type|Required|Description|
314 | |---|---|---|---|
315 | |datetime|[datetime](#schemadatetime)(date-time)|false|Date and Time of the message|
316 |
317 | ## MQTTQoSHeader
318 |
319 |
320 |
321 | ```json
322 | 1
323 | ```
324 |
325 | ### Properties
326 |
327 | |Name|Type|Required|Description|
328 | |---|---|---|---|
329 | |qos|[MQTTQoSHeader](#schemamqttqosheader)(int32)|false|Quality of Service|
330 |
331 | #### Enumerated Values
332 |
333 | |Property|Value|
334 | |---|---|
335 | |qos|0|
336 | |qos|2|
337 |
338 | ## MQTTRetainHeader
339 |
340 |
341 |
342 | ```json
343 | false
344 | ```
345 |
346 | ### Properties
347 |
348 | |Name|Type|Required|Description|
349 | |---|---|---|---|
350 | |retainFlag|[MQTTRetainHeader](#schemamqttretainheader)|false|This flag determines if the message will be saved by the broker for the specified topic as last known good value. New clients that subscribe to that topic will receive the last retained message on that topic instantly after subscribing. More on retained messages and best practices in one of the next posts.|
351 |
352 | ## user
353 |
354 |
355 |
356 | ```json
357 | {
358 | "id": "string",
359 | "full_name": "string",
360 | "username": "string"
361 | }
362 | ```
363 |
364 | ### Properties
365 |
366 | |Name|Type|Required|Description|
367 | |---|---|---|---|
368 | |» id|[id](#schemaid)|true|Resource identifier|
369 | |» full_name|string|false|User full name|
370 | |» username|[username](#schemausername)|true|User handle|
371 |
372 | ## userCreate
373 |
374 |
375 |
376 | ```json
377 | {
378 | "full_name": "string",
379 | "username": "string"
380 | }
381 | ```
382 |
383 | ### Properties
384 |
385 | |Name|Type|Required|Description|
386 | |---|---|---|---|
387 | |» full_name|string|false|User full name|
388 | |» username|[username](#schemausername)|true|User handle|
389 |
390 | ## signup
391 |
392 |
393 |
394 | ```json
395 | {
396 | "method": "email",
397 | "datetime": "2018-04-03T07:32:55Z"
398 | }
399 | ```
400 |
401 | ### Properties
402 |
403 | |Name|Type|Required|Description|
404 | |---|---|---|---|
405 | |» method|string|true|Signup method|
406 | |» datetime|[datetime](#schemadatetime)(date-time)|true|Date and Time of the message|
407 |
408 | #### Enumerated Values
409 |
410 | |Property|Value|
411 | |---|---|
412 | |method|email|
413 | |method|facebook|
414 | |method|twitter|
415 | |method|github|
416 | |method|google|
417 |
418 |
--------------------------------------------------------------------------------
/docs/source/source/fonts/slate.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/fonts/slate.eot
--------------------------------------------------------------------------------
/docs/source/source/fonts/slate.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/docs/source/source/fonts/slate.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/fonts/slate.ttf
--------------------------------------------------------------------------------
/docs/source/source/fonts/slate.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/fonts/slate.woff
--------------------------------------------------------------------------------
/docs/source/source/fonts/slate.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/fonts/slate.woff2
--------------------------------------------------------------------------------
/docs/source/source/images/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/images/logo.png
--------------------------------------------------------------------------------
/docs/source/source/images/navbar.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/Omenia/robotframework_for_apis/b53cabb62307cac263c3d91ba7b362b194320c0e/docs/source/source/images/navbar.png
--------------------------------------------------------------------------------
/docs/source/source/include.md:
--------------------------------------------------------------------------------
1 | ###
2 |
3 | This content comes from `include.md`
4 |
--------------------------------------------------------------------------------
/docs/source/source/includes/_errors.md:
--------------------------------------------------------------------------------
1 | # Errors
2 |
3 |
6 |
7 | The Kittn API uses the following error codes:
8 |
9 |
10 | Error Code | Meaning
11 | ---------- | -------
12 | 400 | Bad Request -- Your request is invalid.
13 | 401 | Unauthorized -- Your API key is wrong.
14 | 403 | Forbidden -- The kitten requested is hidden for administrators only.
15 | 404 | Not Found -- The specified kitten could not be found.
16 | 405 | Method Not Allowed -- You tried to access a kitten with an invalid method.
17 | 406 | Not Acceptable -- You requested a format that isn't json.
18 | 410 | Gone -- The kitten requested has been removed from our servers.
19 | 418 | I'm a teapot.
20 | 429 | Too Many Requests -- You're requesting too many kittens! Slow down!
21 | 500 | Internal Server Error -- We had a problem with our server. Try again later.
22 | 503 | Service Unavailable -- We're temporarily offline for maintenance. Please try again later.
23 |
--------------------------------------------------------------------------------
/docs/source/source/includes/_head.md:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/all.bundle.inc:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/all.inc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
23 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/all.js:
--------------------------------------------------------------------------------
1 | //= require ./all_nosearch
2 | //= require ./app/_search
3 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/all_nosearch.inc:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
19 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/all_nosearch.js:
--------------------------------------------------------------------------------
1 | //= require ./lib/_energize
2 | //= require ./app/_toc
3 | //= require ./app/_lang
4 |
5 | $(function() {
6 | loadToc($('#toc'), '.toc-link', '.toc-list-h2, .toc-list-h3, .toc-list-h4, .toc-list-h5, .toc-list-h6', 10);
7 | setupLanguages($('body').data('languages'));
8 | $('.content').imagesLoaded( function() {
9 | window.recacheHeights();
10 | window.refreshToc();
11 | });
12 | });
13 |
14 | window.onpopstate = function() {
15 | activateLanguage(getLanguageFromQueryString());
16 | };
17 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/app/_lang.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_jquery
2 |
3 | /*
4 | Copyright 2008-2013 Concur Technologies, Inc.
5 |
6 | Licensed under the Apache License, Version 2.0 (the "License"); you may
7 | not use this file except in compliance with the License. You may obtain
8 | a copy of the License at
9 |
10 | http://www.apache.org/licenses/LICENSE-2.0
11 |
12 | Unless required by applicable law or agreed to in writing, software
13 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15 | License for the specific language governing permissions and limitations
16 | under the License.
17 | */
18 | ;(function () {
19 | 'use strict';
20 |
21 | var languages = [];
22 |
23 | window.setupLanguages = setupLanguages;
24 | window.activateLanguage = activateLanguage;
25 | window.getLanguageFromQueryString = getLanguageFromQueryString;
26 |
27 | function activateLanguage(language) {
28 | if (!language) return;
29 | if (language === "") return;
30 |
31 | $(".lang-selector a").removeClass('active');
32 | $(".lang-selector a[data-language-name='" + language + "']").addClass('active');
33 | for (var i=0; i < languages.length; i++) {
34 | $(".highlight.tab-" + languages[i]).hide();
35 | $(".lang-specific." + languages[i]).hide();
36 | }
37 | $(".highlight.tab-" + language).show();
38 | $(".lang-specific." + language).show();
39 |
40 | window.recacheHeights();
41 |
42 | // scroll to the new location of the position
43 | if ($(window.location.hash).get(0)) {
44 | $(window.location.hash).get(0).scrollIntoView(true);
45 | }
46 | }
47 |
48 | // parseURL and stringifyURL are from https://github.com/sindresorhus/query-string
49 | // MIT licensed
50 | // https://github.com/sindresorhus/query-string/blob/7bee64c16f2da1a326579e96977b9227bf6da9e6/license
51 | function parseURL(str) {
52 | if (typeof str !== 'string') {
53 | return {};
54 | }
55 |
56 | str = str.trim().replace(/^(\?|#|&)/, '');
57 |
58 | if (!str) {
59 | return {};
60 | }
61 |
62 | return str.split('&').reduce(function (ret, param) {
63 | var parts = param.replace(/\+/g, ' ').split('=');
64 | var key = parts[0];
65 | var val = parts[1];
66 |
67 | key = decodeURIComponent(key);
68 | // missing `=` should be `null`:
69 | // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters
70 | val = val === undefined ? null : decodeURIComponent(val);
71 |
72 | if (!ret.hasOwnProperty(key)) {
73 | ret[key] = val;
74 | } else if (Array.isArray(ret[key])) {
75 | ret[key].push(val);
76 | } else {
77 | ret[key] = [ret[key], val];
78 | }
79 |
80 | return ret;
81 | }, {});
82 | };
83 |
84 | function stringifyURL(obj) {
85 | return obj ? Object.keys(obj).sort().map(function (key) {
86 | var val = obj[key];
87 |
88 | if (Array.isArray(val)) {
89 | return val.sort().map(function (val2) {
90 | return encodeURIComponent(key) + '=' + encodeURIComponent(val2);
91 | }).join('&');
92 | }
93 |
94 | return encodeURIComponent(key) + '=' + encodeURIComponent(val);
95 | }).join('&') : '';
96 | };
97 |
98 | // gets the language set in the query string
99 | function getLanguageFromQueryString() {
100 | if (location.search.length >= 1) {
101 | var language = parseURL(location.search).language;
102 | if (language) {
103 | return language;
104 | } else if (jQuery.inArray(location.search.substr(1), languages) != -1) {
105 | return location.search.substr(1);
106 | }
107 | }
108 |
109 | return false;
110 | }
111 |
112 | // returns a new query string with the new language in it
113 | function generateNewQueryString(language) {
114 | var url = parseURL(location.search);
115 | if (url.language) {
116 | url.language = language;
117 | return stringifyURL(url);
118 | }
119 | return language;
120 | }
121 |
122 | // if a button is clicked, add the state to the history
123 | function pushURL(language) {
124 | if (!history) { return; }
125 | var hash = window.location.hash;
126 | if (hash) {
127 | hash = hash.replace(/^#+/, '');
128 | }
129 | history.pushState({}, '', '?' + generateNewQueryString(language) + '#' + hash);
130 |
131 | // save language as next default
132 | localStorage.setItem("language", language);
133 | }
134 |
135 | function setupLanguages(l) {
136 | var defaultLanguage = localStorage.getItem("language");
137 |
138 | languages = l;
139 |
140 | var presetLanguage = getLanguageFromQueryString();
141 | if (presetLanguage) {
142 | // the language is in the URL, so use that language!
143 | activateLanguage(presetLanguage);
144 |
145 | localStorage.setItem("language", presetLanguage);
146 | } else if ((defaultLanguage !== null) && (jQuery.inArray(defaultLanguage, languages) != -1)) {
147 | // the language was the last selected one saved in localstorage, so use that language!
148 | activateLanguage(defaultLanguage);
149 | } else {
150 | // no language selected, so use the default
151 | activateLanguage(languages[0]);
152 | }
153 | }
154 |
155 | // if we click on a language tab, activate that language
156 | $(function() {
157 | $(".lang-selector a").on("click", function() {
158 | var language = $(this).data("language-name");
159 | pushURL(language);
160 | activateLanguage(language);
161 | return false;
162 | });
163 | });
164 | })();
165 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/app/_search.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_lunr
2 | //= require ../lib/_jquery
3 | //= require ../lib/_jquery.highlight
4 | ;(function () {
5 | 'use strict';
6 |
7 | var content, searchResults;
8 | var highlightOpts = { element: 'span', className: 'search-highlight' };
9 | var searchDelay = 0;
10 | var timeoutHandle = 0;
11 |
12 | var index = new lunr.Index();
13 |
14 | index.ref('id');
15 | index.field('title', { boost: 10 });
16 | index.field('body');
17 | index.pipeline.add(lunr.trimmer, lunr.stopWordFilter);
18 |
19 | $(populate);
20 | $(bind);
21 |
22 | function populate() {
23 | $('h1, h2').each(function() {
24 | var title = $(this);
25 | var body = title.nextUntil('h1, h2');
26 | index.add({
27 | id: title.prop('id'),
28 | title: title.text(),
29 | body: body.text()
30 | });
31 | });
32 |
33 | determineSearchDelay();
34 | }
35 | function determineSearchDelay() {
36 | if(index.tokenStore.length>5000) {
37 | searchDelay = 300;
38 | }
39 | }
40 |
41 | function bind() {
42 | content = $('.content');
43 | searchResults = $('.search-results');
44 |
45 | $('#input-search').on('keyup',function(e) {
46 | var wait = function() {
47 | return function(executingFunction, waitTime){
48 | clearTimeout(timeoutHandle);
49 | timeoutHandle = setTimeout(executingFunction, waitTime);
50 | };
51 | }();
52 | wait(function(){
53 | search(e);
54 | }, searchDelay );
55 | });
56 | }
57 |
58 | function search(event) {
59 |
60 | var searchInput = $('#input-search')[0];
61 |
62 | unhighlight();
63 | searchResults.addClass('visible');
64 |
65 | // ESC clears the field
66 | if (event.keyCode === 27) searchInput.value = '';
67 |
68 | if (searchInput.value) {
69 | var results = index.search(searchInput.value).filter(function(r) {
70 | return r.score > 0.0001;
71 | });
72 |
73 | if (results.length) {
74 | searchResults.empty();
75 | $.each(results, function (index, result) {
76 | var elem = document.getElementById(result.ref);
77 | searchResults.append("- " + $(elem).text() + "
");
78 | });
79 | highlight.call(searchInput);
80 | } else {
81 | searchResults.html('');
82 | $('.search-results li').text('No Results Found for "' + searchInput.value + '"');
83 | }
84 | } else {
85 | unhighlight();
86 | searchResults.removeClass('visible');
87 | }
88 | }
89 |
90 | function highlight() {
91 | if (this.value) content.highlight(this.value, highlightOpts);
92 | }
93 |
94 | function unhighlight() {
95 | content.unhighlight(highlightOpts);
96 | }
97 | })();
98 |
99 |
--------------------------------------------------------------------------------
/docs/source/source/javascripts/app/_toc.js:
--------------------------------------------------------------------------------
1 | //= require ../lib/_jquery
2 | //= require ../lib/_imagesloaded.min
3 | ;(function () {
4 | 'use strict';
5 |
6 | var htmlPattern = /<[^>]*>/g;
7 | var loaded = false;
8 |
9 | var debounce = function(func, waitTime) {
10 | var timeout = false;
11 | return function() {
12 | if (timeout === false) {
13 | setTimeout(function() {
14 | func();
15 | timeout = false;
16 | }, waitTime);
17 | timeout = true;
18 | }
19 | };
20 | };
21 |
22 | var closeToc = function() {
23 | $(".toc-wrapper").removeClass('open');
24 | $("#nav-button").removeClass('open');
25 | };
26 |
27 | function loadToc($toc, tocLinkSelector, tocListSelector, scrollOffset) {
28 | var headerHeights = {};
29 | var pageHeight = 0;
30 | var windowHeight = 0;
31 | var originalTitle = document.title;
32 |
33 | var recacheHeights = function() {
34 | headerHeights = {};
35 | pageHeight = $(document).height();
36 | windowHeight = $(window).height();
37 |
38 | $toc.find(tocLinkSelector).each(function() {
39 | var targetId = $(this).attr('href');
40 | if (targetId[0] === "#") {
41 | headerHeights[targetId] = $(targetId).offset().top;
42 | }
43 | });
44 | };
45 |
46 | var refreshToc = function() {
47 | var currentTop = $(document).scrollTop() + scrollOffset;
48 |
49 | if (currentTop + windowHeight >= pageHeight) {
50 | // at bottom of page, so just select last header by making currentTop very large
51 | // this fixes the problem where the last header won't ever show as active if its content
52 | // is shorter than the window height
53 | currentTop = pageHeight + 1000;
54 | }
55 |
56 | var best = null;
57 | for (var name in headerHeights) {
58 | if ((headerHeights[name] < currentTop && headerHeights[name] > headerHeights[best]) || best === null) {
59 | best = name;
60 | }
61 | }
62 |
63 | // Catch the initial load case
64 | if (currentTop == scrollOffset && !loaded) {
65 | best = window.location.hash;
66 | loaded = true;
67 | }
68 |
69 | var $best = $toc.find("[href='" + best + "']").first();
70 | if (!$best.hasClass("active")) {
71 | // .active is applied to the ToC link we're currently on, and its parent s selected by tocListSelector
72 | // .active-expanded is applied to the ToC links that are parents of this one
73 | $toc.find(".active").removeClass("active");
74 | $toc.find(".active-parent").removeClass("active-parent");
75 | $best.addClass("active");
76 | $best.parents(tocListSelector).addClass("active").siblings(tocLinkSelector).addClass('active-parent');
77 | $best.siblings(tocListSelector).addClass("active");
78 | $toc.find(tocListSelector).filter(":not(.active)").slideUp(150);
79 | $toc.find(tocListSelector).filter(".active").slideDown(150);
80 | if (window.history.replaceState) {
81 | window.history.replaceState(null, "", best);
82 | }
83 | var thisTitle = $best.data("title")
84 | if (thisTitle !== undefined && thisTitle.length > 0) {
85 | document.title = thisTitle + " – " + originalTitle;
86 | } else {
87 | document.title = originalTitle;
88 | }
89 | }
90 | };
91 |
92 | var makeToc = function() {
93 | recacheHeights();
94 | refreshToc();
95 |
96 | $("#nav-button").click(function() {
97 | $(".toc-wrapper").toggleClass('open');
98 | $("#nav-button").toggleClass('open');
99 | return false;
100 | });
101 | $(".page-wrapper").click(closeToc);
102 | $(".toc-link").click(closeToc);
103 |
104 | // reload immediately after scrolling on toc click
105 | $toc.find(tocLinkSelector).click(function() {
106 | setTimeout(function() {
107 | refreshToc();
108 | }, 0);
109 | });
110 |
111 | $(window).scroll(debounce(refreshToc, 200));
112 | $(window).resize(debounce(recacheHeights, 200));
113 | };
114 |
115 | makeToc();
116 |
117 | window.recacheHeights = recacheHeights;
118 | window.refreshToc = refreshToc;
119 | }
120 |
121 | window.loadToc = loadToc;
122 | })();
123 |
--------------------------------------------------------------------------------
/docs/source/source/layouts/layout.ejs:
--------------------------------------------------------------------------------
1 | <%#
2 | Copyright 2008-2013 Concur Technologies, Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may
5 | not use this file except in compliance with the License. You may obtain
6 | a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | License for the specific language governing permissions and limitations
14 | under the License.
15 | %>
16 | <% var language_tabs = current_page.data.language_tabs || []; %>
17 | <% if (current_page.data.includes) { for (var include in current_page.data.includes) { %>
18 | <% page_content += partial(current_page.data.includes[include]) %>
19 | <% } %>
20 |
21 |
22 |
23 |
24 |
25 |
26 | <%= current_page.data.title || "API Documentation" %>
27 |
28 |
30 | <%- stylesheet_link_tag('screen','screen') %>
31 | <%- stylesheet_link_tag('print','print') %>
32 | <%- stylesheet_link_tag(current_page.data.highlight_theme||'darkula','screen') %>
33 | <% if (current_page.data.search) {%>
34 | <%- javascript_include_tag("all") %>
35 | <% } else { %>
36 | <%- javascript_include_tag("all_nosearch") %>
37 | <% } %>
38 | <%- partial('head') %>
39 |
40 |
41 | class="<%= current_page.page_classes %>" <% } %>data-languages="<%- language_array(current_page.data.language_tabs) %>">
42 |
43 |
44 | NAV
45 | <%- image_tag('navbar.png','Navigation') %>
46 |
47 |
48 |
49 | <%- logo_image_tag() %>
50 | <% if (language_tabs.length>0) {%>
51 |
60 | <% } %>
61 | <% if (current_page.data.search) { %>
62 |
63 |
64 |
65 |
66 | <% } %>
67 |
68 |
69 | <% for (var h1 of toc_data(page_content)) { %>
70 | -
71 | <%= h1.content %>
72 | <% if (h1.children && (h1.children.length > 0)) { %>
73 |
74 | <% for (var h2 of h1.children) { %>
75 | -
76 | <%= h2.content %>
77 | <% if (h2.children && (h2.children.length > 0)) { %>
78 |
79 | <% for (var h3 of h2.children) { %>
80 | -
81 | <%= h3.content %>
82 |
83 | <% } %>
84 |
85 | <% } %>
86 |
87 | <% } %>
88 |
89 | <% } %>
90 |
91 | <% } %>
92 |
93 |
94 | <% if (current_page.data.toc_footers) { %>
95 |
100 | <% } %>
101 |
102 |
103 |
104 |
105 | <%- page_content %>
106 |
107 |
108 | <% if (language_tabs) %>
109 |
118 | <% } %>
119 |
120 |
121 |
122 |
123 |
--------------------------------------------------------------------------------
/docs/source/source/master.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: Master/Include Sample v1.0.0
3 | language_tabs:
4 | - javascript--nodejs: Node.JS
5 | - javascript: JavaScript
6 | - python: Python
7 | - ruby: Ruby
8 | - java: Java
9 | - go: Go
10 | toc_footers:
11 | - 'See OpenAPI example'
12 | includes: []
13 | search: true
14 | highlight_theme: darkula
15 | ---
16 |
17 | # Master content
18 |
19 | ## Included content
20 |
21 | include::include.md[]
22 |
23 | ## Included content 2
24 |
25 | !INCLUDE include.md
26 |
27 |
--------------------------------------------------------------------------------
/docs/source/source/semoasa.html.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: SEMOASA documentation
3 | language_tabs:
4 | - json
5 | - yaml
6 | toc_footers: []
7 | includes: []
8 | search: true
9 | highlight_theme: darkula
10 |
11 | ---
12 |
13 | # OpenAPI Extensions Documentation
14 |
15 | > Scroll down for schema examples. Select a format for examples from the tabs above or the mobile navigation menu.
16 |
17 | This documentation was automatically generated from a v0.1.0 [SEMOASA](https://github.com/RepreZen/SEMOASA) file.
18 |
19 |
20 |
21 |
22 |
23 |
24 | # com.amazon.aws
25 |
26 |
27 |
28 | Provider: Amazon Web Services
29 |
30 |
31 |
32 |
33 | ## x-amazon-apigateway-integration
34 | > x-amazon-apigateway-integration example
35 | ```json
36 | {
37 | "cacheKeyParameters": [
38 | "string"
39 | ],
40 | "cacheNamespace": "string",
41 | "credentials": "string",
42 | "contentHandling": "string",
43 | "httpMethod": "string"
44 | }
45 | ```
46 | ```yaml
47 | cacheKeyParameters:
48 | - string
49 | cacheNamespace: string
50 | credentials: string
51 | contentHandling: string
52 | httpMethod: string
53 |
54 | ```
55 |
56 |
57 |
58 |
59 |
60 | *Specifies the integration of the method with the backend.*
61 |
62 | Specifies details of the backend integration used for this method.
63 | This extension is an extended property of the Swagger Operation object.
64 | The result is an API Gateway integration object.
65 |
66 |
67 |
68 |
69 |
70 | AWS documentation page in the Amazon API Gateway Developer Guide
71 |
72 |
73 |
74 |
75 | |Property|Type|Required|Description
76 | |---|---|---|---|
77 | |cacheNamespace|string|false|An API-specific tag group of related cached parameters.|
78 | |credentials|string|false|For AWS IAM role-based credentials, specify the ARN of an appropriate IAM role. If unspecified, credentials will default to resource-based permissions that must be added manually to allow the API to access the resource. For more information, see Granting Permissions Using a Resource Policy. |
79 | |contentHandling|string|false|Request payload encoding conversion types. Valid values are 1) CONVERT_TO_TEXT, for converting a binary payload into a Base64-encoded string or converting a text payload into a utf-8-encoded string or passing through the text payload natively without modification, and 2) CONVERT_TO_BINARY, for converting a text payload into Base64-decoded blob or passing through a binary payload natively without modification. |
80 | |httpMethod|string|false|The HTTP method used in the integration request. For Lambda function invocations, the value must be POST. |
81 | |cacheKeyParameters|[string]|false|A list of request parameters whose values are to be cached.|
82 |
83 |
84 |
85 | **In the OpenAPI specification v2.0, this extension can be used as follows:**
86 |
87 |
88 |
89 |
92 |
93 | |Object|Description|
94 | |---|---|
95 | |OperationObject|Describes a single API operation on a path.|
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 | **In the OpenAPI specification v3.x, this extension can be used as follows:**
109 |
110 |
111 |
112 |
115 |
116 | |Object|Description|
117 | |---|---|
118 | |OperationObject|Describes a single API operation on a path.|
119 |
120 |
121 |
122 |
123 |
124 |
125 |
126 |
127 |
128 |
129 |
130 |
131 |
132 |
133 |
134 |
--------------------------------------------------------------------------------
/docs/source/source/stylesheets/_icon-font.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'slate';
3 | src:font-url('slate.eot?-syv14m');
4 | src:font-url('slate.eot?#iefix-syv14m') format('embedded-opentype'),
5 | font-url('slate.woff2?-syv14m') format('woff2'),
6 | font-url('slate.woff?-syv14m') format('woff'),
7 | font-url('slate.ttf?-syv14m') format('truetype'),
8 | font-url('slate.svg?-syv14m#slate') format('svg');
9 | font-weight: normal;
10 | font-style: normal;
11 | }
12 |
13 | %icon {
14 | font-family: 'slate';
15 | speak: none;
16 | font-style: normal;
17 | font-weight: normal;
18 | font-variant: normal;
19 | text-transform: none;
20 | line-height: 1;
21 | }
22 |
23 | %icon-exclamation-sign {
24 | @extend %icon;
25 | content: "\e600";
26 | }
27 | %icon-info-sign {
28 | @extend %icon;
29 | content: "\e602";
30 | }
31 | %icon-ok-sign {
32 | @extend %icon;
33 | content: "\e606";
34 | }
35 | %icon-search {
36 | @extend %icon;
37 | content: "\e607";
38 | }
39 |
--------------------------------------------------------------------------------
/docs/source/source/stylesheets/_normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
29 | * and Firefox.
30 | * Correct `block` display not defined for `main` in IE 11.
31 | */
32 |
33 | article,
34 | aside,
35 | details,
36 | figcaption,
37 | figure,
38 | footer,
39 | header,
40 | hgroup,
41 | main,
42 | menu,
43 | nav,
44 | section,
45 | summary {
46 | display: block;
47 | }
48 |
49 | /**
50 | * 1. Correct `inline-block` display not defined in IE 8/9.
51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
52 | */
53 |
54 | audio,
55 | canvas,
56 | progress,
57 | video {
58 | display: inline-block; /* 1 */
59 | vertical-align: baseline; /* 2 */
60 | }
61 |
62 | /**
63 | * Prevent modern browsers from displaying `audio` without controls.
64 | * Remove excess height in iOS 5 devices.
65 | */
66 |
67 | audio:not([controls]) {
68 | display: none;
69 | height: 0;
70 | }
71 |
72 | /**
73 | * Address `[hidden]` styling not present in IE 8/9/10.
74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
75 | */
76 |
77 | [hidden],
78 | template {
79 | display: none;
80 | }
81 |
82 | /* Links
83 | ========================================================================== */
84 |
85 | /**
86 | * Remove the gray background color from active links in IE 10.
87 | */
88 |
89 | a {
90 | background-color: transparent;
91 | }
92 |
93 | /**
94 | * Improve readability when focused and also mouse hovered in all browsers.
95 | */
96 |
97 | a:active,
98 | a:hover {
99 | outline: 0;
100 | }
101 |
102 | /* Text-level semantics
103 | ========================================================================== */
104 |
105 | /**
106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
107 | */
108 |
109 | abbr[title] {
110 | border-bottom: 1px dotted;
111 | }
112 |
113 | /**
114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
115 | */
116 |
117 | b,
118 | strong {
119 | font-weight: bold;
120 | }
121 |
122 | /**
123 | * Address styling not present in Safari and Chrome.
124 | */
125 |
126 | dfn {
127 | font-style: italic;
128 | }
129 |
130 | /**
131 | * Address variable `h1` font-size and margin within `section` and `article`
132 | * contexts in Firefox 4+, Safari, and Chrome.
133 | */
134 |
135 | h1 {
136 | font-size: 2em;
137 | margin: 0.67em 0;
138 | }
139 |
140 | /**
141 | * Address styling not present in IE 8/9.
142 | */
143 |
144 | mark {
145 | background: #ff0;
146 | color: #000;
147 | }
148 |
149 | /**
150 | * Address inconsistent and variable font size in all browsers.
151 | */
152 |
153 | small {
154 | font-size: 80%;
155 | }
156 |
157 | /**
158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
159 | */
160 |
161 | sub,
162 | sup {
163 | font-size: 75%;
164 | line-height: 0;
165 | position: relative;
166 | vertical-align: baseline;
167 | }
168 |
169 | sup {
170 | top: -0.5em;
171 | }
172 |
173 | sub {
174 | bottom: -0.25em;
175 | }
176 |
177 | /* Embedded content
178 | ========================================================================== */
179 |
180 | /**
181 | * Remove border when inside `a` element in IE 8/9/10.
182 | */
183 |
184 | img {
185 | border: 0;
186 | }
187 |
188 | /**
189 | * Correct overflow not hidden in IE 9/10/11.
190 | */
191 |
192 | svg:not(:root) {
193 | overflow: hidden;
194 | }
195 |
196 | /* Grouping content
197 | ========================================================================== */
198 |
199 | /**
200 | * Address margin not present in IE 8/9 and Safari.
201 | */
202 |
203 | figure {
204 | margin: 1em 40px;
205 | }
206 |
207 | /**
208 | * Address differences between Firefox and other browsers.
209 | */
210 |
211 | hr {
212 | -moz-box-sizing: content-box;
213 | box-sizing: content-box;
214 | height: 0;
215 | }
216 |
217 | /**
218 | * Contain overflow in all browsers.
219 | */
220 |
221 | pre {
222 | overflow: auto;
223 | }
224 |
225 | /**
226 | * Address odd `em`-unit font size rendering in all browsers.
227 | */
228 |
229 | code,
230 | kbd,
231 | pre,
232 | samp {
233 | font-family: monospace, monospace;
234 | font-size: 1em;
235 | }
236 |
237 | /* Forms
238 | ========================================================================== */
239 |
240 | /**
241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
242 | * styling of `select`, unless a `border` property is set.
243 | */
244 |
245 | /**
246 | * 1. Correct color not being inherited.
247 | * Known issue: affects color of disabled elements.
248 | * 2. Correct font properties not being inherited.
249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
250 | */
251 |
252 | button,
253 | input,
254 | optgroup,
255 | select,
256 | textarea {
257 | color: inherit; /* 1 */
258 | font: inherit; /* 2 */
259 | margin: 0; /* 3 */
260 | }
261 |
262 | /**
263 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
264 | */
265 |
266 | button {
267 | overflow: visible;
268 | }
269 |
270 | /**
271 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
272 | * All other form control elements do not inherit `text-transform` values.
273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
274 | * Correct `select` style inheritance in Firefox.
275 | */
276 |
277 | button,
278 | select {
279 | text-transform: none;
280 | }
281 |
282 | /**
283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
284 | * and `video` controls.
285 | * 2. Correct inability to style clickable `input` types in iOS.
286 | * 3. Improve usability and consistency of cursor style between image-type
287 | * `input` and others.
288 | */
289 |
290 | button,
291 | html input[type="button"], /* 1 */
292 | input[type="reset"],
293 | input[type="submit"] {
294 | -webkit-appearance: button; /* 2 */
295 | cursor: pointer; /* 3 */
296 | }
297 |
298 | /**
299 | * Re-set default cursor for disabled elements.
300 | */
301 |
302 | button[disabled],
303 | html input[disabled] {
304 | cursor: default;
305 | }
306 |
307 | /**
308 | * Remove inner padding and border in Firefox 4+.
309 | */
310 |
311 | button::-moz-focus-inner,
312 | input::-moz-focus-inner {
313 | border: 0;
314 | padding: 0;
315 | }
316 |
317 | /**
318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
319 | * the UA stylesheet.
320 | */
321 |
322 | input {
323 | line-height: normal;
324 | }
325 |
326 | /**
327 | * It's recommended that you don't attempt to style these elements.
328 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
329 | *
330 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
331 | * 2. Remove excess padding in IE 8/9/10.
332 | */
333 |
334 | input[type="checkbox"],
335 | input[type="radio"] {
336 | box-sizing: border-box; /* 1 */
337 | padding: 0; /* 2 */
338 | }
339 |
340 | /**
341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
342 | * `font-size` values of the `input`, it causes the cursor style of the
343 | * decrement button to change from `default` to `text`.
344 | */
345 |
346 | input[type="number"]::-webkit-inner-spin-button,
347 | input[type="number"]::-webkit-outer-spin-button {
348 | height: auto;
349 | }
350 |
351 | /**
352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
354 | * (include `-moz` to future-proof).
355 | */
356 |
357 | input[type="search"] {
358 | -webkit-appearance: textfield; /* 1 */
359 | -moz-box-sizing: content-box;
360 | -webkit-box-sizing: content-box; /* 2 */
361 | box-sizing: content-box;
362 | }
363 |
364 | /**
365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
366 | * Safari (but not Chrome) clips the cancel button when the search input has
367 | * padding (and `textfield` appearance).
368 | */
369 |
370 | input[type="search"]::-webkit-search-cancel-button,
371 | input[type="search"]::-webkit-search-decoration {
372 | -webkit-appearance: none;
373 | }
374 |
375 | /**
376 | * Define consistent border, margin, and padding.
377 | */
378 |
379 | fieldset {
380 | border: 1px solid #c0c0c0;
381 | margin: 0 2px;
382 | padding: 0.35em 0.625em 0.75em;
383 | }
384 |
385 | /**
386 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
388 | */
389 |
390 | legend {
391 | border: 0; /* 1 */
392 | padding: 0; /* 2 */
393 | }
394 |
395 | /**
396 | * Remove default vertical scrollbar in IE 8/9/10/11.
397 | */
398 |
399 | textarea {
400 | overflow: auto;
401 | }
402 |
403 | /**
404 | * Don't inherit the `font-weight` (applied by a rule above).
405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
406 | */
407 |
408 | optgroup {
409 | font-weight: bold;
410 | }
411 |
412 | /* Tables
413 | ========================================================================== */
414 |
415 | /**
416 | * Remove most spacing between table cells.
417 | */
418 |
419 | table {
420 | border-collapse: collapse;
421 | border-spacing: 0;
422 | }
423 |
424 | td,
425 | th {
426 | padding: 0;
427 | }
428 |
--------------------------------------------------------------------------------
/docs/source/source/stylesheets/_rtl.scss:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////////
2 | // RTL Styles Variables
3 | ////////////////////////////////////////////////////////////////////////////////
4 |
5 | $default: auto;
6 |
7 | ////////////////////////////////////////////////////////////////////////////////
8 | // TABLE OF CONTENTS
9 | ////////////////////////////////////////////////////////////////////////////////
10 |
11 | #toc>ul>li>a>span {
12 | float: left;
13 | }
14 |
15 | .toc-wrapper {
16 | transition: right 0.3s ease-in-out !important;
17 | left: $default !important;
18 | #{right}: 0;
19 | }
20 |
21 | .toc-h2 {
22 | padding-#{right}: $nav-padding + $nav-indent;
23 | }
24 |
25 | #nav-button {
26 | #{right}: 0;
27 | transition: right 0.3s ease-in-out;
28 | &.open {
29 | right: $nav-width
30 | }
31 | }
32 |
33 | ////////////////////////////////////////////////////////////////////////////////
34 | // PAGE LAYOUT AND CODE SAMPLE BACKGROUND
35 | ////////////////////////////////////////////////////////////////////////////////
36 | .page-wrapper {
37 | margin-#{left}: $default !important;
38 | margin-#{right}: $nav-width;
39 | .dark-box {
40 | #{right}: $default;
41 | #{left}: 0;
42 | }
43 | }
44 |
45 | .lang-selector {
46 | width: $default !important;
47 | a {
48 | float: right;
49 | }
50 | }
51 |
52 | ////////////////////////////////////////////////////////////////////////////////
53 | // CODE SAMPLE STYLES
54 | ////////////////////////////////////////////////////////////////////////////////
55 | .content {
56 | &>h1,
57 | &>h2,
58 | &>h3,
59 | &>h4,
60 | &>h5,
61 | &>h6,
62 | &>p,
63 | &>table,
64 | &>ul,
65 | &>ol,
66 | &>aside,
67 | &>dl {
68 | margin-#{left}: $examples-width;
69 | margin-#{right}: $default !important;
70 | }
71 | &>ul,
72 | &>ol {
73 | padding-#{right}: $main-padding + 15px;
74 | }
75 | table {
76 | th,
77 | td {
78 | text-align: right;
79 | }
80 | }
81 | dd {
82 | margin-#{right}: 15px;
83 | }
84 | aside {
85 | aside:before {
86 | padding-#{left}: 0.5em;
87 | }
88 | .search-highlight {
89 | background: linear-gradient(to top right, #F7E633 0%, #F1D32F 100%);
90 | }
91 | }
92 | pre,
93 | blockquote {
94 | float: left !important;
95 | clear: left !important;
96 | }
97 | }
98 |
99 | ////////////////////////////////////////////////////////////////////////////////
100 | // TYPOGRAPHY
101 | ////////////////////////////////////////////////////////////////////////////////
102 | h1,
103 | h2,
104 | h3,
105 | h4,
106 | h5,
107 | h6,
108 | p,
109 | aside {
110 | text-align: right;
111 | direction: rtl;
112 | }
113 |
114 | .toc-wrapper {
115 | text-align: right;
116 | direction: rtl;
117 | font-weight: 100 !important;
118 | }
119 |
120 |
121 | ////////////////////////////////////////////////////////////////////////////////
122 | // RESPONSIVE DESIGN
123 | ////////////////////////////////////////////////////////////////////////////////
124 | @media (max-width: $tablet-width) {
125 | .toc-wrapper {
126 | #{right}: -$nav-width;
127 | &.open {
128 | #{right}: 0;
129 | }
130 | }
131 | .page-wrapper {
132 | margin-#{right}: 0;
133 | }
134 | }
135 |
136 | @media (max-width: $phone-width) {
137 | %left-col {
138 | margin-#{left}: 0;
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/docs/source/source/stylesheets/_variables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2008-2013 Concur Technologies, Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may
5 | not use this file except in compliance with the License. You may obtain
6 | a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | License for the specific language governing permissions and limitations
14 | under the License.
15 | */
16 |
17 |
18 | ////////////////////////////////////////////////////////////////////////////////
19 | // CUSTOMIZE SLATE
20 | ////////////////////////////////////////////////////////////////////////////////
21 | // Use these settings to help adjust the appearance of Slate
22 |
23 |
24 | // BACKGROUND COLORS
25 | ////////////////////
26 | $nav-bg: #2E3336 !default;
27 | $examples-bg: #2E3336 !default;
28 | $code-bg: #1E2224 !default;
29 | $code-annotation-bg: #191D1F !default;
30 | $nav-subitem-bg: #1E2224 !default;
31 | $nav-active-bg: #0F75D4 !default;
32 | $nav-active-parent-bg: #1E2224 !default; // parent links of the current section
33 | $lang-select-border: #000 !default;
34 | $lang-select-bg: #1E2224 !default;
35 | $lang-select-active-bg: $examples-bg !default; // feel free to change this to blue or something
36 | $lang-select-pressed-bg: #111 !default; // color of language tab bg when mouse is pressed
37 | $main-bg: #F3F7F9 !default;
38 | $aside-notice-bg: #8fbcd4 !default;
39 | $aside-warning-bg: #c97a7e !default;
40 | $aside-success-bg: #6ac174 !default;
41 | $search-notice-bg: #c97a7e !default;
42 |
43 |
44 | // TEXT COLORS
45 | ////////////////////
46 | $main-text: #333 !default; // main content text color
47 | $nav-text: #fff !default;
48 | $nav-active-text: #fff !default;
49 | $nav-active-parent-text: #fff !default; // parent links of the current section
50 | $lang-select-text: #fff !default; // color of unselected language tab text
51 | $lang-select-active-text: #fff !default; // color of selected language tab text
52 | $lang-select-pressed-text: #fff !default; // color of language tab text when mouse is pressed
53 |
54 |
55 | // SIZES
56 | ////////////////////
57 | $nav-width: 230px !default; // width of the navbar
58 | $examples-width: 50% !default; // portion of the screen taken up by code examples
59 | $logo-margin: 0px !default; // margin below logo
60 | $main-padding: 28px !default; // padding to left and right of content & examples
61 | $nav-padding: 15px !default; // padding to left and right of navbar
62 | $nav-v-padding: 10px !default; // padding used vertically around search boxes and results
63 | $nav-indent: 10px !default; // extra padding for ToC subitems
64 | $code-annotation-padding: 13px !default; // padding inside code annotations
65 | $h1-margin-bottom: 21px !default; // padding under the largest header tags
66 | $tablet-width: 930px !default; // min width before reverting to tablet size
67 | $phone-width: $tablet-width - $nav-width !default; // min width before reverting to mobile size
68 |
69 |
70 | // FONTS
71 | ////////////////////
72 | %default-font {
73 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
74 | font-size: 14px;
75 | }
76 |
77 | %header-font {
78 | @extend %default-font;
79 | font-weight: bold;
80 | }
81 |
82 | %code-font {
83 | font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;
84 | font-size: 12px;
85 | line-height: 1.5;
86 | }
87 |
88 |
89 | // OTHER
90 | ////////////////////
91 | $nav-footer-border-color: #666 !default;
92 | $search-box-border-color: #666 !default;
93 |
94 |
95 | ////////////////////////////////////////////////////////////////////////////////
96 | // INTERNAL
97 | ////////////////////////////////////////////////////////////////////////////////
98 | // These settings are probably best left alone.
99 |
100 | %break-words {
101 | word-break: break-all;
102 | hyphens: auto;
103 | }
104 |
--------------------------------------------------------------------------------
/docs/source/source/stylesheets/print.css.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | @import 'normalize';
3 | @import 'variables';
4 | @import 'icon-font';
5 |
6 | /*
7 | Copyright 2008-2013 Concur Technologies, Inc.
8 |
9 | Licensed under the Apache License, Version 2.0 (the "License"); you may
10 | not use this file except in compliance with the License. You may obtain
11 | a copy of the License at
12 |
13 | http://www.apache.org/licenses/LICENSE-2.0
14 |
15 | Unless required by applicable law or agreed to in writing, software
16 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18 | License for the specific language governing permissions and limitations
19 | under the License.
20 | */
21 |
22 | $print-color: #999;
23 | $print-color-light: #ccc;
24 | $print-font-size: 12px;
25 |
26 | body {
27 | @extend %default-font;
28 | }
29 |
30 | .tocify, .toc-footer, .lang-selector, .search, #nav-button {
31 | display: none;
32 | }
33 |
34 | .tocify-wrapper>img {
35 | margin: 0 auto;
36 | display: block;
37 | }
38 |
39 | .content {
40 | font-size: 12px;
41 |
42 | pre, code {
43 | @extend %code-font;
44 | @extend %break-words;
45 | border: 1px solid $print-color;
46 | border-radius: 5px;
47 | font-size: 0.8em;
48 | }
49 |
50 | pre {
51 | code {
52 | border: 0;
53 | }
54 | }
55 |
56 | pre {
57 | padding: 1.3em;
58 | }
59 |
60 | code {
61 | padding: 0.2em;
62 | }
63 |
64 | table {
65 | border: 1px solid $print-color;
66 | tr {
67 | border-bottom: 1px solid $print-color;
68 | }
69 | td,th {
70 | padding: 0.7em;
71 | }
72 | }
73 |
74 | p {
75 | line-height: 1.5;
76 | }
77 |
78 | a {
79 | text-decoration: none;
80 | color: #000;
81 | }
82 |
83 | h1 {
84 | @extend %header-font;
85 | font-size: 2.5em;
86 | padding-top: 0.5em;
87 | padding-bottom: 0.5em;
88 | margin-top: 1em;
89 | margin-bottom: $h1-margin-bottom;
90 | border: 2px solid $print-color-light;
91 | border-width: 2px 0;
92 | text-align: center;
93 | }
94 |
95 | h2 {
96 | @extend %header-font;
97 | font-size: 1.8em;
98 | margin-top: 2em;
99 | border-top: 2px solid $print-color-light;
100 | padding-top: 0.8em;
101 | }
102 |
103 | h1+h2, h1+div+h2 {
104 | border-top: none;
105 | padding-top: 0;
106 | margin-top: 0;
107 | }
108 |
109 | h3, h4 {
110 | @extend %header-font;
111 | font-size: 0.8em;
112 | margin-top: 1.5em;
113 | margin-bottom: 0.8em;
114 | text-transform: uppercase;
115 | }
116 |
117 | h5, h6 {
118 | text-transform: uppercase;
119 | }
120 |
121 | aside {
122 | padding: 1em;
123 | border: 1px solid $print-color-light;
124 | border-radius: 5px;
125 | margin-top: 1.5em;
126 | margin-bottom: 1.5em;
127 | line-height: 1.6;
128 | }
129 |
130 | aside:before {
131 | vertical-align: middle;
132 | padding-right: 0.5em;
133 | font-size: 14px;
134 | }
135 |
136 | aside.notice:before {
137 | @extend %icon-info-sign;
138 | }
139 |
140 | aside.warning:before {
141 | @extend %icon-exclamation-sign;
142 | }
143 |
144 | aside.success:before {
145 | @extend %icon-ok-sign;
146 | }
147 | }
--------------------------------------------------------------------------------
/docs/source/stylesheets/_icon-font.scss:
--------------------------------------------------------------------------------
1 | @font-face {
2 | font-family: 'slate';
3 | src:font-url('slate.eot?-syv14m');
4 | src:font-url('slate.eot?#iefix-syv14m') format('embedded-opentype'),
5 | font-url('slate.woff2?-syv14m') format('woff2'),
6 | font-url('slate.woff?-syv14m') format('woff'),
7 | font-url('slate.ttf?-syv14m') format('truetype'),
8 | font-url('slate.svg?-syv14m#slate') format('svg');
9 | font-weight: normal;
10 | font-style: normal;
11 | }
12 |
13 | %icon {
14 | font-family: 'slate';
15 | speak: none;
16 | font-style: normal;
17 | font-weight: normal;
18 | font-variant: normal;
19 | text-transform: none;
20 | line-height: 1;
21 | }
22 |
23 | %icon-exclamation-sign {
24 | @extend %icon;
25 | content: "\e600";
26 | }
27 | %icon-info-sign {
28 | @extend %icon;
29 | content: "\e602";
30 | }
31 | %icon-ok-sign {
32 | @extend %icon;
33 | content: "\e606";
34 | }
35 | %icon-search {
36 | @extend %icon;
37 | content: "\e607";
38 | }
39 |
--------------------------------------------------------------------------------
/docs/source/stylesheets/_normalize.scss:
--------------------------------------------------------------------------------
1 | /*! normalize.css v3.0.2 | MIT License | git.io/normalize */
2 |
3 | /**
4 | * 1. Set default font family to sans-serif.
5 | * 2. Prevent iOS text size adjust after orientation change, without disabling
6 | * user zoom.
7 | */
8 |
9 | html {
10 | font-family: sans-serif; /* 1 */
11 | -ms-text-size-adjust: 100%; /* 2 */
12 | -webkit-text-size-adjust: 100%; /* 2 */
13 | }
14 |
15 | /**
16 | * Remove default margin.
17 | */
18 |
19 | body {
20 | margin: 0;
21 | }
22 |
23 | /* HTML5 display definitions
24 | ========================================================================== */
25 |
26 | /**
27 | * Correct `block` display not defined for any HTML5 element in IE 8/9.
28 | * Correct `block` display not defined for `details` or `summary` in IE 10/11
29 | * and Firefox.
30 | * Correct `block` display not defined for `main` in IE 11.
31 | */
32 |
33 | article,
34 | aside,
35 | details,
36 | figcaption,
37 | figure,
38 | footer,
39 | header,
40 | hgroup,
41 | main,
42 | menu,
43 | nav,
44 | section,
45 | summary {
46 | display: block;
47 | }
48 |
49 | /**
50 | * 1. Correct `inline-block` display not defined in IE 8/9.
51 | * 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
52 | */
53 |
54 | audio,
55 | canvas,
56 | progress,
57 | video {
58 | display: inline-block; /* 1 */
59 | vertical-align: baseline; /* 2 */
60 | }
61 |
62 | /**
63 | * Prevent modern browsers from displaying `audio` without controls.
64 | * Remove excess height in iOS 5 devices.
65 | */
66 |
67 | audio:not([controls]) {
68 | display: none;
69 | height: 0;
70 | }
71 |
72 | /**
73 | * Address `[hidden]` styling not present in IE 8/9/10.
74 | * Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
75 | */
76 |
77 | [hidden],
78 | template {
79 | display: none;
80 | }
81 |
82 | /* Links
83 | ========================================================================== */
84 |
85 | /**
86 | * Remove the gray background color from active links in IE 10.
87 | */
88 |
89 | a {
90 | background-color: transparent;
91 | }
92 |
93 | /**
94 | * Improve readability when focused and also mouse hovered in all browsers.
95 | */
96 |
97 | a:active,
98 | a:hover {
99 | outline: 0;
100 | }
101 |
102 | /* Text-level semantics
103 | ========================================================================== */
104 |
105 | /**
106 | * Address styling not present in IE 8/9/10/11, Safari, and Chrome.
107 | */
108 |
109 | abbr[title] {
110 | border-bottom: 1px dotted;
111 | }
112 |
113 | /**
114 | * Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
115 | */
116 |
117 | b,
118 | strong {
119 | font-weight: bold;
120 | }
121 |
122 | /**
123 | * Address styling not present in Safari and Chrome.
124 | */
125 |
126 | dfn {
127 | font-style: italic;
128 | }
129 |
130 | /**
131 | * Address variable `h1` font-size and margin within `section` and `article`
132 | * contexts in Firefox 4+, Safari, and Chrome.
133 | */
134 |
135 | h1 {
136 | font-size: 2em;
137 | margin: 0.67em 0;
138 | }
139 |
140 | /**
141 | * Address styling not present in IE 8/9.
142 | */
143 |
144 | mark {
145 | background: #ff0;
146 | color: #000;
147 | }
148 |
149 | /**
150 | * Address inconsistent and variable font size in all browsers.
151 | */
152 |
153 | small {
154 | font-size: 80%;
155 | }
156 |
157 | /**
158 | * Prevent `sub` and `sup` affecting `line-height` in all browsers.
159 | */
160 |
161 | sub,
162 | sup {
163 | font-size: 75%;
164 | line-height: 0;
165 | position: relative;
166 | vertical-align: baseline;
167 | }
168 |
169 | sup {
170 | top: -0.5em;
171 | }
172 |
173 | sub {
174 | bottom: -0.25em;
175 | }
176 |
177 | /* Embedded content
178 | ========================================================================== */
179 |
180 | /**
181 | * Remove border when inside `a` element in IE 8/9/10.
182 | */
183 |
184 | img {
185 | border: 0;
186 | }
187 |
188 | /**
189 | * Correct overflow not hidden in IE 9/10/11.
190 | */
191 |
192 | svg:not(:root) {
193 | overflow: hidden;
194 | }
195 |
196 | /* Grouping content
197 | ========================================================================== */
198 |
199 | /**
200 | * Address margin not present in IE 8/9 and Safari.
201 | */
202 |
203 | figure {
204 | margin: 1em 40px;
205 | }
206 |
207 | /**
208 | * Address differences between Firefox and other browsers.
209 | */
210 |
211 | hr {
212 | -moz-box-sizing: content-box;
213 | box-sizing: content-box;
214 | height: 0;
215 | }
216 |
217 | /**
218 | * Contain overflow in all browsers.
219 | */
220 |
221 | pre {
222 | overflow: auto;
223 | }
224 |
225 | /**
226 | * Address odd `em`-unit font size rendering in all browsers.
227 | */
228 |
229 | code,
230 | kbd,
231 | pre,
232 | samp {
233 | font-family: monospace, monospace;
234 | font-size: 1em;
235 | }
236 |
237 | /* Forms
238 | ========================================================================== */
239 |
240 | /**
241 | * Known limitation: by default, Chrome and Safari on OS X allow very limited
242 | * styling of `select`, unless a `border` property is set.
243 | */
244 |
245 | /**
246 | * 1. Correct color not being inherited.
247 | * Known issue: affects color of disabled elements.
248 | * 2. Correct font properties not being inherited.
249 | * 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
250 | */
251 |
252 | button,
253 | input,
254 | optgroup,
255 | select,
256 | textarea {
257 | color: inherit; /* 1 */
258 | font: inherit; /* 2 */
259 | margin: 0; /* 3 */
260 | }
261 |
262 | /**
263 | * Address `overflow` set to `hidden` in IE 8/9/10/11.
264 | */
265 |
266 | button {
267 | overflow: visible;
268 | }
269 |
270 | /**
271 | * Address inconsistent `text-transform` inheritance for `button` and `select`.
272 | * All other form control elements do not inherit `text-transform` values.
273 | * Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
274 | * Correct `select` style inheritance in Firefox.
275 | */
276 |
277 | button,
278 | select {
279 | text-transform: none;
280 | }
281 |
282 | /**
283 | * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
284 | * and `video` controls.
285 | * 2. Correct inability to style clickable `input` types in iOS.
286 | * 3. Improve usability and consistency of cursor style between image-type
287 | * `input` and others.
288 | */
289 |
290 | button,
291 | html input[type="button"], /* 1 */
292 | input[type="reset"],
293 | input[type="submit"] {
294 | -webkit-appearance: button; /* 2 */
295 | cursor: pointer; /* 3 */
296 | }
297 |
298 | /**
299 | * Re-set default cursor for disabled elements.
300 | */
301 |
302 | button[disabled],
303 | html input[disabled] {
304 | cursor: default;
305 | }
306 |
307 | /**
308 | * Remove inner padding and border in Firefox 4+.
309 | */
310 |
311 | button::-moz-focus-inner,
312 | input::-moz-focus-inner {
313 | border: 0;
314 | padding: 0;
315 | }
316 |
317 | /**
318 | * Address Firefox 4+ setting `line-height` on `input` using `!important` in
319 | * the UA stylesheet.
320 | */
321 |
322 | input {
323 | line-height: normal;
324 | }
325 |
326 | /**
327 | * It's recommended that you don't attempt to style these elements.
328 | * Firefox's implementation doesn't respect box-sizing, padding, or width.
329 | *
330 | * 1. Address box sizing set to `content-box` in IE 8/9/10.
331 | * 2. Remove excess padding in IE 8/9/10.
332 | */
333 |
334 | input[type="checkbox"],
335 | input[type="radio"] {
336 | box-sizing: border-box; /* 1 */
337 | padding: 0; /* 2 */
338 | }
339 |
340 | /**
341 | * Fix the cursor style for Chrome's increment/decrement buttons. For certain
342 | * `font-size` values of the `input`, it causes the cursor style of the
343 | * decrement button to change from `default` to `text`.
344 | */
345 |
346 | input[type="number"]::-webkit-inner-spin-button,
347 | input[type="number"]::-webkit-outer-spin-button {
348 | height: auto;
349 | }
350 |
351 | /**
352 | * 1. Address `appearance` set to `searchfield` in Safari and Chrome.
353 | * 2. Address `box-sizing` set to `border-box` in Safari and Chrome
354 | * (include `-moz` to future-proof).
355 | */
356 |
357 | input[type="search"] {
358 | -webkit-appearance: textfield; /* 1 */
359 | -moz-box-sizing: content-box;
360 | -webkit-box-sizing: content-box; /* 2 */
361 | box-sizing: content-box;
362 | }
363 |
364 | /**
365 | * Remove inner padding and search cancel button in Safari and Chrome on OS X.
366 | * Safari (but not Chrome) clips the cancel button when the search input has
367 | * padding (and `textfield` appearance).
368 | */
369 |
370 | input[type="search"]::-webkit-search-cancel-button,
371 | input[type="search"]::-webkit-search-decoration {
372 | -webkit-appearance: none;
373 | }
374 |
375 | /**
376 | * Define consistent border, margin, and padding.
377 | */
378 |
379 | fieldset {
380 | border: 1px solid #c0c0c0;
381 | margin: 0 2px;
382 | padding: 0.35em 0.625em 0.75em;
383 | }
384 |
385 | /**
386 | * 1. Correct `color` not being inherited in IE 8/9/10/11.
387 | * 2. Remove padding so people aren't caught out if they zero out fieldsets.
388 | */
389 |
390 | legend {
391 | border: 0; /* 1 */
392 | padding: 0; /* 2 */
393 | }
394 |
395 | /**
396 | * Remove default vertical scrollbar in IE 8/9/10/11.
397 | */
398 |
399 | textarea {
400 | overflow: auto;
401 | }
402 |
403 | /**
404 | * Don't inherit the `font-weight` (applied by a rule above).
405 | * NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
406 | */
407 |
408 | optgroup {
409 | font-weight: bold;
410 | }
411 |
412 | /* Tables
413 | ========================================================================== */
414 |
415 | /**
416 | * Remove most spacing between table cells.
417 | */
418 |
419 | table {
420 | border-collapse: collapse;
421 | border-spacing: 0;
422 | }
423 |
424 | td,
425 | th {
426 | padding: 0;
427 | }
428 |
--------------------------------------------------------------------------------
/docs/source/stylesheets/_rtl.scss:
--------------------------------------------------------------------------------
1 | ////////////////////////////////////////////////////////////////////////////////
2 | // RTL Styles Variables
3 | ////////////////////////////////////////////////////////////////////////////////
4 |
5 | $default: auto;
6 |
7 | ////////////////////////////////////////////////////////////////////////////////
8 | // TABLE OF CONTENTS
9 | ////////////////////////////////////////////////////////////////////////////////
10 |
11 | #toc>ul>li>a>span {
12 | float: left;
13 | }
14 |
15 | .toc-wrapper {
16 | transition: right 0.3s ease-in-out !important;
17 | left: $default !important;
18 | #{right}: 0;
19 | }
20 |
21 | .toc-h2 {
22 | padding-#{right}: $nav-padding + $nav-indent;
23 | }
24 |
25 | #nav-button {
26 | #{right}: 0;
27 | transition: right 0.3s ease-in-out;
28 | &.open {
29 | right: $nav-width
30 | }
31 | }
32 |
33 | ////////////////////////////////////////////////////////////////////////////////
34 | // PAGE LAYOUT AND CODE SAMPLE BACKGROUND
35 | ////////////////////////////////////////////////////////////////////////////////
36 | .page-wrapper {
37 | margin-#{left}: $default !important;
38 | margin-#{right}: $nav-width;
39 | .dark-box {
40 | #{right}: $default;
41 | #{left}: 0;
42 | }
43 | }
44 |
45 | .lang-selector {
46 | width: $default !important;
47 | a {
48 | float: right;
49 | }
50 | }
51 |
52 | ////////////////////////////////////////////////////////////////////////////////
53 | // CODE SAMPLE STYLES
54 | ////////////////////////////////////////////////////////////////////////////////
55 | .content {
56 | &>h1,
57 | &>h2,
58 | &>h3,
59 | &>h4,
60 | &>h5,
61 | &>h6,
62 | &>p,
63 | &>table,
64 | &>ul,
65 | &>ol,
66 | &>aside,
67 | &>dl {
68 | margin-#{left}: $examples-width;
69 | margin-#{right}: $default !important;
70 | }
71 | &>ul,
72 | &>ol {
73 | padding-#{right}: $main-padding + 15px;
74 | }
75 | table {
76 | th,
77 | td {
78 | text-align: right;
79 | }
80 | }
81 | dd {
82 | margin-#{right}: 15px;
83 | }
84 | aside {
85 | aside:before {
86 | padding-#{left}: 0.5em;
87 | }
88 | .search-highlight {
89 | background: linear-gradient(to top right, #F7E633 0%, #F1D32F 100%);
90 | }
91 | }
92 | pre,
93 | blockquote {
94 | float: left !important;
95 | clear: left !important;
96 | }
97 | }
98 |
99 | ////////////////////////////////////////////////////////////////////////////////
100 | // TYPOGRAPHY
101 | ////////////////////////////////////////////////////////////////////////////////
102 | h1,
103 | h2,
104 | h3,
105 | h4,
106 | h5,
107 | h6,
108 | p,
109 | aside {
110 | text-align: right;
111 | direction: rtl;
112 | }
113 |
114 | .toc-wrapper {
115 | text-align: right;
116 | direction: rtl;
117 | font-weight: 100 !important;
118 | }
119 |
120 |
121 | ////////////////////////////////////////////////////////////////////////////////
122 | // RESPONSIVE DESIGN
123 | ////////////////////////////////////////////////////////////////////////////////
124 | @media (max-width: $tablet-width) {
125 | .toc-wrapper {
126 | #{right}: -$nav-width;
127 | &.open {
128 | #{right}: 0;
129 | }
130 | }
131 | .page-wrapper {
132 | margin-#{right}: 0;
133 | }
134 | }
135 |
136 | @media (max-width: $phone-width) {
137 | %left-col {
138 | margin-#{left}: 0;
139 | }
140 | }
141 |
--------------------------------------------------------------------------------
/docs/source/stylesheets/_variables.scss:
--------------------------------------------------------------------------------
1 | /*
2 | Copyright 2008-2013 Concur Technologies, Inc.
3 |
4 | Licensed under the Apache License, Version 2.0 (the "License"); you may
5 | not use this file except in compliance with the License. You may obtain
6 | a copy of the License at
7 |
8 | http://www.apache.org/licenses/LICENSE-2.0
9 |
10 | Unless required by applicable law or agreed to in writing, software
11 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
12 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
13 | License for the specific language governing permissions and limitations
14 | under the License.
15 | */
16 |
17 |
18 | ////////////////////////////////////////////////////////////////////////////////
19 | // CUSTOMIZE SLATE
20 | ////////////////////////////////////////////////////////////////////////////////
21 | // Use these settings to help adjust the appearance of Slate
22 |
23 |
24 | // BACKGROUND COLORS
25 | ////////////////////
26 | $nav-bg: #2E3336 !default;
27 | $examples-bg: #2E3336 !default;
28 | $code-bg: #1E2224 !default;
29 | $code-annotation-bg: #191D1F !default;
30 | $nav-subitem-bg: #1E2224 !default;
31 | $nav-active-bg: #0F75D4 !default;
32 | $nav-active-parent-bg: #1E2224 !default; // parent links of the current section
33 | $lang-select-border: #000 !default;
34 | $lang-select-bg: #1E2224 !default;
35 | $lang-select-active-bg: $examples-bg !default; // feel free to change this to blue or something
36 | $lang-select-pressed-bg: #111 !default; // color of language tab bg when mouse is pressed
37 | $main-bg: #F3F7F9 !default;
38 | $aside-notice-bg: #8fbcd4 !default;
39 | $aside-warning-bg: #c97a7e !default;
40 | $aside-success-bg: #6ac174 !default;
41 | $search-notice-bg: #c97a7e !default;
42 |
43 |
44 | // TEXT COLORS
45 | ////////////////////
46 | $main-text: #333 !default; // main content text color
47 | $nav-text: #fff !default;
48 | $nav-active-text: #fff !default;
49 | $nav-active-parent-text: #fff !default; // parent links of the current section
50 | $lang-select-text: #fff !default; // color of unselected language tab text
51 | $lang-select-active-text: #fff !default; // color of selected language tab text
52 | $lang-select-pressed-text: #fff !default; // color of language tab text when mouse is pressed
53 |
54 |
55 | // SIZES
56 | ////////////////////
57 | $nav-width: 230px !default; // width of the navbar
58 | $examples-width: 50% !default; // portion of the screen taken up by code examples
59 | $logo-margin: 0px !default; // margin below logo
60 | $main-padding: 28px !default; // padding to left and right of content & examples
61 | $nav-padding: 15px !default; // padding to left and right of navbar
62 | $nav-v-padding: 10px !default; // padding used vertically around search boxes and results
63 | $nav-indent: 10px !default; // extra padding for ToC subitems
64 | $code-annotation-padding: 13px !default; // padding inside code annotations
65 | $h1-margin-bottom: 21px !default; // padding under the largest header tags
66 | $tablet-width: 930px !default; // min width before reverting to tablet size
67 | $phone-width: $tablet-width - $nav-width !default; // min width before reverting to mobile size
68 |
69 |
70 | // FONTS
71 | ////////////////////
72 | %default-font {
73 | font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
74 | font-size: 14px;
75 | }
76 |
77 | %header-font {
78 | @extend %default-font;
79 | font-weight: bold;
80 | }
81 |
82 | %code-font {
83 | font-family: Consolas, Menlo, Monaco, "Lucida Console", "Liberation Mono", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", "Courier New", monospace, serif;
84 | font-size: 12px;
85 | line-height: 1.5;
86 | }
87 |
88 |
89 | // OTHER
90 | ////////////////////
91 | $nav-footer-border-color: #666 !default;
92 | $search-box-border-color: #666 !default;
93 |
94 |
95 | ////////////////////////////////////////////////////////////////////////////////
96 | // INTERNAL
97 | ////////////////////////////////////////////////////////////////////////////////
98 | // These settings are probably best left alone.
99 |
100 | %break-words {
101 | word-break: break-all;
102 | hyphens: auto;
103 | }
104 |
--------------------------------------------------------------------------------
/docs/source/stylesheets/print.css.scss:
--------------------------------------------------------------------------------
1 | @charset "utf-8";
2 | @import 'normalize';
3 | @import 'variables';
4 | @import 'icon-font';
5 |
6 | /*
7 | Copyright 2008-2013 Concur Technologies, Inc.
8 |
9 | Licensed under the Apache License, Version 2.0 (the "License"); you may
10 | not use this file except in compliance with the License. You may obtain
11 | a copy of the License at
12 |
13 | http://www.apache.org/licenses/LICENSE-2.0
14 |
15 | Unless required by applicable law or agreed to in writing, software
16 | distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
17 | WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
18 | License for the specific language governing permissions and limitations
19 | under the License.
20 | */
21 |
22 | $print-color: #999;
23 | $print-color-light: #ccc;
24 | $print-font-size: 12px;
25 |
26 | body {
27 | @extend %default-font;
28 | }
29 |
30 | .tocify, .toc-footer, .lang-selector, .search, #nav-button {
31 | display: none;
32 | }
33 |
34 | .tocify-wrapper>img {
35 | margin: 0 auto;
36 | display: block;
37 | }
38 |
39 | .content {
40 | font-size: 12px;
41 |
42 | pre, code {
43 | @extend %code-font;
44 | @extend %break-words;
45 | border: 1px solid $print-color;
46 | border-radius: 5px;
47 | font-size: 0.8em;
48 | }
49 |
50 | pre {
51 | code {
52 | border: 0;
53 | }
54 | }
55 |
56 | pre {
57 | padding: 1.3em;
58 | }
59 |
60 | code {
61 | padding: 0.2em;
62 | }
63 |
64 | table {
65 | border: 1px solid $print-color;
66 | tr {
67 | border-bottom: 1px solid $print-color;
68 | }
69 | td,th {
70 | padding: 0.7em;
71 | }
72 | }
73 |
74 | p {
75 | line-height: 1.5;
76 | }
77 |
78 | a {
79 | text-decoration: none;
80 | color: #000;
81 | }
82 |
83 | h1 {
84 | @extend %header-font;
85 | font-size: 2.5em;
86 | padding-top: 0.5em;
87 | padding-bottom: 0.5em;
88 | margin-top: 1em;
89 | margin-bottom: $h1-margin-bottom;
90 | border: 2px solid $print-color-light;
91 | border-width: 2px 0;
92 | text-align: center;
93 | }
94 |
95 | h2 {
96 | @extend %header-font;
97 | font-size: 1.8em;
98 | margin-top: 2em;
99 | border-top: 2px solid $print-color-light;
100 | padding-top: 0.8em;
101 | }
102 |
103 | h1+h2, h1+div+h2 {
104 | border-top: none;
105 | padding-top: 0;
106 | margin-top: 0;
107 | }
108 |
109 | h3, h4 {
110 | @extend %header-font;
111 | font-size: 0.8em;
112 | margin-top: 1.5em;
113 | margin-bottom: 0.8em;
114 | text-transform: uppercase;
115 | }
116 |
117 | h5, h6 {
118 | text-transform: uppercase;
119 | }
120 |
121 | aside {
122 | padding: 1em;
123 | border: 1px solid $print-color-light;
124 | border-radius: 5px;
125 | margin-top: 1.5em;
126 | margin-bottom: 1.5em;
127 | line-height: 1.6;
128 | }
129 |
130 | aside:before {
131 | vertical-align: middle;
132 | padding-right: 0.5em;
133 | font-size: 14px;
134 | }
135 |
136 | aside.notice:before {
137 | @extend %icon-info-sign;
138 | }
139 |
140 | aside.warning:before {
141 | @extend %icon-exclamation-sign;
142 | }
143 |
144 | aside.success:before {
145 | @extend %icon-ok-sign;
146 | }
147 | }
--------------------------------------------------------------------------------
/gen_docs:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | this_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
4 |
5 |
6 | # Get widdershins (spec->markdown) and shins (markdown->HTML)
7 |
8 | which git >/dev/null && git submodule update --init --recursive
9 |
10 |
11 | # Generate Markdown doc
12 |
13 | npm install --prefix "$this_path/widdershins" --no-save
14 |
15 | "$this_path/widdershins/widdershins.js" \
16 | "$this_path/tests/contract.json" \
17 | -o "$this_path/docs/README.md" # --language_tabs "shell:curl"
18 |
19 |
20 | # Generate HTML doc
21 |
22 | npm install --prefix "$this_path/shins" --no-save
23 |
24 | "$this_path/shins/shins.js" "$this_path/docs/README.md" \
25 | --output "$this_path/docs/index.html"
26 |
27 | cp -R "$this_path/shins/pub" "$this_path/docs/pub"
28 | cp -R "$this_path/shins/source" "$this_path/docs/source"
29 |
30 |
31 | # Open HTML doc
32 |
33 | open "$this_path/docs/index.html"
34 |
--------------------------------------------------------------------------------
/requests_and_rest.robot:
--------------------------------------------------------------------------------
1 | ### pip install --upgrade robotframework-requests
2 |
3 | *** Settings ***
4 | Library RequestsLibrary WITH NAME req
5 | Library Collections
6 | Library json
7 | Suite setup Create Session typicode https://jsonplaceholder.typicode.com
8 | Suite teardown Delete all sessions
9 |
10 |
11 | *** Test Cases ***
12 | requests: Should have a name and belong to a company with a slogan
13 | ${resp}= req.Get Request typicode /users/1
14 | Should Be Equal As Integers ${resp.status_code} 200
15 | ${name}= Get From Dictionary ${resp.json()} name
16 | Should Be Equal As Strings ${name} Leanne Graham
17 | ${co}= Get From Dictionary ${resp.json()} company
18 | ${co_slogan}= Get From Dictionary ${co} catchPhrase
19 | Should Be Equal As Strings ${co_slogan} Multi-layered client-server neural-net
20 | ${json}= Dumps ${resp.json()} indent=${4}
21 | Log to Console ${json}
22 |
23 |
24 |
25 | ### pip install --upgrade RESTinstance
26 |
27 | *** Settings ***
28 | Library REST https://jsonplaceholder.typicode.com
29 |
30 |
31 | *** Test Cases ***
32 | RESTinstance: Should have a name and belong to a company with a slogan
33 | REST.GET /users/1
34 | Integer response status 200
35 | String $.name Leanne Graham
36 | String $..catchPhrase Multi-layered client-server neural-net
37 | Output $
38 |
--------------------------------------------------------------------------------
/requirements.txt:
--------------------------------------------------------------------------------
1 | RESTinstance
2 |
--------------------------------------------------------------------------------
/rfdocker:
--------------------------------------------------------------------------------
1 | #!/usr/bin/env bash
2 |
3 | # https://github.com/asyrjasalo/rfdocker
4 | # https://hub.docker.com/r/robotframework/rfdocker
5 |
6 | set -e
7 |
8 | ### constants ##################################################################
9 |
10 | this_path="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
11 |
12 | ### variables ##################################################################
13 |
14 | : ${BUILD_ARGS:=""}
15 | : ${BUILD_DIR:="$this_path"}
16 | : ${BUILD_NAME:=${this_path##*/}}
17 | : ${RUN_ARGS:=''}
18 |
19 | ### build and run tests ########################################################
20 |
21 | docker build $BUILD_ARGS --tag "rfdocker:$BUILD_NAME" "$BUILD_DIR"
22 |
23 | docker run --rm -ti -e HOST_UID=$(id -u) -e HOST_GID=$(id -g) $RUN_ARGS \
24 | -v "$this_path/tests":/home/robot/tests \
25 | -v "$this_path/results":/home/robot/results \
26 | "rfdocker:$BUILD_NAME" "${@:-tests}"
27 |
--------------------------------------------------------------------------------
/tests/contract.json:
--------------------------------------------------------------------------------
1 | {
2 | "swagger": "2.0",
3 | "info": {
4 | "title": "Robot Framework for APIs",
5 | "description": "Using Robot Framework for API (test) automation",
6 | "contact": {
7 | "name": "SALabs_",
8 | "url": "https://github.com/Omenia/robotframework_for_apis",
9 | "email": "salabs@siili.com"
10 | },
11 | "version": "2019"
12 | },
13 | "host": "jsonplaceholder.typicode.com",
14 | "schemes": [
15 | "https",
16 | "http"
17 | ],
18 | "consumes": [
19 | "application/json"
20 | ],
21 | "produces": [
22 | "application/json"
23 | ],
24 | "paths": {
25 | "/users": {
26 | "get": {
27 | "summary": "Get all users",
28 | "description": "This endpoint returns all the existing users. The longer description\ngoes in this field.",
29 | "responses": {
30 | "200": {
31 | "description": "GET all",
32 | "schema": {
33 | "$ref": "#/definitions/users"
34 | }
35 | }
36 | }
37 | },
38 | "post": {
39 | "summary": "Create new user",
40 | "description": "This endpoint creates a new user",
41 | "responses": {
42 | "201": {
43 | "description": "POST valid",
44 | "schema": {
45 | "$ref": "#/definitions/user"
46 | }
47 | }
48 | }
49 | }
50 | },
51 | "/users/{id}": {
52 | "get": {
53 | "summary": "Get the user",
54 | "description": "This endpoint returns the existing user. And I am Mr Longer Description\nyou could not fit in the summary.",
55 | "responses": {
56 | "200": {
57 | "description": "GET single",
58 | "schema": {
59 | "$ref": "#/definitions/user"
60 | }
61 | }
62 | }
63 | },
64 | "put": {
65 | "summary": "Update the user",
66 | "description": "This endpoint updates the existing user. I can use this field to\nexplain e.g. internals. Am freeform text.",
67 | "responses": {
68 | "200": {
69 | "description": "PUT single",
70 | "schema": {
71 | "$ref": "#/definitions/user"
72 | }
73 | }
74 | }
75 | },
76 | "delete": {
77 | "summary": "Delete the user",
78 | "description": "This endpoint deletes the existing user.",
79 | "responses": {
80 | "200": {
81 | "description": "DELETE single",
82 | "schema": {
83 | "$ref": "#/definitions/user"
84 | }
85 | }
86 | }
87 | },
88 | "patch": {
89 | "summary": "Patch the user",
90 | "description": "Note that as a PATCH I can only update the user's one property!",
91 | "responses": {
92 | "200": {
93 | "description": "PATCH single",
94 | "schema": {
95 | "$ref": "#/definitions/user"
96 | }
97 | }
98 | }
99 | },
100 | "parameters": [
101 | {
102 | "name": "id",
103 | "in": "path",
104 | "description": "id of the user",
105 | "required": true,
106 | "type": "integer"
107 | }
108 | ]
109 | }
110 | },
111 | "definitions": {
112 | "users": {
113 | "type": "array",
114 | "items": {
115 | "$ref": "#/definitions/user"
116 | }
117 | },
118 | "user": {
119 | "type": "object",
120 | "properties": {
121 | "id": {
122 | "type": "integer",
123 | "default": 1
124 | },
125 | "name": {
126 | "type": "string",
127 | "default": "Leanne Graham"
128 | },
129 | "username": {
130 | "type": "string",
131 | "default": "Bret"
132 | },
133 | "email": {
134 | "type": "string",
135 | "default": "Sincere@april.biz",
136 | "format": "email",
137 | "examples": [
138 | "Sincere@april.biz"
139 | ]
140 | },
141 | "address": {
142 | "type": "object",
143 | "properties": {
144 | "street": {
145 | "type": "string",
146 | "default": "Kulas Light"
147 | },
148 | "suite": {
149 | "type": "string",
150 | "default": "Apt. 556"
151 | },
152 | "city": {
153 | "type": "string",
154 | "default": "Gwenborough"
155 | },
156 | "zipcode": {
157 | "type": "string",
158 | "default": "92998-3874"
159 | },
160 | "geo": {
161 | "type": "object",
162 | "properties": {
163 | "lat": {
164 | "type": "string",
165 | "default": "-37.3159"
166 | },
167 | "lng": {
168 | "type": "string",
169 | "default": "81.1496"
170 | }
171 | },
172 | "required": [
173 | "lat",
174 | "lng"
175 | ]
176 | }
177 | },
178 | "required": [
179 | "city",
180 | "geo",
181 | "street",
182 | "suite",
183 | "zipcode"
184 | ]
185 | },
186 | "phone": {
187 | "type": "string",
188 | "default": "1-770-736-8031 x56442"
189 | },
190 | "website": {
191 | "type": "string",
192 | "default": "hildegard.org"
193 | },
194 | "company": {
195 | "type": "object",
196 | "properties": {
197 | "name": {
198 | "type": "string",
199 | "default": "Romaguera-Crona"
200 | },
201 | "catchPhrase": {
202 | "type": "string",
203 | "default": "Multi-layered client-server neural-net"
204 | },
205 | "bs": {
206 | "type": "string",
207 | "default": "harness real-time e-markets"
208 | }
209 | },
210 | "required": [
211 | "bs",
212 | "catchPhrase",
213 | "name"
214 | ]
215 | }
216 | }
217 | }
218 | },
219 | "tags": [
220 | {
221 | "name": "RESTinstance",
222 | "description": "Tagged for RESTinstance"
223 | }
224 | ]
225 | }
--------------------------------------------------------------------------------
/tests/contract.template.json:
--------------------------------------------------------------------------------
1 | {
2 | "swagger": "2.0",
3 | "info": {
4 | "title": "Robot Framework for APIs",
5 | "description": "Using Robot Framework for API (test) automation",
6 | "contact": {
7 | "name": "SALabs_",
8 | "url": "https://github.com/Omenia/robotframework_for_apis",
9 | "email": "salabs@siili.com"
10 | },
11 | "version": "2019"
12 | },
13 | "host": "jsonplaceholder.typicode.com",
14 | "schemes": [
15 | "https",
16 | "http"
17 | ],
18 | "consumes": [
19 | "application/json"
20 | ],
21 | "produces": [
22 | "application/json"
23 | ],
24 | "paths": {
25 | "/users": {
26 | "get": {
27 | "summary": "Get all users",
28 | "description": "This endpoint returns all the existing users. The longer description\ngoes in this field.",
29 | "responses": {
30 | "200": {
31 | "description": "GET all",
32 | "schema": {
33 | "$ref": "#/definitions/users"
34 | }
35 | }
36 | }
37 | },
38 | "post": {
39 | "summary": "Create new user",
40 | "description": "This endpoint creates a new user",
41 | "responses": {
42 | "201": {
43 | "description": "POST valid",
44 | "schema": {
45 | "$ref": "#/definitions/user"
46 | }
47 | }
48 | }
49 | }
50 | },
51 | "/users/{id}": {
52 | "get": {
53 | "summary": "Get the user",
54 | "description": "This endpoint returns the existing user. And I am Mr Longer Description\nyou could not fit in the summary.",
55 | "responses": {
56 | "200": {
57 | "description": "GET single",
58 | "schema": {
59 | "$ref": "#/definitions/user"
60 | }
61 | }
62 | }
63 | },
64 | "put": {
65 | "summary": "Update the user",
66 | "description": "This endpoint updates the existing user. I can use this field to\nexplain e.g. internals. Am freeform text.",
67 | "responses": {
68 | "200": {
69 | "description": "PUT single",
70 | "schema": {
71 | "$ref": "#/definitions/user"
72 | }
73 | }
74 | }
75 | },
76 | "delete": {
77 | "summary": "Delete the user",
78 | "description": "This endpoint deletes the existing user.",
79 | "responses": {
80 | "200": {
81 | "description": "DELETE single",
82 | "schema": {
83 | "$ref": "#/definitions/user"
84 | }
85 | }
86 | }
87 | },
88 | "patch": {
89 | "summary": "Patch the user",
90 | "description": "Note that as a PATCH I can only update the user's one property!",
91 | "responses": {
92 | "200": {
93 | "description": "PATCH single",
94 | "schema": {
95 | "$ref": "#/definitions/user"
96 | }
97 | }
98 | }
99 | },
100 | "parameters": [
101 | {
102 | "name": "id",
103 | "in": "path",
104 | "description": "id of the user",
105 | "required": true,
106 | "type": "integer"
107 | }
108 | ]
109 | }
110 | },
111 | "definitions": {
112 | "users": {
113 | "type": "array",
114 | "items": {
115 | "$ref": "#/definitions/user"
116 | }
117 | },
118 | "user": {
119 |
120 | }
121 | },
122 | "tags": [
123 | {
124 | "name": "RESTinstance",
125 | "description": "Tagged for RESTinstance"
126 | }
127 | ]
128 | }
--------------------------------------------------------------------------------
/tests/contract_driven.robot:
--------------------------------------------------------------------------------
1 | *** Settings ***
2 | Library REST https://jsonplaceholder.typicode.com
3 | ... spec=${CURDIR}/contract.json
4 |
5 | *** Test Cases ***
6 | Valid user
7 | GET /users/1
8 |
9 | New user
10 | POST /users ${CURDIR}/user.json
11 |
12 | Edit user
13 | PUT /users/1 ${CURDIR}/user.json
14 |
15 | Edit email
16 | PATCH /users/2 { "email": "ismo.aro@robotframework.dev" }
17 |
18 | Delete
19 | DELETE /users/10
20 |
21 | Valid users
22 | GET /users
23 |
--------------------------------------------------------------------------------
/tests/model.json:
--------------------------------------------------------------------------------
1 | {
2 | "type": "object",
3 | "properties": {
4 | "id": {
5 | "type": "integer",
6 | "default": 1
7 | },
8 | "name": {
9 | "type": "string",
10 | "default": "Leanne Graham"
11 | },
12 | "username": {
13 | "type": "string",
14 | "default": "Bret"
15 | },
16 | "email": {
17 | "type": "string",
18 | "default": "Sincere@april.biz",
19 | "format": "email",
20 | "examples": [
21 | "Sincere@april.biz"
22 | ]
23 | },
24 | "address": {
25 | "type": "object",
26 | "properties": {
27 | "street": {
28 | "type": "string",
29 | "default": "Kulas Light"
30 | },
31 | "suite": {
32 | "type": "string",
33 | "default": "Apt. 556"
34 | },
35 | "city": {
36 | "type": "string",
37 | "default": "Gwenborough"
38 | },
39 | "zipcode": {
40 | "type": "string",
41 | "default": "92998-3874"
42 | },
43 | "geo": {
44 | "type": "object",
45 | "properties": {
46 | "lat": {
47 | "type": "string",
48 | "default": "-37.3159"
49 | },
50 | "lng": {
51 | "type": "string",
52 | "default": "81.1496"
53 | }
54 | },
55 | "required": [
56 | "lat",
57 | "lng"
58 | ]
59 | }
60 | },
61 | "required": [
62 | "city",
63 | "geo",
64 | "street",
65 | "suite",
66 | "zipcode"
67 | ]
68 | },
69 | "phone": {
70 | "type": "string",
71 | "default": "1-770-736-8031 x56442"
72 | },
73 | "website": {
74 | "type": "string",
75 | "default": "hildegard.org"
76 | },
77 | "company": {
78 | "type": "object",
79 | "properties": {
80 | "name": {
81 | "type": "string",
82 | "default": "Romaguera-Crona"
83 | },
84 | "catchPhrase": {
85 | "type": "string",
86 | "default": "Multi-layered client-server neural-net"
87 | },
88 | "bs": {
89 | "type": "string",
90 | "default": "harness real-time e-markets"
91 | }
92 | },
93 | "required": [
94 | "bs",
95 | "catchPhrase",
96 | "name"
97 | ]
98 | }
99 | },
100 | "required": [
101 | "address",
102 | "company",
103 | "email",
104 | "id",
105 | "name",
106 | "phone",
107 | "username",
108 | "website"
109 | ]
110 | }
--------------------------------------------------------------------------------
/tests/model_based.robot:
--------------------------------------------------------------------------------
1 | *** Settings ***
2 | Library REST https://jsonplaceholder.typicode.com
3 | Suite setup Expect response body ${CURDIR}/model.json
4 |
5 | *** Test Cases ***
6 | Valid user
7 | GET /users/1
8 | String $.email format=email
9 |
10 | New user
11 | POST /users ${CURDIR}/user.json
12 |
13 | Edit user
14 | PUT /users/1 ${CURDIR}/user.json
15 |
16 | Edit email
17 | PATCH /users/2 { "email": "ismo.aro@robotframework.dev" }
18 |
19 | Delete
20 | Expect response body { "required": [] }
21 | DELETE /users/10
22 |
23 | Valid users
24 | Clear expectations
25 | GET /users
26 | Array $ minItems=1 maxItems=10
27 | Integer $[*].id maximum=10
28 |
--------------------------------------------------------------------------------
/tests/user.json:
--------------------------------------------------------------------------------
1 | {
2 | "id": 1,
3 | "name": "Leanne Graham",
4 | "username": "Bret",
5 | "email": "Sincere@april.biz",
6 | "address": {
7 | "street": "Kulas Light",
8 | "suite": "Apt. 556",
9 | "city": "Gwenborough",
10 | "zipcode": "92998-3874",
11 | "geo": {
12 | "lat": "-37.3159",
13 | "lng": "81.1496"
14 | }
15 | },
16 | "phone": "1-770-736-8031 x56442",
17 | "website": "hildegard.org",
18 | "company": {
19 | "name": "Romaguera-Crona",
20 | "catchPhrase": "Multi-layered client-server neural-net",
21 | "bs": "harness real-time e-markets"
22 | }
23 | }
--------------------------------------------------------------------------------