├── .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 | 4 | Generated by IcoMoon 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 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