Repository: MarketSquare/robotframework-requests (language: python)

Issue:
Store the latest response for further asserts 
Would be nice to just store the last response so that further keyword could use it instead of using return.

Considerations:
- last response should be session specific
- shall the last request be used globally?

Final implementation:
last response has been stored at library level so that works for session and sessionless keywords
Store the latest response for further asserts 
Would be nice to just store the last response so that further keyword could use it instead of using return.

Considerations:
- last response should be session specific
- shall the last request be used globally?

Final implementation:
last response has been stored at library level so that works for session and sessionless keywords


Discussion / hints:

Fix patch:
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 39b1c519..ffb38224 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -63,7 +63,7 @@ During the 17th April 2020 meetup we had the following todo list.
 ### New plans for 0.8 version
 - [X] **Feature:** [New On Session keywords](https://github.com/MarketSquare/robotframework-requests/issues/276)
 - [X] **Experiment:** [Reorganize Keywords in classes](https://github.com/MarketSquare/robotframework-requests/issues/270)
-- [ ] **Documentation:** Write a better introductive documentation to keywords (session best practives, parameters description, response object)
+- [X] **Documentation:** Write a better introductive documentation to keywords (session best practices, parameters description, response object)
 
 ### Early Adopters and feedback needed for pre-release versions
 You can install pre-release versions in this way:
diff --git a/README.md b/README.md
index 1ff7694b..083e32da 100644
--- a/README.md
+++ b/README.md
@@ -6,37 +6,48 @@
 🏠 ``RequestsLibrary`` is a [Robot Framework](https://robotframework.org/) library
 aimed to provide HTTP api testing functionalities by wrapping the well known [Python Requests Library](https://github.com/kennethreitz/requests).
 
-
 ## Install stable version
 ```sh
 pip install robotframework-requests
 ```
 
-## ✨ Install latest 0.9 pre-release (alpha) version ✨
-```sh
-pip install robotframework-requests --pre
+## 🤖 Quick start
+```robotframework
+*** Settings ***
+Library               RequestsLibrary
+
+*** Test Cases ***
+
+Quick Get Request
+    ${response}=    GET  https://www.google.com
+
+Quick Get Request With Parameters Test
+    ${response}=    GET  https://www.google.com/search  params=query=ciao  expected_status=200
+
+Quick Get A JSON Body
+    ${response}=    GET  https://jsonplaceholder.typicode.com/posts/1
+    Should Be Equal As Strings    1  ${response.json()}[id]
 ```
 
-### What's new in 0.9 pre-release
-Session less keywords are now available, you can just `GET`, `POST`, etc.. without creating a session before!
+### What's new in 0.9
+Session less keywords are now available, you can just `GET`, `POST`, etc.. no need to create a session anymore!
 ```robotframework
 ${resp}=  GET  https://www.google.com
 ```
-See the full [0.9 Keywords documentation](https://robotframework-requests.netlify.app/doc/requestslibrary)
 
 ### What's new in 0.8
 
 **New keywords structure:**
 All requests keywords have been rewritten because of many not backward compatible changes
 and to allow in the near future requests keywords without a session.
-Example `Get Request` become `GET On Session` and soon there will be also just `GET` 
+Example `Get Request` become `GET On Session` and soon there will be also just `GET`
 when a session is not needed.
 Old keywords `* Request` are now deprecated and will be removed in 1.0.0 version.
 
 **Implicit assert on status code:**
 `* On Session` keywords automatically fail if an error status code is returned.
-`expect_status=` could be used to specify a status code (`201`, `OK`, `Bad request`) 
-or `any` if you want to evaluate the response in any case. 
+`expect_status=` could be used to specify a status code (`201`, `OK`, `Bad request`)
+or `any` if you want to evaluate the response in any case.
 
 **Closer to the original Requests library:**
 New keywords have the same parameter orders and structure as the original.
@@ -45,31 +56,30 @@ Lot of pre-parsing / encoding has been removed to have a more accurate and uncha
 **Cleaner project architecture:**
 Main keywords file has been split with a more logic division to allow better and faster maintenance.
 
-## 🤖 Example usage
+## 🤖 More examples
 ```robotframework
-*** Settings ***
-Library               Collections
-Library               RequestsLibrary
-
-Suite Setup           Create Session    jsonplaceholder    https://jsonplaceholder.typicode.com
-
-*** Test Cases ***
-
-Get Request Test
-    Create Session    google             http://www.google.com
-
-    ${resp_google}=   GET On Session     google             /           expected_status=200
-    ${resp_json}=     GET On Session     jsonplaceholder    /posts/1
-
-    Should Be Equal As Strings           ${resp_google.reason}    OK
-    Dictionary Should Contain Value      ${resp_json.json()}    sunt aut facere repellat provident occaecati excepturi optio reprehenderit
-
-Post Request Test
-    &{data}=          Create dictionary  title=Robotframework requests  body=This is a test!  userId=1
-    ${resp}=          POST On Session    jsonplaceholder     /posts    json=${data}
-    
-    Status Should Be                     201    ${resp}
-    Dictionary Should Contain Key        ${resp.json()}     id
+*** Settings ***                                                                                       
+Library    Collections                                                                                 
+Library    RequestsLibrary                                                                             
+                                                                                                       
+Suite Setup    Create Session  jsonplaceholder  https://jsonplaceholder.typicode.com                   
+                                                                                                       
+*** Test Cases ***                                                                                     
+                                                                                                       
+Get Request Test                                                                                       
+    Create Session    google  http://www.google.com                                                    
+                                                                                                       
+    ${resp_google}=   GET On Session  google  /  expected_status=200                                   
+    ${resp_json}=     GET On Session  jsonplaceholder  /posts/1                                        
+                                                                                                       
+    Should Be Equal As Strings          ${resp_google.reason}  OK                                      
+    Dictionary Should Contain Value     ${resp_json.json()}  sunt aut facere repellat provident        
+                                                                                                       
+Post Request Test                                                                                      
+    &{data}=    Create dictionary  title=Robotframework requests  body=This is a test!  userId=1       
+    ${resp}=    POST On Session    jsonplaceholder  /posts  json=${data}  expected_status=anything     
+                                                                                                       
+    Status Should Be                 201  ${resp}                                                      
 ```
 
 ### 📖 Keywords documentation
diff --git a/doc/RequestsLibrary.html b/doc/RequestsLibrary.html
index 12f139c2..ed2d93c6 100644
--- a/doc/RequestsLibrary.html
+++ b/doc/RequestsLibrary.html
@@ -1096,7 +1096,7 @@
 jQuery.extend({highlight:function(e,t,n,r){if(e.nodeType===3){var i=e.data.match(t);if(i){var s=document.createElement(n||"span");s.className=r||"highlight";var o=e.splitText(i.index);o.splitText(i[0].length);var u=o.cloneNode(true);s.appendChild(u);o.parentNode.replaceChild(s,o);return 1}}else if(e.nodeType===1&&e.childNodes&&!/(script|style)/i.test(e.tagName)&&!(e.tagName===n.toUpperCase()&&e.className===r)){for(var a=0;a<e.childNodes.length;a++){a+=jQuery.highlight(e.childNodes[a],t,n,r)}}return 0}});jQuery.fn.unhighlight=function(e){var t={className:"highlight",element:"span"};jQuery.extend(t,e);return this.find(t.element+"."+t.className).each(function(){var e=this.parentNode;e.replaceChild(this.firstChild,this);e.normalize()}).end()};jQuery.fn.highlight=function(e,t){var n={className:"highlight",element:"span",caseSensitive:false,wordsOnly:false};jQuery.extend(n,t);if(e.constructor===String){e=[e]}e=jQuery.grep(e,function(e,t){return e!=""});e=jQuery.map(e,function(e,t){return e.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")});if(e.length==0){return this}var r=n.caseSensitive?"":"i";var i="("+e.join("|")+")";if(n.wordsOnly){i="\\b"+i+"\\b"}var s=new RegExp(i,r);return this.each(function(){jQuery.highlight(this,s,n.element,n.className)})}
 </script>
 <script type="text/javascript">
-libdoc = {"name": "RequestsLibrary", "doc": "<p>RequestsLibrary is a Robot Framework library aimed to provide HTTP api testing functionalities by wrapping the well known Python Requests Library.</p>\n<h3 id=\"Table of contents\">Table of contents</h3>\n<ul>\n<li><a href=\"#Usage\" class=\"name\">Usage</a></li>\n<li><a href=\"#Response%20Object\" class=\"name\">Response Object</a></li>\n<li><a href=\"#Keywords\" class=\"name\">Keywords</a></li>\n</ul>\n<h2 id=\"Usage\">Usage</h2>\n<p>Before making an HTTP request a new connection needs to be prepared this can be done with <a href=\"#Create%20Session\" class=\"name\">Create Session</a> keyword. Then you can execute any <span class=\"name\">* On Session</span> keywords below some examples:</p>\n<pre>\n  <b>*</b> Settings <b>*</b>\n  Library               Collections\n  Library               RequestsLibrary\n\n  Suite Setup           Create Session    jsonplaceholder    <a href=\"https://jsonplaceholder.typicode.com\">https://jsonplaceholder.typicode.com</a>\n\n  <b>*</b> Test Cases <b>*</b>\n\n  Get Request Test\n      Create Session    google             <a href=\"http://www.google.com\">http://www.google.com</a>\n\n      ${resp_google}=   GET On Session     google             /           expected_status=200\n      ${resp_json}=     GET On Session     jsonplaceholder    /posts/1\n\n      Should Be Equal As Strings           ${resp_google.reason}    OK\n      Dictionary Should Contain Value      ${resp_json.json()}    sunt aut facere repellat provident occaecati excepturi optio reprehenderit\n\n  Post Request Test\n      &amp;{data}=          Create dictionary  title=Robotframework requests  body=This is a test!  userId=1\n      ${resp}=          POST On Session    jsonplaceholder     /posts    json=${data}\n\n      Status Should Be                     201    ${resp}\n      Dictionary Should Contain Key        ${resp.json()}     id\n</pre>\n<h2 id=\"Response Object\">Response Object</h2>\n<p>All the HTTP requests keywords (GET, POST, PUT, etc.) return an extremely useful Response object. The Response object contains a server's response to an HTTP request.</p>\n<p>You can access the different attributes with the dot notation in this way: <code>${response.json()}</code> or <code>${response.text}</code>. Below the list of the most useful attributes:</p>\n<table border=\"1\">\n<tr>\n<th>Attributes</th>\n<th>Explanation</th>\n</tr>\n<tr>\n<td>content</td>\n<td>Content of the response, in bytes.</td>\n</tr>\n<tr>\n<td>cookies</td>\n<td>A CookieJar of Cookies the server sent back.</td>\n</tr>\n<tr>\n<td>elapsed</td>\n<td>The amount of time elapsed between sending the request and the arrival of the response (as a timedelta). This property specifically measures the time taken between sending the first byte of the request and finishing parsing the headers. It is therefore unaffected by consuming the response content or the value of the stream keyword argument.</td>\n</tr>\n<tr>\n<td>encoding</td>\n<td>Encoding to decode with when accessing <code>response.text.</code></td>\n</tr>\n<tr>\n<td>headers</td>\n<td>Case-insensitive Dictionary of Response Headers. For example, <code>headers['content-encoding']</code> will return the value of a `Content-Encoding' response header.</td>\n</tr>\n<tr>\n<td>history</td>\n<td>A list of Response objects from the history of the Request. Any redirect responses will end up here. The list is sorted from the oldest to the most recent request.</td>\n</tr>\n<tr>\n<td>json</td>\n<td>Returns the json-encoded content of a response, if any. Parameters: <code>**kwargs</code> - Optional arguments that json.loads takes. Raises:        ValueError ? If the response body does not contain valid json.</td>\n</tr>\n<tr>\n<td>ok</td>\n<td>Returns True if status_code is less than 400, False if not.</td>\n</tr>\n<tr>\n<td>reason</td>\n<td>Textual reason of responded HTTP Status, e.g. <code>Not Found</code> or <code>OK</code>.</td>\n</tr>\n<tr>\n<td>status_code</td>\n<td>Integer Code of responded HTTP Status, e.g. 404 or 200.</td>\n</tr>\n<tr>\n<td>text</td>\n<td>Content of the response, in unicode. If <code>response.encoding</code> is <code>None</code>, encoding will be guessed using chardet. The encoding of the response content is determined based solely on HTTP headers, following RFC 2616 to the letter. If you can take advantage of non-HTTP knowledge to make a better guess at the encoding, you should set <code>response.encoding</code> appropriately before accessing this property.</td>\n</tr>\n<tr>\n<td>url</td>\n<td>Final URL location of Response.</td>\n</tr>\n</table>", "version": "0.8.1", "generated": "2021-02-10 23:28:05", "type": "LIBRARY", "scope": "GLOBAL", "docFormat": "HTML", "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/__init__.py", "lineno": 19, "tags": [], "inits": [], "keywords": [{"name": "Create Client Cert Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "client_certs", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "client_certs=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>client_certs</code> ['client certificate', 'client key'] PEM files containing the client key and certificate</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 190}, {"name": "Create Custom Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> A Custom Authentication object to be passed on to the requests library. <a href=\"http://docs.python-requests.org/en/master/user/advanced/#custom-authentication\">http://docs.python-requests.org/en/master/user/advanced/#custom-authentication</a></p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 275}, {"name": "Create Digest Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> ['DOMAIN', 'username', 'password'] for NTLM Authentication</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 358}, {"name": "Create Ntlm Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> ['DOMAIN', 'username', 'password'] for NTLM Authentication</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 435}, {"name": "Create Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "auth", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "auth=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['TRACE', 'OPTIONS', 'DELETE', 'PUT', 'GET', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> List of username &amp; password for HTTP Basic Auth</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 109}, {"name": "Delete All Sessions", "args": [], "doc": "<p>Removes all the session objects</p>", "shortdoc": "Removes all the session objects", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 539}, {"name": "DELETE On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a DELETE request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a DELETE request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 137}, {"name": "Delete Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#DELETE%20On%20Session\" class=\"name\">DELETE On Session</a> instead.</p>\n<p>Send a DELETE request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the DELETE request to</p>\n<p><code>json</code> a value that will be json encoded and sent as request data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `DELETE On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 261}, {"name": "Get File For Streaming Upload", "args": [{"name": "path", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "path"}], "doc": "<p>Opens and returns a file descriptor of a specified file to be passed as <code>data</code> parameter to other requests keywords.</p>\n<p>This allows streaming upload of large files without reading them into memory.</p>\n<p>File descriptor is binary mode and read only. Requests keywords will automatically close the file, if used outside this library it's up to the caller to close it.</p>", "shortdoc": "Opens and returns a file descriptor of a specified file to be passed as ``data`` parameter to other requests keywords.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 56}, {"name": "GET On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a GET request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the resource is the <code>url</code>, while query string parameters can be passed as string, dictionary (or list of tuples or bytes) through the <code>params</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> here is a list:</p>\n<table border=\"1\">\n<tr>\n<td><code>data</code></td>\n<td>Dictionary, list of tuples, bytes, or file-like object to send in the body of the request.</td>\n</tr>\n<tr>\n<td><code>json</code></td>\n<td>A JSON serializable Python object to send in the body of the request.</td>\n</tr>\n<tr>\n<td><code>headers</code></td>\n<td>Dictionary of HTTP Headers to send with the request.</td>\n</tr>\n<tr>\n<td><code>cookies</code></td>\n<td>Dict or CookieJar object to send with the request.</td>\n</tr>\n<tr>\n<td><code>files</code></td>\n<td>Dictionary of file-like-objects (or <code>{'name': file-tuple}</code>) for multipart encoding upload.</td>\n</tr>\n<tr>\n<td><code>file-tuple</code></td>\n<td>can be a 2-tuple <code>('filename', fileobj)</code>, 3-tuple <code>('filename', fileobj, 'content_type')</code> or a 4-tuple <code>('filename', fileobj, 'content_type', custom_headers)</code>, where <code>'content-type'</code> is a string defining the content type of the given file and <code>custom_headers</code> a dict-like object containing additional headers to add for the file.</td>\n</tr>\n<tr>\n<td><code>auth</code></td>\n<td>Auth tuple to enable Basic/Digest/Custom HTTP Auth.</td>\n</tr>\n<tr>\n<td><code>timeout</code></td>\n<td>How many seconds to wait for the server to send data before giving up, as a float, or a <code>(connect timeout, read timeout)</code> tuple.</td>\n</tr>\n<tr>\n<td><code>allow_redirects</code></td>\n<td>Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to <code>True</code>.</td>\n</tr>\n<tr>\n<td><code>proxies</code></td>\n<td>Dictionary mapping protocol to the URL of the proxy.</td>\n</tr>\n<tr>\n<td><code>verify</code></td>\n<td>Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to <code>True</code>. Warning: if a session has been created with <code>verify=False</code> any other requests will not verify the SSL certificate.</td>\n</tr>\n<tr>\n<td><code>stream</code></td>\n<td>if <code>False</code>, the response content will be immediately downloaded.</td>\n</tr>\n<tr>\n<td><code>cert</code></td>\n<td>if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.</td>\n</tr>\n</table>\n<p>For more updated and complete information verify the official Requests api documentation: <a href=\"https://requests.readthedocs.io/en/latest/api/\">https://requests.readthedocs.io/en/latest/api/</a></p>", "shortdoc": "Sends a GET request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 10}, {"name": "Get Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> instead.</p>\n<p>Send a GET request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the GET request to</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as GET data or binary data that is sent as the raw body content</p>\n<p><code>json</code> a value that will be json encoded and sent as GET data if data is not specified</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `GET On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 36}, {"name": "HEAD On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a HEAD request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the HTTP headers is the <code>url</code>.</p>\n<p><code>allow_redirects</code> parameter is not provided, it will be set to <span class=\"name\">False</span> (as opposed to the default behavior).</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a HEAD request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 160}, {"name": "Head Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#HEAD%20On%20Session\" class=\"name\">HEAD On Session</a> instead.</p>\n<p>Send a HEAD request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the HEAD request to</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `HEAD On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 308}, {"name": "OPTIONS On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a OPTIONS request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the resource is the <code>url</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a OPTIONS request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 186}, {"name": "Options Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#OPTIONS%20On%20Session\" class=\"name\">OPTIONS On Session</a> instead.</p>\n<p>Send an OPTIONS request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the OPTIONS request to</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `OPTIONS On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 344}, {"name": "PATCH On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PATCH request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a PATCH request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 81}, {"name": "Patch Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#PATCH%20On%20Session\" class=\"name\">PATCH On Session</a> instead.</p>\n<p>Send a PATCH request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the PATCH request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as PATCH data or binary data that is sent as the raw body content or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as PATCH data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>files</code> a dictionary of file names containing file data to PATCH to the server</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `PATCH On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 147}, {"name": "POST On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a POST request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a POST request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 53}, {"name": "Post Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#POST%20On%20Session\" class=\"name\">POST On Session</a> instead.</p>\n<p>Send a POST request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the POST request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as POST data or binary data that is sent as the raw body content or passed as such for multipart form data if <code>files</code> is also defined or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as POST data if files or data is not specified</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>files</code> a dictionary of file names containing file data to POST to the server</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `POST On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 88}, {"name": "PUT On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PUT request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> keyword for the complete list.</p>", "shortdoc": "Sends a PUT request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 109}, {"name": "Put Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#PUT%20On%20Session\" class=\"name\">PUT On Session</a> instead.</p>\n<p>Send a PUT request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the PUT request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as PUT data or binary data that is sent as the raw body content or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as PUT data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `PUT On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 205}, {"name": "Request Should Be Successful", "args": [{"name": "response", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "response"}], "doc": "<p>Fails if response status code is a client or server error (4xx, 5xx).</p>\n<p><code>response</code> is the output of other requests keywords like <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a>.</p>\n<p>In case of failure an HTTPError will be automatically raised. A custom failure message <code>msg</code> can be added like in built-in keywords.</p>\n<p>For a more versatile assert keyword see <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a>.</p>", "shortdoc": "Fails if response status code is a client or server error (4xx, 5xx).", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 41}, {"name": "Session Exists", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}], "doc": "<p>Return True if the session has been already created</p>\n<p><code>alias</code> that has been used to identify the Session object in the cache</p>", "shortdoc": "Return True if the session has been already created", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 527}, {"name": "Status Should Be", "args": [{"name": "expected_status", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "expected_status"}, {"name": "response", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "response"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}], "doc": "<p>Fails if response status code is different than the expected.</p>\n<p><code>expected_status</code> could be the code number as an integer or as string. But it could also be a named status code like 'ok', 'created', 'accepted' or 'bad request', 'not found' etc.</p>\n<p><code>response</code> is the output of other requests keywords like <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a>.</p>\n<p>In case of failure an HTTPError will be automatically raised. A custom failure message <code>msg</code> can be added like in built-in keywords.</p>\n<p><span class=\"name\">* On Session</span> keywords (like <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a>) already have an implicit assert mechanism, that by default, verifies the response status code. <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword can be useful to do an explicit assert in case of <span class=\"name\">* On Session</span> keyword with <code>expected_status=anything</code> to disable implicit assert.</p>", "shortdoc": "Fails if response status code is different than the expected.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 18}, {"name": "To Json", "args": [{"name": "content", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "content"}, {"name": "pretty_print", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "pretty_print=False"}], "doc": "<p><b>DEPRECATED</b> Please use ${resp.json()} instead. Have a look at the improved HTML output as pretty printing replacement.</p>\n<p>Convert a string to a JSON object</p>\n<p><code>content</code> String content to convert into JSON</p>\n<p><code>pretty_print</code> If defined, will output JSON is pretty print format</p>", "shortdoc": "*DEPRECATED* Please use ${resp.json()} instead. Have a look at the improved HTML output as pretty printing replacement.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 15}, {"name": "Update Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "cookies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies=None"}], "doc": "<p>Update Session Headers: update a HTTP Session Headers</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of headers merge into session</p>", "shortdoc": "Update Session Headers: update a HTTP Session Headers", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 547}], "dataTypes": {"enums": [], "typedDicts": []}}
+libdoc = {"name": "RequestsLibrary", "doc": "<p>RequestsLibrary is a Robot Framework library aimed to provide HTTP api testing functionalities by wrapping the well known Python Requests Library.</p>\n<h3 id=\"Table of contents\">Table of contents</h3>\n<ul>\n<li><a href=\"#Usage\" class=\"name\">Usage</a></li>\n<li><a href=\"#Response%20Object\" class=\"name\">Response Object</a></li>\n<li><a href=\"#Keywords\" class=\"name\">Keywords</a></li>\n</ul>\n<h2 id=\"Usage\">Usage</h2>\n<p>The quickest way to start is using the requests keywords and urls see below examples:</p>\n<pre>\n  <b>*</b> Settings <b>*</b>\n  Library               RequestsLibrary\n\n  <b>*</b> Test Cases <b>*</b>\n  Quick Get Request\n      ${response}=    GET  <a href=\"https://www.google.com\">https://www.google.com</a>\n\n  Quick Get Request With Parameters Test\n      ${response}=    GET  <a href=\"https://www.google.com/search\">https://www.google.com/search</a>  params=query=ciao  expected_status=200\n\n  Quick Get A JSON Body\n      ${response}=    GET  <a href=\"https://jsonplaceholder.typicode.com/posts/1\">https://jsonplaceholder.typicode.com/posts/1</a>\n      Should Be Equal As Strings    1  ${response.json()}[id]\n</pre>\n<p>In order to share the HTTP Session (with the same url, headers, cookies, etc.) among multiple requests, a new connection needs to be prepared with <code>Create Session</code> and passed to the <span class=\"name\">* On Session</span> keywords. You can then execute any <span class=\"name\">* On Session</span> keywords on the shared session by passing the created session alias name, this will increase performances since the connection and ssl handshake is recycled and not repeated for each requests. Below some more advanced examples:</p>\n<pre>\n  <b>*</b> Settings <b>*</b>\n  Library    Collections\n  Library    RequestsLibrary\n\n  Suite Setup    Create Session  jsonplaceholder  <a href=\"https://jsonplaceholder.typicode.com\">https://jsonplaceholder.typicode.com</a>\n\n  <b>*</b> Test Cases <b>*</b>\n\n  Get Request Test\n      Create Session    google  <a href=\"http://www.google.com\">http://www.google.com</a>\n\n      ${resp_google}=   GET On Session  google  /  expected_status=200\n      ${resp_json}=     GET On Session  jsonplaceholder  /posts/1\n\n      Should Be Equal As Strings          ${resp_google.reason}  OK\n      Dictionary Should Contain Value     ${resp_json.json()}  sunt aut facere repellat provident\n\n  Post Request Test\n      &amp;{data}=    Create dictionary  title=Robotframework requests  body=This is a test!  userId=1\n      ${resp}=    POST On Session    jsonplaceholder  /posts  json=${data}  expected_status=anything\n\n      Status Should Be                 201  ${resp}\n      Dictionary Should Contain Key    ${resp.json()}  id\n</pre>\n<h2 id=\"Response Object\">Response Object</h2>\n<p>All the HTTP requests keywords (GET, POST, PUT, etc.) return an extremely useful Response object. The Response object contains a server's response to an HTTP request.</p>\n<p>You can access the different attributes with the dot notation in this way: <code>${response.json()}</code> or <code>${response.text}</code>. Below the list of the most useful attributes:</p>\n<table border=\"1\">\n<tr>\n<th>Attributes</th>\n<th>Explanation</th>\n</tr>\n<tr>\n<td>content</td>\n<td>Content of the response, in bytes.</td>\n</tr>\n<tr>\n<td>cookies</td>\n<td>A CookieJar of Cookies the server sent back.</td>\n</tr>\n<tr>\n<td>elapsed</td>\n<td>The amount of time elapsed between sending the request and the arrival of the response (as a timedelta). This property specifically measures the time taken between sending the first byte of the request and finishing parsing the headers. It is therefore unaffected by consuming the response content or the value of the stream keyword argument.</td>\n</tr>\n<tr>\n<td>encoding</td>\n<td>Encoding to decode with when accessing <code>response.text.</code></td>\n</tr>\n<tr>\n<td>headers</td>\n<td>Case-insensitive Dictionary of Response Headers. For example, <code>headers['content-encoding']</code> will return the value of a `Content-Encoding' response header.</td>\n</tr>\n<tr>\n<td>history</td>\n<td>A list of Response objects from the history of the Request. Any redirect responses will end up here. The list is sorted from the oldest to the most recent request.</td>\n</tr>\n<tr>\n<td>json</td>\n<td>Returns the json-encoded content of a response, if any. Parameters: <code>**kwargs</code> - Optional arguments that json.loads takes. Raises:        ValueError ? If the response body does not contain valid json.</td>\n</tr>\n<tr>\n<td>ok</td>\n<td>Returns True if status_code is less than 400, False if not.</td>\n</tr>\n<tr>\n<td>reason</td>\n<td>Textual reason of responded HTTP Status, e.g. <code>Not Found</code> or <code>OK</code>.</td>\n</tr>\n<tr>\n<td>status_code</td>\n<td>Integer Code of responded HTTP Status, e.g. 404 or 200.</td>\n</tr>\n<tr>\n<td>text</td>\n<td>Content of the response, in unicode. If <code>response.encoding</code> is <code>None</code>, encoding will be guessed using chardet. The encoding of the response content is determined based solely on HTTP headers, following RFC 2616 to the letter. If you can take advantage of non-HTTP knowledge to make a better guess at the encoding, you should set <code>response.encoding</code> appropriately before accessing this property.</td>\n</tr>\n<tr>\n<td>url</td>\n<td>Final URL location of Response.</td>\n</tr>\n</table>", "version": "0.9", "generated": "2021-04-16 01:17:16", "type": "LIBRARY", "scope": "GLOBAL", "docFormat": "HTML", "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/__init__.py", "lineno": 19, "tags": [], "inits": [], "keywords": [{"name": "Create Client Cert Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "client_certs", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "client_certs=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>client_certs</code> ['client certificate', 'client key'] PEM files containing the client key and certificate</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 190}, {"name": "Create Custom Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> A Custom Authentication object to be passed on to the requests library. <a href=\"http://docs.python-requests.org/en/master/user/advanced/#custom-authentication\">http://docs.python-requests.org/en/master/user/advanced/#custom-authentication</a></p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 275}, {"name": "Create Digest Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> ['DOMAIN', 'username', 'password'] for NTLM Authentication</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 358}, {"name": "Create Ntlm Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "auth", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "auth"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> ['DOMAIN', 'username', 'password'] for NTLM Authentication</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided. Defaults to False.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 435}, {"name": "Create Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "headers", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers={}"}, {"name": "cookies", "types": [], "default": "{}", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies={}"}, {"name": "auth", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "auth=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}, {"name": "proxies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "proxies=None"}, {"name": "verify", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "verify=False"}, {"name": "debug", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "debug=0"}, {"name": "max_retries", "types": [], "default": "3", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "max_retries=3"}, {"name": "backoff_factor", "types": [], "default": "0.1", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "backoff_factor=0.1"}, {"name": "disable_warnings", "types": [], "default": "0", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "disable_warnings=0"}, {"name": "retry_status_list", "types": [], "default": "[]", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_status_list=[]"}, {"name": "retry_method_list", "types": [], "default": "['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "retry_method_list=['GET', 'DELETE', 'PUT', 'OPTIONS', 'TRACE', 'HEAD']"}], "doc": "<p>Create Session: create a HTTP session to a server</p>\n<p><code>alias</code> Robot Framework alias to identify the session</p>\n<p><code>url</code> Base url of the server</p>\n<p><code>headers</code> Dictionary of default headers</p>\n<p><code>cookies</code> Dictionary of cookies</p>\n<p><code>auth</code> List of username &amp; password for HTTP Basic Auth</p>\n<p><code>timeout</code> Connection timeout</p>\n<p><code>proxies</code> Dictionary that contains proxy urls for HTTP and HTTPS communication</p>\n<p><code>verify</code> Whether the SSL cert will be verified. A CA_BUNDLE path can also be provided.</p>\n<p><code>debug</code> Enable http verbosity option more information <a href=\"https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel\">https://docs.python.org/2/library/httplib.html#httplib.HTTPConnection.set_debuglevel</a></p>\n<p><code>max_retries</code> Number of maximum retries each connection should attempt. By default it will retry 3 times in case of connection errors only. A 0 value will disable any kind of retries regardless of other retry settings. In case the number of retries is reached a retry exception is raised.</p>\n<p><code>disable_warnings</code> Disable requests warning useful when you have large number of testcases</p>\n<p><code>backoff_factor</code> Introduces a delay time between retries that is longer after each retry. eg. if backoff_factor is set to 0.1 the sleep between attemps will be: 0.0, 0.2, 0.4 More info here: <a href=\"https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html\">https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html</a></p>\n<p><code>retry_method_list</code> List of uppercased HTTP method verbs where retries are allowed. By default retries are allowed only on HTTP requests methods that are considered to be idempotent (multiple requests with the same parameters end with the same state). eg. set to ['POST', 'GET'] to retry only those kind of requests.</p>\n<p><code>retry_status_list</code> List of integer HTTP status codes that, if returned, a retry is attempted. eg. set to [502, 503] to retry requests if those status are returned. Note that max_retries must be greater than 0.</p>", "shortdoc": "Create Session: create a HTTP session to a server", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 109}, {"name": "DELETE", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a DELETE request.</p>\n<p>The endpoint used to send the request is the <code>url</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a DELETE request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 291}, {"name": "Delete All Sessions", "args": [], "doc": "<p>Removes all the session objects</p>", "shortdoc": "Removes all the session objects", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 539}, {"name": "DELETE On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a DELETE request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a DELETE request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 120}, {"name": "Delete Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#DELETE%20On%20Session\" class=\"name\">DELETE On Session</a> instead.</p>\n<p>Send a DELETE request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the DELETE request to</p>\n<p><code>json</code> a value that will be json encoded and sent as request data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `DELETE On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 261}, {"name": "GET", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a GET request.</p>\n<p>The endpoint used to retrieve the resource is the <code>url</code>, while query string parameters can be passed as string, dictionary (or list of tuples or bytes) through the <code>params</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> here is a list:</p>\n<table border=\"1\">\n<tr>\n<td><code>data</code></td>\n<td>Dictionary, list of tuples, bytes, or file-like object to send in the body of the request.</td>\n</tr>\n<tr>\n<td><code>json</code></td>\n<td>A JSON serializable Python object to send in the body of the request.</td>\n</tr>\n<tr>\n<td><code>headers</code></td>\n<td>Dictionary of HTTP Headers to send with the request.</td>\n</tr>\n<tr>\n<td><code>cookies</code></td>\n<td>Dict or CookieJar object to send with the request.</td>\n</tr>\n<tr>\n<td><code>files</code></td>\n<td>Dictionary of file-like-objects (or <code>{'name': file-tuple}</code>) for multipart encoding upload.</td>\n</tr>\n<tr>\n<td><code>file-tuple</code></td>\n<td>can be a 2-tuple <code>('filename', fileobj)</code>, 3-tuple <code>('filename', fileobj, 'content_type')</code> or a 4-tuple <code>('filename', fileobj, 'content_type', custom_headers)</code>, where <code>'content-type'</code> is a string defining the content type of the given file and <code>custom_headers</code> a dict-like object containing additional headers to add for the file.</td>\n</tr>\n<tr>\n<td><code>auth</code></td>\n<td>Auth tuple to enable Basic/Digest/Custom HTTP Auth.</td>\n</tr>\n<tr>\n<td><code>timeout</code></td>\n<td>How many seconds to wait for the server to send data before giving up, as a float, or a <code>(connect timeout, read timeout)</code> tuple.</td>\n</tr>\n<tr>\n<td><code>allow_redirects</code></td>\n<td>Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to <code>True</code>.</td>\n</tr>\n<tr>\n<td><code>proxies</code></td>\n<td>Dictionary mapping protocol to the URL of the proxy.</td>\n</tr>\n<tr>\n<td><code>verify</code></td>\n<td>Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to <code>True</code>. Warning: if a session has been created with <code>verify=False</code> any other requests will not verify the SSL certificate.</td>\n</tr>\n<tr>\n<td><code>stream</code></td>\n<td>if <code>False</code>, the response content will be immediately downloaded.</td>\n</tr>\n<tr>\n<td><code>cert</code></td>\n<td>if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair.</td>\n</tr>\n</table>\n<p>For more updated and complete information verify the official Requests api documentation: <a href=\"https://requests.readthedocs.io/en/latest/api/\">https://requests.readthedocs.io/en/latest/api/</a></p>", "shortdoc": "Sends a GET request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 147}, {"name": "Get File For Streaming Upload", "args": [{"name": "path", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "path"}], "doc": "<p>Opens and returns a file descriptor of a specified file to be passed as <code>data</code> parameter to other requests keywords.</p>\n<p>This allows streaming upload of large files without reading them into memory.</p>\n<p>File descriptor is binary mode and read only. Requests keywords will automatically close the file, if used outside this library it's up to the caller to close it.</p>", "shortdoc": "Opens and returns a file descriptor of a specified file to be passed as ``data`` parameter to other requests keywords.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 134}, {"name": "GET On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a GET request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the resource is the <code>url</code>, while query string parameters can be passed as string, dictionary (or list of tuples or bytes) through the <code>params</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a GET request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 10}, {"name": "Get Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> instead.</p>\n<p>Send a GET request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the GET request to</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as GET data or binary data that is sent as the raw body content</p>\n<p><code>json</code> a value that will be json encoded and sent as GET data if data is not specified</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `GET On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 36}, {"name": "HEAD", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a HEAD request.</p>\n<p>The endpoint used to retrieve the HTTP headers is the <code>url</code>.</p>\n<p><code>allow_redirects</code> parameter is not provided, it will be set to <span class=\"name\">False</span> (as opposed to the default behavior).</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a HEAD request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 241}, {"name": "HEAD On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a HEAD request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the HTTP headers is the <code>url</code>.</p>\n<p><code>allow_redirects</code> parameter is not provided, it will be set to <span class=\"name\">False</span> (as opposed to the default behavior).</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a HEAD request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 143}, {"name": "Head Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#HEAD%20On%20Session\" class=\"name\">HEAD On Session</a> instead.</p>\n<p>Send a HEAD request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the HEAD request to</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `HEAD On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 308}, {"name": "OPTIONS", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a OPTIONS request.</p>\n<p>The endpoint used to retrieve the resource is the <code>url</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a OPTIONS request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 312}, {"name": "OPTIONS On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a OPTIONS request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to retrieve the resource is the <code>url</code>.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a OPTIONS request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 169}, {"name": "Options Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#OPTIONS%20On%20Session\" class=\"name\">OPTIONS On Session</a> instead.</p>\n<p>Send an OPTIONS request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the OPTIONS request to</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `OPTIONS On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 344}, {"name": "PATCH", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PUT request.</p>\n<p>The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a PUT request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 265}, {"name": "PATCH On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PATCH request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a PATCH request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 64}, {"name": "Patch Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#PATCH%20On%20Session\" class=\"name\">PATCH On Session</a> instead.</p>\n<p>Send a PATCH request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the PATCH request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as PATCH data or binary data that is sent as the raw body content or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as PATCH data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>files</code> a dictionary of file names containing file data to PATCH to the server</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `PATCH On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 147}, {"name": "POST", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a POST request.</p>\n<p>The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a POST request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 188}, {"name": "POST On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a POST request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a POST request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 36}, {"name": "Post Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#POST%20On%20Session\" class=\"name\">POST On Session</a> instead.</p>\n<p>Send a POST request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the POST request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as POST data or binary data that is sent as the raw body content or passed as such for multipart form data if <code>files</code> is also defined or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as POST data if files or data is not specified</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>files</code> a dictionary of file names containing file data to POST to the server</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `POST On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 88}, {"name": "PUT", "args": [{"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PUT request.</p>\n<p>The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a PUT request.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 214}, {"name": "PUT On Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "url", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "url"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "expected_status", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "expected_status=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}, {"name": "kwargs", "types": [], "default": null, "kind": "VAR_NAMED", "required": false, "repr": "**kwargs"}], "doc": "<p>Sends a PUT request on a previously created HTTP Session.</p>\n<p>Session will be identified using the <code>alias</code> name. The endpoint used to send the request is the <code>url</code> parameter, while its body can be passed using <code>data</code> or <code>json</code> parameters.</p>\n<p><code>data</code> can be a dictionary, list of tuples, bytes, or file-like object. If you want to pass a json body pass a dictionary as <code>json</code> parameter.</p>\n<p>By default this keyword fails if a status code with error values is returned in the response, this behavior can be modified using the <code>expected_status</code> and <code>msg</code> parameters, read more about it in <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword documentation. In order to disable this implicit assert mechanism you can pass as <code>expected_status</code> the values <code>any</code> or <code>anything</code>.</p>\n<p>Other optional requests arguments can be passed using <code>**kwargs</code> see the <a href=\"#GET\" class=\"name\">GET</a> keyword for the complete list.</p>", "shortdoc": "Sends a PUT request on a previously created HTTP Session.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsOnSessionKeywords.py", "lineno": 92}, {"name": "Put Request", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "uri", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "uri"}, {"name": "data", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "data=None"}, {"name": "json", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "json=None"}, {"name": "params", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "params=None"}, {"name": "files", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "files=None"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "allow_redirects", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "allow_redirects=None"}, {"name": "timeout", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "timeout=None"}], "doc": "<p><b>DEPRECATED</b> Please use <a href=\"#PUT%20On%20Session\" class=\"name\">PUT On Session</a> instead.</p>\n<p>Send a PUT request on the session object found using the given <span class=\"name\">alias</span></p>\n<p><code>alias</code> that will be used to identify the Session object in the cache</p>\n<p><code>uri</code> to send the PUT request to</p>\n<p><code>data</code> a dictionary of key-value pairs that will be urlencoded and sent as PUT data or binary data that is sent as the raw body content or file descriptor retrieved by Get File For Streaming Upload</p>\n<p><code>json</code> a value that will be json encoded and sent as PUT data if data is not specified</p>\n<p><code>headers</code> a dictionary of headers to use with the request</p>\n<p><code>allow_redirects</code> Boolean. Set to True if POST/PUT/DELETE redirect following is allowed.</p>\n<p><code>params</code> url parameters to append to the uri</p>\n<p><code>timeout</code> connection timeout</p>", "shortdoc": "*DEPRECATED* Please use `PUT On Session` instead.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 205}, {"name": "Request Should Be Successful", "args": [{"name": "response", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "response=None"}], "doc": "<p>Fails if response status code is a client or server error (4xx, 5xx).</p>\n<p><code>response</code> is the output of other requests keywords like <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a>. If omitted the last response will be used.</p>\n<p>In case of failure an HTTPError will be automatically raised.</p>\n<p>For a more versatile assert keyword see <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a>.</p>", "shortdoc": "Fails if response status code is a client or server error (4xx, 5xx).", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 117}, {"name": "Session Exists", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}], "doc": "<p>Return True if the session has been already created</p>\n<p><code>alias</code> that has been used to identify the Session object in the cache</p>", "shortdoc": "Return True if the session has been already created", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 527}, {"name": "Status Should Be", "args": [{"name": "expected_status", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "expected_status"}, {"name": "response", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "response=None"}, {"name": "msg", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "msg=None"}], "doc": "<p>Fails if response status code is different than the expected.</p>\n<p><code>expected_status</code> could be the code number as an integer or as string. But it could also be a named status code like 'ok', 'created', 'accepted' or 'bad request', 'not found' etc.</p>\n<p><code>response</code> is the output of other requests keywords like <a href=\"#GET\" class=\"name\">GET</a> or <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a>. If omitted the last response will be used.</p>\n<p>In case of failure an HTTPError will be automatically raised. A custom failure message <code>msg</code> can be added like in built-in keywords.</p>\n<p>New requests keywords like <a href=\"#GET\" class=\"name\">GET</a> or <a href=\"#GET%20On%20Session\" class=\"name\">GET On Session</a> (starting from 0.8 version) already have an implicit assert mechanism that, by default, verifies the response status code. <a href=\"#Status%20Should%20Be\" class=\"name\">Status Should Be</a> keyword can be useful when you disable implicit assert using <code>expected_status=anything</code>.</p>\n<p>For example when you have a nested keyword that is used for both OK and ERROR responses:</p>\n<pre>\n  <b>*</b> Test Cases <b>*</b>\n\n  Test Get Request And Make Sure Is A 404 Response\n      ${resp}=            GET Custom Keyword That Returns OK or ERROR Response  case=notfound\n      Status Should Be    404    ${resp}\n      Should Be Equal As Strings  NOT FOUND  ${resp.reason}\n\n  Test Get Request And Make Sure Is OK\n      ${resp}=            GET Custom Keyword That Returns OK or ERROR Response  case=pass\n      Status Should Be    200    ${resp}\n      Should Be Equal As Strings  OK  ${resp.reason}\n\n  <b>*</b> Keywords <b>*</b>\n\n  GET Custom Keyword That Returns OK or ERROR Response\n  [Arguments]  $case\n       [...]\n      IF $case == notfound\n          $resp=     GET [...] expected_status=Anything\n          [Return]   $resp\n      ELSE\n       [...]\n</pre>", "shortdoc": "Fails if response status code is different than the expected.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/RequestsKeywords.py", "lineno": 69}, {"name": "To Json", "args": [{"name": "content", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "content"}, {"name": "pretty_print", "types": [], "default": "False", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "pretty_print=False"}], "doc": "<p><b>DEPRECATED</b> Please use ${resp.json()} instead. Have a look at the improved HTML output as pretty printing replacement.</p>\n<p>Convert a string to a JSON object</p>\n<p><code>content</code> String content to convert into JSON</p>\n<p><code>pretty_print</code> If defined, will output JSON is pretty print format</p>", "shortdoc": "*DEPRECATED* Please use ${resp.json()} instead. Have a look at the improved HTML output as pretty printing replacement.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/DeprecatedKeywords.py", "lineno": 15}, {"name": "Update Session", "args": [{"name": "alias", "types": [], "default": null, "kind": "POSITIONAL_OR_NAMED", "required": true, "repr": "alias"}, {"name": "headers", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "headers=None"}, {"name": "cookies", "types": [], "default": "None", "kind": "POSITIONAL_OR_NAMED", "required": false, "repr": "cookies=None"}], "doc": "<p>Updates HTTP Session Headers and Cookies.</p>\n<p>Session will be identified using the <code>alias</code> name. Dictionary of <code>headers</code> and <code>cookies</code> to be updated and merged into session data.</p>", "shortdoc": "Updates HTTP Session Headers and Cookies.", "tags": [], "source": "/home/luca/src/robotframework/robotframework-requests/src/RequestsLibrary/SessionKeywords.py", "lineno": 547}], "dataTypes": {"enums": [], "typedDicts": []}}
 </script>
 <title></title>
 </head>
diff --git a/doc/generate_doc.sh b/doc/generate_doc.sh
index 18b7f746..dc343097 100755
--- a/doc/generate_doc.sh
+++ b/doc/generate_doc.sh
@@ -1,6 +1,7 @@
 #!/usr/bin/env bash
 # I know it's bad but there is no other way to keep docstring working with this decorator
 SCRIPT_PATH=`dirname "$0"`
+sed -i.bak '/@warn_if_equal_symbol_in_url/d' ${SCRIPT_PATH}/../src/RequestsLibrary/RequestsKeywords.py
 sed -i.bak '/@warn_if_equal_symbol_in_url/d' ${SCRIPT_PATH}/../src/RequestsLibrary/RequestsOnSessionKeywords.py
 python -m robot.libdoc ${SCRIPT_PATH}/../src/RequestsLibrary ${SCRIPT_PATH}/RequestsLibrary.html
 mv ${SCRIPT_PATH}/../src/RequestsLibrary/RequestsOnSessionKeywords.py.bak ${SCRIPT_PATH}/../src/RequestsLibrary/RequestsOnSessionKeywords.py
diff --git a/src/RequestsLibrary/RequestsKeywords.py b/src/RequestsLibrary/RequestsKeywords.py
index a98b7c26..4d932dfc 100644
--- a/src/RequestsLibrary/RequestsKeywords.py
+++ b/src/RequestsLibrary/RequestsKeywords.py
@@ -1,9 +1,11 @@
-import json
-
+import requests
 import robot
 from robot.api.deco import keyword
 from robot.libraries.BuiltIn import BuiltIn
-from robot.utils.asserts import assert_equal
+
+from RequestsLibrary.compat import urljoin
+from RequestsLibrary import utils, log
+from RequestsLibrary.utils import is_file_descriptor
 
 
 class RequestsKeywords(object):
@@ -13,9 +15,58 @@ def __init__(self):
         self._cache = robot.utils.ConnectionCache('No sessions created')
         self.builtin = BuiltIn()
         self.debug = 0
+        # The following variables are related to session but used in _common_request :(
+        self.timeout = None
+        self.cookies = None
+        self.last_response = None
+
+    def _common_request(
+            self,
+            method,
+            session,
+            uri,
+            **kwargs):
+
+        if session:
+            method_function = getattr(session, method)
+        else:
+            method_function = getattr(requests, method)
+
+        self._capture_output()
+
+        resp = method_function(
+            self._get_url(session, uri),
+            timeout=self._get_timeout(kwargs.pop('timeout', None)),
+            cookies=kwargs.pop('cookies', self.cookies),
+            **kwargs)
+
+        log.log_request(resp)
+        self._print_debug()
+
+        log.log_response(resp)
+
+        self.last_response = resp
+
+        data = kwargs.get('data', None)
+        if is_file_descriptor(data):
+            data.close()
+
+        return resp
+
+    @staticmethod
+    def _get_url(session, uri):
+        """
+        Helper method to get the full url
+        """
+        if session:
+            base = session.url
+        else:
+            base = ''
+        url = urljoin(base, uri)
+        return url
 
     @keyword("Status Should Be")
-    def status_should_be(self, expected_status, response, msg=None):
+    def status_should_be(self, expected_status, response=None, msg=None):
         """
         Fails if response status code is different than the expected.
 
@@ -23,32 +74,59 @@ def status_should_be(self, expected_status, response, msg=None):
         But it could also be a named status code like 'ok', 'created', 'accepted' or
         'bad request', 'not found' etc.
 
-        ``response`` is the output of other requests keywords like `GET On Session`.
+        ``response`` is the output of other requests keywords like `GET` or `GET On Session`.
+        If omitted the last response will be used.
 
         In case of failure an HTTPError will be automatically raised.
         A custom failure message ``msg`` can be added like in built-in keywords.
 
-        `* On Session` keywords (like `GET On Session`) already have an implicit assert mechanism, that by default,
-        verifies the response status code.
-        `Status Should Be` keyword can be useful to do an explicit assert in case of `* On Session` keyword with
-        ``expected_status=anything`` to disable implicit assert.
-        """
-        # TODO add an example in documentation of GET On Session expected=any than assert
+        New requests keywords like `GET` or `GET On Session` (starting from 0.8 version) already have an implicit assert
+        mechanism that, by default, verifies the response status code.
+        `Status Should Be` keyword can be useful when you disable implicit assert using ``expected_status=anything``.
+
+        For example when you have a nested keyword that is used for both OK and ERROR responses:
 
+        |   *** Test Cases ***
+        |
+        |   Test Get Request And Make Sure Is A 404 Response
+        |       ${resp}=            GET Custom Keyword That Returns OK or ERROR Response  case=notfound
+        |       Status Should Be    404    ${resp}
+        |       Should Be Equal As Strings  NOT FOUND  ${resp.reason}
+        |
+        |   Test Get Request And Make Sure Is OK
+        |       ${resp}=            GET Custom Keyword That Returns OK or ERROR Response  case=pass
+        |       Status Should Be    200    ${resp}
+        |       Should Be Equal As Strings  OK  ${resp.reason}
+        |
+        |   *** Keywords ***
+        |
+        |   GET Custom Keyword That Returns OK or ERROR Response
+        |   [Arguments]  $case
+        |        [...]
+        |       IF $case == notfound
+        |           $resp=     GET [...] expected_status=Anything
+        |           [Return]   $resp
+        |       ELSE
+        |        [...]
+        """
+        if not response:
+            response = self.last_response
         self._check_status(expected_status, response, msg)
 
     @keyword("Request Should Be Successful")
-    def request_should_be_successful(self, response):
+    def request_should_be_successful(self, response=None):
         """
         Fails if response status code is a client or server error (4xx, 5xx).
 
         ``response`` is the output of other requests keywords like `GET On Session`.
+        If omitted the last response will be used.
 
         In case of failure an HTTPError will be automatically raised.
-        A custom failure message ``msg`` can be added like in built-in keywords.
 
         For a more versatile assert keyword see `Status Should Be`.
         """
+        if not response:
+            response = self.last_response
         self._check_status(None, response, msg=None)
 
     @staticmethod
@@ -64,3 +142,189 @@ def get_file_for_streaming_upload(path):
         if used outside this library it's up to the caller to close it.
         """
         return open(path, 'rb')
+
+    @keyword('GET')
+    def session_less_get(self, url, params=None,
+                         expected_status=None, msg=None, **kwargs):
+        """
+        Sends a GET request.
+
+        The endpoint used to retrieve the resource is the ``url``, while query
+        string parameters can be passed as string, dictionary (or list of tuples or bytes)
+        through the ``params``.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs`` here is a list:
+
+        | ``data``     | Dictionary, list of tuples, bytes, or file-like object to send in the body of the request. |
+        | ``json``     | A JSON serializable Python object to send in the body of the request. |
+        | ``headers``  | Dictionary of HTTP Headers to send with the request. |
+        | ``cookies``  | Dict or CookieJar object to send with the request. |
+        | ``files``    | Dictionary of file-like-objects (or ``{'name': file-tuple}``) for multipart encoding upload. |
+        | ``file-tuple`` | can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers to add for the file. |
+        | ``auth`` | Auth tuple to enable Basic/Digest/Custom HTTP Auth. |
+        | ``timeout`` | How many seconds to wait for the server to send data before giving up, as a float, or a ``(connect timeout, read timeout)`` tuple. |
+        | ``allow_redirects`` | Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. |
+        | ``proxies`` | Dictionary mapping protocol to the URL of the proxy. |
+        | ``verify``  | Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. Warning: if a session has been created with ``verify=False`` any other requests will not verify the SSL certificate. |
+        | ``stream`` | if ``False``, the response content will be immediately downloaded. |
+        | ``cert`` | if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. |
+
+        For more updated and complete information verify the official Requests api documentation:
+        https://requests.readthedocs.io/en/latest/api/
+
+        """
+        response = self._common_request('get', None, url,
+                                        params=params, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('POST')
+    def session_less_post(self, url, data=None, json=None,
+                          expected_status=None, msg=None, **kwargs):
+        """
+        Sends a POST request.
+
+        The endpoint used to send the request is the ``url`` parameter, while its body
+        can be passed using ``data`` or ``json`` parameters.
+
+        ``data`` can be a dictionary, list of tuples, bytes, or file-like object.
+        If you want to pass a json body pass a dictionary as ``json`` parameter.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+        response = self._common_request('post', None, url,
+                                        data=data, json=json, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('PUT')
+    def session_less_put(self, url, data=None, json=None,
+                         expected_status=None, msg=None, **kwargs):
+        """
+        Sends a PUT request.
+
+        The endpoint used to send the request is the ``url`` parameter, while its body
+        can be passed using ``data`` or ``json`` parameters.
+
+        ``data`` can be a dictionary, list of tuples, bytes, or file-like object.
+        If you want to pass a json body pass a dictionary as ``json`` parameter.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+
+        response = self._common_request("put", None, url,
+                                        data=data, json=json, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('HEAD')
+    def session_less_head(self, url,
+                          expected_status=None, msg=None, **kwargs):
+        """
+        Sends a HEAD request.
+
+        The endpoint used to retrieve the HTTP headers is the ``url``.
+
+        ``allow_redirects`` parameter is not provided, it will be set to `False` (as
+        opposed to the default behavior).
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+        response = self._common_request('head', None, url, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('PATCH')
+    def session_less_patch(self, url, data=None, json=None,
+                           expected_status=None, msg=None, **kwargs):
+        """
+        Sends a PUT request.
+
+        The endpoint used to send the request is the ``url`` parameter, while its body
+        can be passed using ``data`` or ``json`` parameters.
+
+        ``data`` can be a dictionary, list of tuples, bytes, or file-like object.
+        If you want to pass a json body pass a dictionary as ``json`` parameter.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+        response = self._common_request('patch', None, url,
+                                        data=data, json=json, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('DELETE')
+    def session_less_delete(self, url,
+                            expected_status=None, msg=None, **kwargs):
+        """
+        Sends a DELETE request.
+
+        The endpoint used to send the request is the ``url`` parameter.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+        response = self._common_request("delete", None, url, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
+
+    @keyword('OPTIONS')
+    def session_less_options(self, url,
+                             expected_status=None, msg=None, **kwargs):
+        """
+        Sends a OPTIONS request.
+
+        The endpoint used to retrieve the resource is the ``url``.
+
+        By default this keyword fails if a status code with error values is returned in the response,
+        this behavior can be modified using the ``expected_status`` and ``msg`` parameters,
+        read more about it in `Status Should Be` keyword documentation.
+        In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
+        ``anything``.
+
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
+        """
+        response = self._common_request("options", None, url, **kwargs)
+        self._check_status(expected_status, response, msg)
+        return response
diff --git a/src/RequestsLibrary/RequestsOnSessionKeywords.py b/src/RequestsLibrary/RequestsOnSessionKeywords.py
index 8fbeff08..27afa83a 100644
--- a/src/RequestsLibrary/RequestsOnSessionKeywords.py
+++ b/src/RequestsLibrary/RequestsOnSessionKeywords.py
@@ -24,25 +24,8 @@ def get_on_session(self, alias, url, params=None,
         In order to disable this implicit assert mechanism you can pass as ``expected_status`` the values ``any`` or
         ``anything``.
 
-        Other optional requests arguments can be passed using ``**kwargs`` here is a list:
-
-        | ``data``     | Dictionary, list of tuples, bytes, or file-like object to send in the body of the request. |
-        | ``json``     | A JSON serializable Python object to send in the body of the request. |
-        | ``headers``  | Dictionary of HTTP Headers to send with the request. |
-        | ``cookies``  | Dict or CookieJar object to send with the request. |
-        | ``files``    | Dictionary of file-like-objects (or ``{'name': file-tuple}``) for multipart encoding upload. |
-        | ``file-tuple`` | can be a 2-tuple ``('filename', fileobj)``, 3-tuple ``('filename', fileobj, 'content_type')`` or a 4-tuple ``('filename', fileobj, 'content_type', custom_headers)``, where ``'content-type'`` is a string defining the content type of the given file and ``custom_headers`` a dict-like object containing additional headers to add for the file. |
-        | ``auth`` | Auth tuple to enable Basic/Digest/Custom HTTP Auth. |
-        | ``timeout`` | How many seconds to wait for the server to send data before giving up, as a float, or a ``(connect timeout, read timeout)`` tuple. |
-        | ``allow_redirects`` | Boolean. Enable/disable GET/OPTIONS/POST/PUT/PATCH/DELETE/HEAD redirection. Defaults to ``True``. |
-        | ``proxies`` | Dictionary mapping protocol to the URL of the proxy. |
-        | ``verify``  | Either a boolean, in which case it controls whether we verify the server's TLS certificate, or a string, in which case it must be a path to a CA bundle to use. Defaults to ``True``. Warning: if a session has been created with ``verify=False`` any other requests will not verify the SSL certificate. |
-        | ``stream`` | if ``False``, the response content will be immediately downloaded. |
-        | ``cert`` | if String, path to ssl client cert file (.pem). If Tuple, ('cert', 'key') pair. |
-
-        For more updated and complete information verify the official Requests api documentation:
-        https://requests.readthedocs.io/en/latest/api/
-
+        Other optional requests arguments can be passed using ``**kwargs``
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("get", session, url,
@@ -71,7 +54,7 @@ def post_on_session(self, alias, url, data=None, json=None,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("post", session, url,
@@ -100,7 +83,7 @@ def patch_on_session(self, alias, url, data=None, json=None,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("patch", session, url,
@@ -129,7 +112,7 @@ def put_on_session(self, alias, url, data=None, json=None,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("put", session, url,
@@ -154,7 +137,7 @@ def delete_on_session(self, alias, url,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("delete", session, url, **kwargs)
@@ -181,7 +164,7 @@ def head_on_session(self, alias, url,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("head", session, url, **kwargs)
@@ -205,7 +188,7 @@ def options_on_session(self, alias, url,
         ``anything``.
 
         Other optional requests arguments can be passed using ``**kwargs``
-        see the `GET On Session` keyword for the complete list.
+        see the `GET` keyword for the complete list.
         """
         session = self._cache.switch(alias)
         response = self._common_request("options", session, url, **kwargs)
diff --git a/src/RequestsLibrary/SessionKeywords.py b/src/RequestsLibrary/SessionKeywords.py
index 34540aa7..8926542c 100644
--- a/src/RequestsLibrary/SessionKeywords.py
+++ b/src/RequestsLibrary/SessionKeywords.py
@@ -10,11 +10,11 @@
 from robot.api.deco import keyword
 from robot.utils.asserts import assert_equal
 
-from RequestsLibrary import utils, log
+from RequestsLibrary import utils
 from RequestsLibrary.compat import httplib, PY3, RetryAdapter
 from .RequestsKeywords import RequestsKeywords
 from RequestsLibrary.exceptions import InvalidResponse, InvalidExpectedStatus
-from RequestsLibrary.utils import is_file_descriptor, is_string_type
+from RequestsLibrary.utils import is_string_type
 
 try:
     from requests_ntlm import HttpNtlmAuth
@@ -538,51 +538,22 @@ def session_exists(self, alias):
     @keyword("Delete All Sessions")
     def delete_all_sessions(self):
         """ Removes all the session objects """
-        logger.info('Delete All Sessions')
+        logger.info('Deleting All Sessions')
 
         self._cache.empty_cache()
 
     # TODO this is not covered by any tests
     @keyword("Update Session")
     def update_session(self, alias, headers=None, cookies=None):
-        """Update Session Headers: update a HTTP Session Headers
+        """Updates HTTP Session Headers and Cookies.
 
-        ``alias`` Robot Framework alias to identify the session
-
-        ``headers`` Dictionary of headers merge into session
+        Session will be identified using the ``alias`` name.
+        Dictionary of ``headers`` and ``cookies`` to be updated and merged into session data.
         """
         session = self._cache.switch(alias)
         session.headers = merge_setting(headers, session.headers)
         session.cookies = merge_cookies(session.cookies, cookies)
 
-    def _common_request(
-            self,
-            method,
-            session,
-            uri,
-            **kwargs):
-
-        method_function = getattr(session, method)
-        self._capture_output()
-
-        resp = method_function(
-            self._get_url(session, uri),
-            params=utils.utf8_urlencode(kwargs.pop('params', None)),
-            timeout=self._get_timeout(kwargs.pop('timeout', None)),
-            cookies=kwargs.pop('cookies', self.cookies),
-            **kwargs)
-
-        log.log_request(resp)
-        self._print_debug()
-        session.last_resp = resp
-        log.log_response(resp)
-
-        data = kwargs.get('data', None)
-        if is_file_descriptor(data):
-            data.close()
-
-        return resp
-
     @staticmethod
     def _check_status(expected_status, resp, msg=None):
         """
@@ -605,17 +576,6 @@ def _check_status(expected_status, resp, msg=None):
             msg = "{}Url: {} Expected status".format(msg, resp.url)
             assert_equal(resp.status_code, expected_status, msg)
 
-    @staticmethod
-    def _get_url(session, uri):
-        """
-        Helper method to get the full url
-        """
-        url = session.url
-        if uri:
-            slash = '' if uri.startswith('/') else '/'
-            url = "%s%s%s" % (session.url, slash, uri)
-        return url
-
     # FIXME might be broken we need a test for this
     def _get_timeout(self, timeout):
         return float(timeout) if timeout is not None else self.timeout
diff --git a/src/RequestsLibrary/__init__.py b/src/RequestsLibrary/__init__.py
index 4a11a717..5e7e37a4 100644
--- a/src/RequestsLibrary/__init__.py
+++ b/src/RequestsLibrary/__init__.py
@@ -11,7 +11,7 @@
     |_ SessionKeywords (session creation and data)
         |_ DeprecatedKeywords (old keywords that need sessions)
         |_ RequestsOnSessionKeywords (new keywords that use sessions)
-        
+
 RequestsLibrary (extends RequestsOnSessionKeywords, DeprecatedKeywords)
 """
 
@@ -26,32 +26,52 @@ class RequestsLibrary(RequestsOnSessionKeywords, DeprecatedKeywords):
 
         = Usage =
 
-        Before making an HTTP request a new connection needs to be prepared this can be done with `Create Session`
-        keyword. Then you can execute any `* On Session` keywords below some examples:
+        The quickest way to start is using the requests keywords and urls see below examples:
 
         |   *** Settings ***
-        |   Library               Collections
         |   Library               RequestsLibrary
         |
-        |   Suite Setup           Create Session    jsonplaceholder    https://jsonplaceholder.typicode.com
+        |   *** Test Cases ***
+        |   Quick Get Request
+        |       ${response}=    GET  https://www.google.com
+        |
+        |   Quick Get Request With Parameters Test
+        |       ${response}=    GET  https://www.google.com/search  params=query=ciao  expected_status=200
+        |
+        |   Quick Get A JSON Body
+        |       ${response}=    GET  https://jsonplaceholder.typicode.com/posts/1
+        |       Should Be Equal As Strings    1  ${response.json()}[id]
+
+        In order to share the HTTP Session (with the same url, headers, cookies, etc.) among multiple requests,
+        a new connection needs to be prepared with ``Create Session`` and passed to the `* On Session` keywords.
+        You can then execute any `* On Session` keywords on the shared session by passing the created session alias
+        name, this will increase performances since the connection and ssl handshake is recycled and not repeated for
+        each requests.
+        Below some more advanced examples:
+
+        |   *** Settings ***
+        |   Library    Collections
+        |   Library    RequestsLibrary
+        |
+        |   Suite Setup    Create Session  jsonplaceholder  https://jsonplaceholder.typicode.com
         |
         |   *** Test Cases ***
         |
         |   Get Request Test
-        |       Create Session    google             http://www.google.com
+        |       Create Session    google  http://www.google.com
         |
-        |       ${resp_google}=   GET On Session     google             /           expected_status=200
-        |       ${resp_json}=     GET On Session     jsonplaceholder    /posts/1
+        |       ${resp_google}=   GET On Session  google  /  expected_status=200
+        |       ${resp_json}=     GET On Session  jsonplaceholder  /posts/1
         |
-        |       Should Be Equal As Strings           ${resp_google.reason}    OK
-        |       Dictionary Should Contain Value      ${resp_json.json()}    sunt aut facere repellat provident occaecati excepturi optio reprehenderit
+        |       Should Be Equal As Strings          ${resp_google.reason}  OK
+        |       Dictionary Should Contain Value     ${resp_json.json()}  sunt aut facere repellat provident
         |
         |   Post Request Test
-        |       &{data}=          Create dictionary  title=Robotframework requests  body=This is a test!  userId=1
-        |       ${resp}=          POST On Session    jsonplaceholder     /posts    json=${data}
+        |       &{data}=    Create dictionary  title=Robotframework requests  body=This is a test!  userId=1
+        |       ${resp}=    POST On Session    jsonplaceholder  /posts  json=${data}  expected_status=anything
         |
-        |       Status Should Be                     201    ${resp}
-        |       Dictionary Should Contain Key        ${resp.json()}     id
+        |       Status Should Be                 201  ${resp}
+        |       Dictionary Should Contain Key    ${resp.json()}  id
 
         = Response Object =
 
diff --git a/src/RequestsLibrary/compat.py b/src/RequestsLibrary/compat.py
index 0ad443c0..cc641beb 100644
--- a/src/RequestsLibrary/compat.py
+++ b/src/RequestsLibrary/compat.py
@@ -7,9 +7,11 @@
 if PY3:
     import http.client as httplib  # noqa
     from urllib.parse import urlencode  # noqa
+    from urllib.parse import urljoin  # noqa
 else:
     import httplib  # noqa
     from urllib import urlencode  # noqa
+    from urlparse import urljoin  # noqa
 
 
 class RetryAdapter(Retry):
diff --git a/src/RequestsLibrary/version.py b/src/RequestsLibrary/version.py
index 05056835..e90ccf67 100644
--- a/src/RequestsLibrary/version.py
+++ b/src/RequestsLibrary/version.py
@@ -1,1 +1,1 @@
-VERSION = '0.8.2'
+VERSION = '0.9'


Test patch:
diff --git a/atests/issues/320.robot b/atests/issues/320.robot
new file mode 100644
index 00000000..14a96f9b
--- /dev/null
+++ b/atests/issues/320.robot
@@ -0,0 +1,25 @@
+*** Settings ***
+Library   Collections
+Library   RequestsLibrary
+Resource  ../res_setup.robot
+
+Suite Setup     Setup Flask Http Server
+Suite Teardown  Teardown Flask Http Server And Sessions
+
+*** Test Cases ***
+Test GET with list of values as params
+    ${values_list}=     Create List    1    2    3    4    5
+    ${parameters}=      Create Dictionary  key  ${values_list}
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  url=/anything  params=${parameters}
+    Should Contain      ${resp.json()}[url]  ?key=1&key=2&key=3&key=4&key=5
+    Should Be Equal     ${resp.json()}[args]  ${parameters}
+
+Test GET with spaces in dictionary as params
+    ${parameters}=      Create Dictionary  key  v a l u e
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  url=/anything  params=${parameters}
+    Should Be Equal     ${resp.json()}[args]  ${parameters}
+
+Test GET with spaces in string as params
+    ${parameters}=      Create Dictionary
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  url=/anything  params=key=v a l u e
+    Should Contain      ${resp.json()}[url]  v%20a%20l%20u%20e
diff --git a/atests/test_request_cookies.robot b/atests/test_cookies.robot
similarity index 100%
rename from atests/test_request_cookies.robot
rename to atests/test_cookies.robot
diff --git a/atests/test_readme.robot b/atests/test_readme.robot
new file mode 100644
index 00000000..71038f25
--- /dev/null
+++ b/atests/test_readme.robot
@@ -0,0 +1,36 @@
+*** Settings ***
+Library  Collections
+Library  RequestsLibrary
+
+*** Test Cases ***
+
+Quick GET Request Test
+    [Tags]  skip
+    ${response}=    GET    https://www.google.com/search    params=query=ciao    expected_status=200
+
+Quick GET A JSON Body
+    [Tags]  skip
+    ${response}=    GET    https://jsonplaceholder.typicode.com/posts/1
+    Should Be Equal As Strings   1  ${response.json()}[id]
+
+
+Get Request Test
+    [Tags]  skip
+    Create Session    jsonplaceholder    https://jsonplaceholder.typicode.com
+    Create Session    google             http://www.google.com
+
+    ${resp_google}=   GET On Session     google             /           expected_status=200
+    ${resp_json}=     GET On Session     jsonplaceholder    /posts/1
+
+    Should Be Equal As Strings           ${resp_google.reason}    OK
+    Dictionary Should Contain Value      ${resp_json.json()}    sunt aut facere repellat provident occaecati excepturi optio reprehenderit
+
+Post Request Test
+    [Tags]  skip
+    Create Session    jsonplaceholder    https://jsonplaceholder.typicode.com
+
+    &{data}=          Create dictionary  title=Robotframework requests  body=This is a test!  userId=1
+    ${resp}=          POST On Session    jsonplaceholder     /posts    json=${data}    expected_status=anything
+
+    Status Should Be                     201    ${resp}
+    Dictionary Should Contain Key        ${resp.json()}     id
diff --git a/atests/test_requests.robot b/atests/test_requests.robot
new file mode 100644
index 00000000..f81aab4b
--- /dev/null
+++ b/atests/test_requests.robot
@@ -0,0 +1,277 @@
+*** Settings ***
+Library  Collections
+Library  String
+Library  RequestsLibrary
+Resource  res_setup.robot
+
+Suite Setup     Setup Flask Http Server
+Suite Teardown  Teardown Flask Http Server And Sessions
+
+*** Test Cases ***
+Get Request
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Get Request Should Have Get Method
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings    ${resp.json()}[method]  GET
+
+Get Request With Url Params As Dictionary
+    [Tags]  get
+    ${params}=          Create Dictionary   param1=1  param2=2
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything  ${params}
+    Status Should Be    OK  ${resp}
+    Dictionaries Should Be Equal  ${params}  ${resp.json()}[args]
+
+Get Request With Url Params As Kwargs String
+    [Tags]  get
+    ${params}=          Create Dictionary   this_is_a_string=1  p2=2
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     params=this_is_a_string=1&p2=2
+    Status Should Be    OK  ${resp}
+    Dictionaries Should Be Equal  ${params}  ${resp.json()}[args]
+
+Get Request With Url Params As Escaped String
+    [Tags]  get
+    ${params}=          Create Dictionary   this_is_a_string=1  p2=2
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     this_is_a_string\=1&p2\=2
+    Status Should Be    OK  ${resp}
+    Dictionaries Should Be Equal  ${params}  ${resp.json()}[args]
+
+Get Request With Url Duplicated Keys In Params
+    [Tags]  get
+    ${array}=           Create List   1  2
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     params=key=1&key=2
+    Status Should Be    OK  ${resp}
+    Lists Should Be Equal  ${array}  ${resp.json()}[args][key]
+
+Get Request With Url Duplicated Keys In Params And PHP Style Array
+    [Tags]  get
+    ${array}=           Create List   1  2
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     params=key[]=1&key[]=2
+    Status Should Be    OK  ${resp}
+    Lists Should Be Equal  ${array}  ${resp.json()}[args][key[]]
+
+Get Request With Url Params As PHP Style Array
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     params=key[]=1,2
+    Status Should Be    OK  ${resp}
+    Should Be Equal As Strings  1,2  ${resp.json()}[args][key[]]
+
+Get Request With Url Params As Array
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/anything
+    ...                     params=key=[1,2]
+    Status Should Be    OK  ${resp}
+    Should Be Equal As Strings  [1,2]  ${resp.json()}[args][key]
+
+Get Request With Unordered Parameters
+    [Tags]  get
+    ${params}=          Create Dictionary   param1=1  param2=2
+    ${resp}=            GET  params=${params}
+    ...                 url=${HTTP_LOCAL_SERVER}/anything  data=data  expected_status=200
+    Status Should Be    OK  ${resp}
+    Dictionaries Should Be Equal  ${params}  ${resp.json()}[args]
+    Should Be Equal As Strings  data  ${resp.json()}[data]
+
+Get Request And Fail By Default On Http Error
+    [Tags]  get
+    Run Keyword And Expect Error  HTTPError: 400*
+    ...                           GET  ${HTTP_LOCAL_SERVER}/status/400
+
+Get Request And Fail By Expecting A 200 Status
+    [Tags]  get
+    Run Keyword And Expect Error  Url: http://localhost:5000/status/404?param Expected status: 404 != 200
+    ...                           GET  ${HTTP_LOCAL_SERVER}/status/404  param  200
+
+Get Request And Fail By Expecting A 200 Status With A Message
+    [Tags]  get
+    Run Keyword And Expect Error  Custom msg Url: http://localhost:5000/status/404?param Expected status: 404 != 200
+    ...                           GET  ${HTTP_LOCAL_SERVER}/status/404  param  200  Custom msg
+
+Get Request Expect An Error And Evaluate Response
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/status/401  expected_status=401
+    Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
+
+Get Request Expect Any Status And Continue On Error
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/status/404  expected_status=ANY
+    Should Be Equal As Strings  NOT FOUND  ${resp.reason}
+
+Get Request Expect Anything Status And Continue On Error
+    [Tags]  get
+    ${resp}=            GET  ${HTTP_LOCAL_SERVER}/status/404  expected_status=Anything
+    Should Be Equal As Strings  NOT FOUND  ${resp.reason}
+
+Post Request
+    [Tags]  post
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Post Request Should Have Post Method
+    [Tags]  Post
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings    ${resp.json()}[method]  POST
+
+Post Request With Data
+    [Tags]  post
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/anything  string
+    Status Should Be    OK  ${resp}
+    Should Be Equal As Strings  ${resp.json()}[data]  string
+
+Post Request With Json
+    [Tags]  post
+    ${body}=            Create Dictionary  a=1  b=2
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/anything  json=${body}
+    Status Should Be    OK  ${resp}
+    ${data}=            Evaluate  ${resp.json()}[data]
+    Dictionaries Should Be Equal  ${data}  ${body}
+
+Post Request Expect An Error And Evaluate Response
+    [Tags]  post
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/status/401  expected_status=401
+    Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
+
+Post Request Expect Anything Status And Continue On Error
+    [Tags]  post
+    ${resp}=            POST  ${HTTP_LOCAL_SERVER}/status/400  expected_status=anything
+    Should Be Equal As Strings  BAD REQUEST  ${resp.reason}
+
+Put Request
+    [Tags]  put
+    ${resp}=            PUT  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Put Request Should Have Put Method
+    [Tags]  put
+    ${resp}=            PUT  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings    ${resp.json()}[method]  PUT
+
+Put Request With Data
+    [Tags]  put
+    ${resp}=            PUT  ${HTTP_LOCAL_SERVER}/anything  string
+    Status Should Be    OK  ${resp}
+    Should Be Equal As Strings  ${resp.json()}[data]  string
+
+Put Request With Json
+    [Tags]  put
+    ${body}=            Create Dictionary  a=1  b=2
+    ${resp}=            PUT  ${HTTP_LOCAL_SERVER}/anything  json=${body}
+    Status Should Be    OK  ${resp}
+    ${data}=            Evaluate  ${resp.json()}[data]
+    Dictionaries Should Be Equal  ${data}  ${body}
+
+Put Request Expect An Error And Evaluate Response
+    [Tags]  put
+    ${resp}=            PUT  ${HTTP_LOCAL_SERVER}/status/401  expected_status=401
+    Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
+
+Head Request
+    [Tags]  head
+    ${resp}=            HEAD  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Head Request Should Not Have A Body
+    [Tags]  head
+    ${resp}=            HEAD  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings     ${resp.content}   ${Empty}
+
+Head Request With Kwargs Params
+    [Tags]  head
+    ${params}=          Create Dictionary   param1=1  param2=2
+    ${resp}=            HEAD  ${HTTP_LOCAL_SERVER}/anything  params=${params}
+    Status Should Be    OK  ${resp}
+
+Head Request With Header
+    [Tags]  head
+    ${accept_type}=     Set Variable                 application/json
+    ${headers}=         Create Dictionary   Accept   ${accept_type}
+    ${resp}=            HEAD  ${HTTP_LOCAL_SERVER}/anything  headers=${headers}
+    Status Should Be    OK  ${resp}
+    ${content_type_response}=  Get From Dictionary      ${resp.headers}   Content-Type
+    Should Be Equal   ${accept_type}  ${content_type_response}
+
+Head Request And Fail By Default On Http Error
+    [Tags]  head
+    Run Keyword And Expect Error  HTTPError: 400*
+    ...                           HEAD  ${HTTP_LOCAL_SERVER}/status/400
+
+Head Request Expect An Error And Evaluate Response
+    [Tags]  head
+    ${resp}=            HEAD  ${HTTP_LOCAL_SERVER}/status/401  expected_status=401
+    Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
+
+Patch Request
+    [Tags]  Patch
+    ${resp}=            PATCH  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Patch Request Should Have Patch Method
+    [Tags]  Patch
+    ${resp}=            PATCH  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings    ${resp.json()}[method]  PATCH
+
+Patch Request With Data
+    [Tags]  Patch
+    ${resp}=            PATCH  ${HTTP_LOCAL_SERVER}/anything  string
+    Status Should Be    OK  ${resp}
+    Should Be Equal As Strings  ${resp.json()}[data]  string
+
+Patch Request With Json
+    [Tags]  Patch
+    ${body}=            Create Dictionary  a=1  b=2
+    ${resp}=            PATCH  ${HTTP_LOCAL_SERVER}/anything  json=${body}
+    Status Should Be    OK  ${resp}
+    ${data}=            Evaluate  ${resp.json()}[data]
+    Dictionaries Should Be Equal  ${data}  ${body}
+
+Patch Request Expect An Error And Evaluate Response
+    [Tags]  Patch
+    ${resp}=            PATCH  ${HTTP_LOCAL_SERVER}/status/401  expected_status=401
+    Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
+
+Delete Request
+    [Tags]  Delete
+    ${resp}=            DELETE  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Delete Request Should Have Delete Method
+    [Tags]  Delete
+    ${resp}=            DELETE  ${HTTP_LOCAL_SERVER}/anything
+    Should Be Equal As Strings    ${resp.json()}[method]  DELETE
+
+Delete Request Expect An Error And Evaluate Response
+    [Tags]  Delete
+    ${resp}=            DELETE  ${HTTP_LOCAL_SERVER}/status/202  expected_status=202
+    Should Be Equal As Strings  ACCEPTED  ${resp.reason}
+
+Options Request On Existing Session
+    [Tags]  options
+    ${resp}=            OPTIONS  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+
+Options Request Check Allow Header
+    [Tags]  options
+    ${allow_header}=    Create List   POST  HEAD  PATCH  GET  TRACE  DELETE  OPTIONS  PUT
+    ${resp}=            OPTIONS  ${HTTP_LOCAL_SERVER}/anything
+    Status Should Be    OK  ${resp}
+    ${allow_response_header}=  Get From Dictionary      ${resp.headers}   Allow
+    ${allow_response_header}=  Split String  ${allow_response_header}  ,${SPACE}
+    Lists Should Be Equal   ${allow_header}  ${allow_response_header}  ignore_order=True
+
+Options Request And Bad Request Not Fail
+    [Tags]  options
+    ${resp}=            OPTIONS  ${HTTP_LOCAL_SERVER}/status/400
+    Status Should Be    OK  ${resp}
+
+Options Request Expect A Success On Unauthorized Request
+    [Tags]  options
+    ${resp}=            OPTIONS  ${HTTP_LOCAL_SERVER}/status/401  expected_status=200
+    Status Should Be    OK  ${resp}
diff --git a/atests/test_request_on_session.robot b/atests/test_requests_on_session.robot
similarity index 89%
rename from atests/test_request_on_session.robot
rename to atests/test_requests_on_session.robot
index 64116243..85a6d995 100644
--- a/atests/test_request_on_session.robot
+++ b/atests/test_requests_on_session.robot
@@ -43,7 +43,7 @@ Get Request With Url Params As Escaped String
 
 Get Request With Url Duplicated Keys In Params
     [Tags]  get
-    ${array}=          Create List   1  2
+    ${array}=           Create List   1  2
     ${resp}=            GET On Session  ${GLOBAL_SESSION}  /anything
     ...                     params=key=1&key=2
     Status Should Be    OK  ${resp}
@@ -51,7 +51,7 @@ Get Request With Url Duplicated Keys In Params
 
 Get Request With Url Duplicated Keys In Params And PHP Style Array
     [Tags]  get
-    ${array}=          Create List   1  2
+    ${array}=           Create List   1  2
     ${resp}=            GET On Session  ${GLOBAL_SESSION}  /anything
     ...                     params=key[]=1&key[]=2
     Status Should Be    OK  ${resp}
@@ -97,17 +97,17 @@ Get Request And Fail By Expecting A 200 Status With A Message
 
 Get Request Expect An Error And Evaluate Response
     [Tags]  get
-    ${resp}=    GET On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
     Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
 
 Get Request Expect Any Status And Continue On Error
     [Tags]  get
-    ${resp}=    GET On Session  ${GLOBAL_SESSION}  /status/404  expected_status=ANY
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  /status/404  expected_status=ANY
     Should Be Equal As Strings  NOT FOUND  ${resp.reason}
 
 Get Request Expect Anything Status And Continue On Error
     [Tags]  get
-    ${resp}=    GET On Session  ${GLOBAL_SESSION}  /status/404  expected_status=Anything
+    ${resp}=            GET On Session  ${GLOBAL_SESSION}  /status/404  expected_status=Anything
     Should Be Equal As Strings  NOT FOUND  ${resp.reason}
 
 Post Request On Existing Session
@@ -131,17 +131,17 @@ Post Request With Json
     ${body}=            Create Dictionary  a=1  b=2
     ${resp}=            POST On Session  ${GLOBAL_SESSION}  /anything  json=${body}
     Status Should Be    OK  ${resp}
-    ${data}=            To Json  ${resp.json()}[data]
+    ${data}=            Evaluate  ${resp.json()}[data]
     Dictionaries Should Be Equal  ${data}  ${body}
 
 Post Request Expect An Error And Evaluate Response
     [Tags]  post
-    ${resp}=    POST On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
+    ${resp}=            POST On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
     Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
 
 Post Request Expect Anything Status And Continue On Error
-    [Tags]  get
-    ${resp}=    POST On Session  ${GLOBAL_SESSION}  /status/400  expected_status=anything
+    [Tags]  post
+    ${resp}=            POST On Session  ${GLOBAL_SESSION}  /status/400  expected_status=anything
     Should Be Equal As Strings  BAD REQUEST  ${resp.reason}
 
 Put Request On Existing Session
@@ -170,7 +170,7 @@ Put Request With Json
 
 Put Request Expect An Error And Evaluate Response
     [Tags]  put
-    ${resp}=    PUT On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
+    ${resp}=            PUT On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
     Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
 
 Head Request On Existing Session
@@ -205,7 +205,7 @@ Head Request And Fail By Default On Http Error
 
 Head Request Expect An Error And Evaluate Response
     [Tags]  head
-    ${resp}=    HEAD On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
+    ${resp}=            HEAD On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
     Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
 
 Patch Request On Existing Session
@@ -234,7 +234,7 @@ Patch Request With Json
 
 Patch Request Expect An Error And Evaluate Response
     [Tags]  Patch
-    ${resp}=    PATCH On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
+    ${resp}=            PATCH On Session  ${GLOBAL_SESSION}  /status/401  expected_status=401
     Should Be Equal As Strings  UNAUTHORIZED  ${resp.reason}
 
 Delete Request On Existing Session
@@ -249,7 +249,7 @@ Delete Request Should Have Delete Method
 
 Delete Request Expect An Error And Evaluate Response
     [Tags]  Delete
-    ${resp}=    DELETE On Session  ${GLOBAL_SESSION}  /status/202  expected_status=202
+    ${resp}=            DELETE On Session  ${GLOBAL_SESSION}  /status/202  expected_status=202
     Should Be Equal As Strings  ACCEPTED  ${resp.reason}
 
 Options Request On Existing Session
@@ -268,10 +268,10 @@ Options Request Check Allow Header
 
 Options Request And Bad Request Not Fail
     [Tags]  options
-    ${resp}=  OPTIONS On Session  ${GLOBAL_SESSION}  /status/400
+    ${resp}=            OPTIONS On Session  ${GLOBAL_SESSION}  /status/400
     Status Should Be    OK  ${resp}
 
 Options Request Expect A Success On Unauthorized Request
     [Tags]  options
-    ${resp}=    OPTIONS On Session  ${GLOBAL_SESSION}  /status/401  expected_status=200
+    ${resp}=            OPTIONS On Session  ${GLOBAL_SESSION}  /status/401  expected_status=200
     Status Should Be    OK  ${resp}
diff --git a/atests/test_status_assertions.robot b/atests/test_status_assertions.robot
index 16d681d7..7ff9bbe6 100644
--- a/atests/test_status_assertions.robot
+++ b/atests/test_status_assertions.robot
@@ -54,3 +54,67 @@ Request And Status Should Be An Invalid Expected Status
     ${invalid_expected_status}=     Create Dictionary  a=1
     ${resp}=  Get Request  ${GLOBAL_SESSION}  /status/500
     Run Keyword And Expect Error   InvalidExpectedStatus*  Status Should Be  ${invalid_expected_status}  ${resp}
+
+Assert Successful On The Last Request
+    [Tags]  get  status
+    GET On Session  ${GLOBAL_SESSION}  /status/200
+    Request Should Be Successful
+
+Assert Successful Fail On The Last Request
+    [Tags]  get  status
+    GET On Session  ${GLOBAL_SESSION}  /status/500  expected_status=500
+    Run Keyword And Expect Error  HTTPError: 500*  Request Should Be Successful
+
+Assert Successful Fail On The Last Request After A Not Failing Request
+    [Tags]  get  status
+    GET On Session  ${GLOBAL_SESSION}  /status/200
+    GET On Session  ${GLOBAL_SESSION}  /status/500  expected_status=500
+    Run Keyword And Expect Error  HTTPError: 500*  Request Should Be Successful
+
+Assert Successful On The Last Request After A Failing Request
+    [Tags]  get  status
+    GET On Session  ${GLOBAL_SESSION}  /status/500  expected_status=500
+    GET On Session  ${GLOBAL_SESSION}  /status/200
+    Request Should Be Successful
+
+Assert Status Should Be OK On The Last Request
+    [Tags]  post  status
+    POST On Session  ${GLOBAL_SESSION}  /status/200
+    Status Should Be  200
+
+Assert Status Should Be Fail On The Last Request
+    [Tags]  post  status
+    POST On Session  ${GLOBAL_SESSION}  /status/500  expected_status=500
+    Run Keyword And Expect Error  Url: http://localhost:5000/status/500 Expected status: 500 != 200  Status Should Be  OK
+
+Assert Successful On The Last Session-Less Request
+    [Tags]  put  status
+    PUT  ${HTTP_LOCAL_SERVER}/status/200
+    Request Should Be Successful
+
+Assert Successful Fail On The Last Session-Less Request
+    [Tags]  put  status
+    PUT  ${HTTP_LOCAL_SERVER}/status/500  expected_status=500
+    Run Keyword And Expect Error  HTTPError: 500*  Request Should Be Successful
+
+Assert Successful Fail On The Last Session-Less Request After A Not Failing Request
+    [Tags]  get  post  status
+    GET  ${HTTP_LOCAL_SERVER}/status/200
+    POST  ${HTTP_LOCAL_SERVER}/status/500  expected_status=500
+    Run Keyword And Expect Error  HTTPError: 500*  Request Should Be Successful
+
+Assert Successful On The Last Session-Less Request After A Failing Request
+    [Tags]  get  status
+    HEAD  ${HTTP_LOCAL_SERVER}/status/500  expected_status=500
+    PATCH  ${HTTP_LOCAL_SERVER}/status/200
+    Request Should Be Successful
+
+Assert Status Should Be OK On The Last Session-Less Request
+    [Tags]  get  status
+    GET  ${HTTP_LOCAL_SERVER}/status/200
+    Status Should Be  200
+
+Assert Status Should Be Fail On The Last Session-Less Request
+    [Tags]  post  status
+    POST  ${HTTP_LOCAL_SERVER}/status/500  expected_status=500
+    Run Keyword And Expect Error  Url: http://localhost:5000/status/500 Expected status: 500 != 200  Status Should Be  OK
diff --git a/atests/test_request_url_warning.robot b/atests/test_url_warning.robot
similarity index 100%
rename from atests/test_request_url_warning.robot
rename to atests/test_url_warning.robot
diff --git a/atests/test_request_verify_ssl.robot b/atests/test_verify_ssl.robot
similarity index 100%
rename from atests/test_request_verify_ssl.robot
rename to atests/test_verify_ssl.robot
diff --git a/atests/testcase.robot b/atests/testcase.robot
index 66f4b7c0..d8f20164 100644
--- a/atests/testcase.robot
+++ b/atests/testcase.robot
@@ -16,22 +16,6 @@ Suite Teardown  Teardown Flask Http Server And Sessions
 ${test_session}     local test session created in Test Setup
 
 *** Test Cases ***
-Readme Test
-    [Tags]  get    skip
-    Create Session    google             http://www.google.com
-    Create Session    jsonplaceholder    https://jsonplaceholder.typicode.com
-
-    ${resp_google}=   GET On Session     google             /           expected_status=200
-    ${resp_json}=     GET On Session     jsonplaceholder    /posts/1
-
-    Should Be Equal As Strings           ${resp_google.reason}    OK
-    Dictionary Should Contain Value      ${resp_json.json()}    sunt aut facere repellat provident occaecati excepturi optio reprehenderit
-
-    &{data}=        Create dictionary  title=Robotframework requests  body=This is a test!  userId=1
-    ${resp}=        POST On Session    jsonplaceholder     /posts    json=${data}
-
-    Status Should Be                 201    ${resp}
-    Dictionary Should Contain Key    ${resp.json()}     id
 
 Get Requests
     [Tags]  get    skip
diff --git a/utests/test_RequestsKeywords.py b/utests/test_RequestsKeywords.py
new file mode 100644
index 00000000..c4b4c84f
--- /dev/null
+++ b/utests/test_RequestsKeywords.py
@@ -0,0 +1,68 @@
+import sys
+
+import pytest
+
+from RequestsLibrary import RequestsLibrary
+from utests import mock
+
+
+# @mock.patch('RequestsLibrary.RequestsKeywords.requests.get')
+# def test_common_request_none_session(mocked_get):
+#     keywords = RequestsLibrary.RequestsKeywords()
+#     keywords._common_request('get', None, 'http://mock.rules')
+#     mocked_get.assert_called_with('http://mock.rules')
+
+def build_mocked_session_keywords(url=''):
+    keywords = RequestsLibrary()
+    session = mock.MagicMock()
+    session.url = url
+    return session, keywords
+
+
+def test_get_url_with_none_session():
+    keywords = RequestsLibrary()
+    url = keywords._get_url(None, 'http://thisisa.url')
+    assert url == 'http://thisisa.url'
+
+
+def test_get_url_with_base():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com')
+    url = keywords._get_url(session, '')
+    assert url == 'http://www.domain.com'
+
+
+def test_get_url_with_base_endpoint():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com')
+    url = keywords._get_url(session, 'endpoint')
+    assert url == 'http://www.domain.com/endpoint'
+
+
+def test_get_url_with_base_slash_endpoint_pre():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com/')
+    url = keywords._get_url(session, 'endpoint')
+    assert url == 'http://www.domain.com/endpoint'
+
+
+def test_get_url_with_base_slash_endpoint_post():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com')
+    url = keywords._get_url(session, '/endpoint')
+    assert url == 'http://www.domain.com/endpoint'
+
+
+@pytest.mark.skipif(sys.version_info < (3, 0), reason="different urljoin handling of double slash")
+def test_get_url_with_base2trailing_endpoint():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com//')
+    url = keywords._get_url(session, 'endpoint')
+    assert url == 'http://www.domain.com/endpoint'
+
+
+def test_get_url_with_base_slash_endpoint_2trailing():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com')
+    url = keywords._get_url(session, '/endpoint//')
+    assert url == 'http://www.domain.com/endpoint//'
+
+
+def test_get_url_with_url_override_base():
+    session, keywords = build_mocked_session_keywords('http://www.domain.com')
+    url = keywords._get_url(session, 'https://new.domain.com')
+    assert url == 'https://new.domain.com'
diff --git a/utests/test_RequestKeywords.py b/utests/test_RequestsOnSessionKeywords.py
similarity index 69%
rename from utests/test_RequestKeywords.py
rename to utests/test_RequestsOnSessionKeywords.py
index f6919dbd..383b2a00 100644
--- a/utests/test_RequestKeywords.py
+++ b/utests/test_RequestsOnSessionKeywords.py
@@ -26,16 +26,14 @@ def test_common_request_file_descriptor_closing():
 def test_common_request_verify_override_true():
     session, m_common_request = build_mocked_session_common_request(verify=False)
     m_common_request('get', session, '/', verify=True)
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={}, verify=True)
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={}, verify=True)
     assert session.verify is False
 
 
 def test_common_request_verify_override_false():
     session, m_common_request = build_mocked_session_common_request(verify=True)
     m_common_request('get', session, '/', verify=False)
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={}, verify=False)
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={}, verify=False)
     assert session.verify is True
 
 
@@ -43,34 +41,29 @@ def test_common_request_verify_true_default():
     session, m_common_request = build_mocked_session_common_request(verify=True)
     m_common_request('get', session, '/')
     assert session.verify is True
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={})
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={})
 
 
 def test_common_request_verify_false_default():
     session, m_common_request = build_mocked_session_common_request(verify=False)
     m_common_request('get', session, '/')
     assert session.verify is False
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={})
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={})
 
 
 def test_common_request_with_cookies_override():
     session, m_common_request = build_mocked_session_common_request()
     m_common_request('get', session, '/', cookies={'a': 1, 'b': 2})
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={'a': 1, 'b': 2})
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={'a': 1, 'b': 2})
 
 
 def test_common_request_with_cookies_override_default():
     session, m_common_request = build_mocked_session_common_request(cookies={'a': 1, 'b': 2})
     m_common_request('get', session, '/', cookies={'a': 3, 'b': 4})
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={'a': 3, 'b': 4})
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={'a': 3, 'b': 4})
 
 
 def test_common_request_with_cookies_default_only():
     session, m_common_request = build_mocked_session_common_request(cookies={'a': 1, 'b': 2})
     m_common_request('get', session, '/')
-    session.get.assert_called_with('http://mocking.rules/', params=None,
-                                   timeout=None, cookies={'a': 1, 'b': 2})
+    session.get.assert_called_with('http://mocking.rules/', timeout=None, cookies={'a': 1, 'b': 2})
diff --git a/utests/test_SessionKeywords.py b/utests/test_SessionKeywords.py
index fef0c5eb..a4b4255b 100644
--- a/utests/test_SessionKeywords.py
+++ b/utests/test_SessionKeywords.py
@@ -35,5 +35,3 @@ def test_create_session_retry_not_raise_warning(self):
         with self.assertRaises(AssertionError):
             with self.assertWarns(DeprecationWarning):
                 keywords.create_session('alias', 'http://mocking.rules')
-
-
diff --git a/utests/test_log.py b/utests/test_log.py
index 9e63a7a8..b5884efe 100644
--- a/utests/test_log.py
+++ b/utests/test_log.py
@@ -87,7 +87,7 @@ def test_log_response(mocked_logger):
     response.status_code = 200
     response.reason = 'OK'
     response.text = "<html>body</html>"
-    response.headers = {'Date': 'Sun, 10 May 2020 22:31:21 GMT', 'Expires': '-1', 'Cache-Control': 'private, max-age=0', 'Content-Type': 'text/html; charset=ISO-8859-1', 'P3P': 'CP="This is not a P3P policy! See g.co/p3phelp for more info."', 'Content-Encoding': 'gzip', 'Server': 'gws', 'X-XSS-Protection': '0', 'X-Frame-Options': 'SAMEORIGIN', 'Set-Cookie': '1P_JAR=2020-05-10-22; expires=Tue, 09-Jun-2020 22:31:21 GMT; path=/; domain=.google.it; Secure, NID=204=1JvfFtAYLcnQfWYzh5h0K-PttJP8IvuJdcaej_-utCvMHqavyFkwmthddhQZ-sQ6nZkNCWybVUuzTtaNoEK4TD1FG-TA7QIUR2P6-kj-vN0zkjiS4VdfQbxFnfwtIgkBxFDuoAZsoa_oYm0ODjJ4JAZfdXueqrZJ38tDtIOXpVU; expires=Mon, 09-Nov-2020 22:31:21 GMT; path=/; domain=.google.it; HttpOnly', 'Alt-Svc': 'h3-27=":443"; ma=2592000,h3-25=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'Transfer-Encoding': 'chunked'}
+    response.headers = {'Date': 'Sun, 10 May 2020 22:31:21 GMT', 'Expires': '-1', 'Cache-Control': 'private, max-age=0', 'Content-Type': 'text/html; charset=ISO-8859-1', 'P3P': 'CP="This is not a P3P policy! See g.co/p3phelp for more info."', 'Content-Encoding': 'gzip', 'Server': 'gws', 'X-XSS-Protection': '0', 'X-Frame-Options': 'SAMEORIGIN', 'Set-Cookie': '1P_JAR=2020-05-10-22; expires=Tue, 09-Jun-2020 22:31:21 GMT; path=/; domain=.google.it; Secure, NID=204=1JvfFtAYLcnQfWYzh5h0K-PttJP8IvuJdcaej_-utCvMHqavyFkwmthddhQZ-sQ6nZkNCWybVUuzTtaNoEK4TD1FG-TA7QIUR2P6-kj-vN0zkjiS4VdfQbxFnfwtIgkBxFDuoAZsoa_oYm0ODjJ4JAZfdXueqrZJ38tDtIOXpVU; expires=Mon, 09-Nov-2020 22:31:21 GMT; path=/; domain=.google.it; HttpOnly', 'Alt-Svc': 'h3-27=":443"; ma=2592000,h3-25=":443"; ma=2592000,h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000,quic=":443"; ma=2592000; v="46,43"', 'Transfer-Encoding': 'chunked'}  # noqa
     log_response(response)
     assert mocked_logger.info.call_args[0][0] == ("%s Response : url=%s \n " % (response.request.method.upper(),
                                                                                 response.url) +
diff --git a/utests/test_utils.py b/utests/test_utils.py
index 51858dbc..0ae280d0 100644
--- a/utests/test_utils.py
+++ b/utests/test_utils.py
@@ -4,7 +4,7 @@
 from requests import Session
 
 from RequestsLibrary import RequestsLibrary
-from RequestsLibrary.utils import is_file_descriptor, merge_headers, warn_if_equal_symbol_in_url
+from RequestsLibrary.utils import is_file_descriptor, merge_headers
 from utests import SCRIPT_DIR
 from utests import mock