aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorGarrett D'Amore <garrett@damore.org>2018-02-02 12:46:02 -0800
committerGarrett D'Amore <garrett@damore.org>2018-02-02 12:46:02 -0800
commitfc0abbdf71700b2414ba012f9863f7dfaf514b91 (patch)
tree16fca800dbce3abf42f4013cfb0ca4b8aed3981f /docs
parent490bc97dbf76fae2a99c8bacd5fd9be332d68b90 (diff)
downloadnng-fc0abbdf71700b2414ba012f9863f7dfaf514b91.tar.gz
nng-fc0abbdf71700b2414ba012f9863f7dfaf514b91.tar.bz2
nng-fc0abbdf71700b2414ba012f9863f7dfaf514b91.zip
Document HTTP request/reply structures and handling.
Diffstat (limited to 'docs')
-rw-r--r--docs/libnng.adoc45
-rw-r--r--docs/nng_http_req_add_header.adoc70
-rw-r--r--docs/nng_http_req_alloc.adoc69
-rw-r--r--docs/nng_http_req_copy_data.adoc68
-rw-r--r--docs/nng_http_req_del_header.adoc60
-rw-r--r--docs/nng_http_req_free.adoc50
-rw-r--r--docs/nng_http_req_get_header.adoc59
-rw-r--r--docs/nng_http_req_get_method.adoc53
-rw-r--r--docs/nng_http_req_get_uri.adoc54
-rw-r--r--docs/nng_http_req_get_version.adoc53
-rw-r--r--docs/nng_http_req_set_data.adoc70
-rw-r--r--docs/nng_http_req_set_header.adoc64
-rw-r--r--docs/nng_http_req_set_method.adoc59
-rw-r--r--docs/nng_http_req_set_uri.adoc64
-rw-r--r--docs/nng_http_req_set_version.adoc64
-rw-r--r--docs/nng_http_res_add_header.adoc70
-rw-r--r--docs/nng_http_res_alloc.adoc73
-rw-r--r--docs/nng_http_res_alloc_error.adoc63
-rw-r--r--docs/nng_http_res_copy_data.adoc68
-rw-r--r--docs/nng_http_res_del_header.adoc60
-rw-r--r--docs/nng_http_res_free.adoc50
-rw-r--r--docs/nng_http_res_get_header.adoc59
-rw-r--r--docs/nng_http_res_get_reason.adoc55
-rw-r--r--docs/nng_http_res_get_status.adoc125
-rw-r--r--docs/nng_http_res_get_version.adoc53
-rw-r--r--docs/nng_http_res_set_data.adoc70
-rw-r--r--docs/nng_http_res_set_header.adoc63
-rw-r--r--docs/nng_http_res_set_reason.adoc63
-rw-r--r--docs/nng_http_res_set_status.adoc131
-rw-r--r--docs/nng_http_res_set_version.adoc64
30 files changed, 1969 insertions, 0 deletions
diff --git a/docs/libnng.adoc b/docs/libnng.adoc
index 57337f47..b23383cc 100644
--- a/docs/libnng.adoc
+++ b/docs/libnng.adoc
@@ -171,6 +171,51 @@ universal resource locators (URLS).
| <<nng_url_parse#,nng_url_parse(3)>>|create URL structure from string
|===
+
+=== HTTP Support
+
+The library may be configured with support for HTTP, and this will
+be the case if WebSocket support is configured as well. In this case,
+it is possible to access functionality to support the creation of
+HTTP (and HTTP/S if TLS support is present) servers and clients.
+
+==== Common HTTP Functions
+
+The following functions are used to work with HTTP requests, responses,
+and connections.
+
+|===
+| <<nng_http_req_add_header#,nng_http_req_add_header(3)>>|add HTTP request header
+| <<nng_http_req_alloc#,nng_http_req_alloc(3)>>|allocate HTTP request structure
+| <<nng_http_req_copy_data#,nng_http_req_copy_data(3)>>|copy HTTP request body
+| <<nng_http_req_del_header#,nng_http_req_del_header(3)>>|delete HTTP request header
+| <<nng_http_req_free#,nng_http_req_free(3)>>|free HTTP request structure
+| <<nng_http_req_get_header#,nng_http_req_get_header(3)>>|return HTTP request header
+| <<nng_http_req_get_method#,nng_http_req_get_method(3)>>|return HTTP request method
+| <<nng_http_req_get_uri#,nng_http_req_get_uri(3)>>|return HTTP request URI
+| <<nng_http_req_get_version#,nng_http_req_get_version(3)>>|return HTTP request protocol version
+| <<nng_http_req_set_data#,nng_http_req_set_data(3)>>|set HTTP request body
+| <<nng_http_req_set_header#,nng_http_req_set_header(3)>>|set HTTP request header
+| <<nng_http_req_set_method#,nng_http_req_set_method(3)>>|set HTTP request method
+| <<nng_http_req_set_uri#,nng_http_req_set_uri(3)>>|set HTTP request URI
+| <<nng_http_req_set_version#,nng_http_req_set_version(3)>>|set HTTP request protocol version
+| <<nng_http_res_add_header#,nng_http_res_add_header(3)>>|add HTTP response header
+| <<nng_http_res_alloc#,nng_http_res_alloc(3)>>|allocate HTTP response structure
+| <<nng_http_res_alloc_error#,nng_http_res_alloc_error(3)>>|allocate HTTP error response
+| <<nng_http_res_copy_data#,nng_http_res_copy_data(3)>>|copy HTTP response body
+| <<nng_http_res_del_header#,nng_http_res_del_header(3)>>|delete HTTP response header
+| <<nng_http_res_free#,nng_http_res_free(3)>>|free HTTP response structure
+| <<nng_http_res_set_data#,nng_http_res_set_data(3)>>|set HTTP response body
+| <<nng_http_res_get_header#,nng_http_res_get_header(3)>>|return HTTP response header
+| <<nng_http_res_get_reason#,nng_http_res_get_reason(3)>>|return HTTP response reason
+| <<nng_http_res_get_status#,nng_http_res_get_status(3)>>|return HTTP response status
+| <<nng_http_res_get_version#,nng_http_res_get_version(3)>>|return HTTP response protocol version
+| <<nng_http_res_set_header#,nng_http_res_set_header(3)>>|set HTTP response header
+| <<nng_http_res_set_reason#,nng_http_res_set_reason(3)>>|set HTTP response reason
+| <<nng_http_res_set_status#,nng_http_res_set_status(3)>>|set HTTP response status
+| <<nng_http_res_set_version#,nng_http_res_set_version(3)>>|set HTTP response protocol version
+|===
+
=== TLS Configuration Objects
The following functions are used to manipulate transport layer security
diff --git a/docs/nng_http_req_add_header.adoc b/docs/nng_http_req_add_header.adoc
new file mode 100644
index 00000000..beffa97a
--- /dev/null
+++ b/docs/nng_http_req_add_header.adoc
@@ -0,0 +1,70 @@
+= nng_http_req_add_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_add_header - add HTTP request header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_add_header(nng_http_req *req, const char *key,
+ const char *val);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_add_header()` adds an HTTP header for the request
+_req_ and the _key_ to the _val_. The _key_ and _val_ are copied.
+
+If a header with the value of _key_ already exists, then a comma
+and whitespace separate are appended to it, followed by _val_.
+
+If no such header already exists, then one is created with the value _val_.
+
+TIP: The HTTP specification requires that duplicate headers be treated
+identically to a single header with multiple comma-delimited values.
+
+TIP: See <<nng_http_req_set_header#,nng_http_req_set_header(3)>> if
+replacement of an existing header rather than appending to it is desired.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_del_header#,nng_http_req_del_header(3)>>,
+<<nng_http_req_get_header#,nng_http_req_get_header(3)>>,
+<<nng_http_req_set_header#,nng_http_req_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_alloc.adoc b/docs/nng_http_req_alloc.adoc
new file mode 100644
index 00000000..f15772f7
--- /dev/null
+++ b/docs/nng_http_req_alloc.adoc
@@ -0,0 +1,69 @@
+= nng_http_req_alloc(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_alloc - allocate HTTP request structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_alloc(nng_http_req **reqp, const nng_url *url);
+-----------
+
+
+== DESCRIPTION
+
+The `nng_http_req_alloc()` function allocates a new HTTP request structure
+and stores a pointer to it in __reqp__. The request will be initialized
+to perform an HTTP/1.1 `GET` operation using the URL specified in __url__.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient free memory exists to allocate a message.
+`NNG_ENOTSUP`:: HTTP support not configured.
+
+== SEE ALSO
+
+<<nng_http_conn_read_req#,nng_http_conn_read_req(3)>>,
+<<nng_http_conn_write_req#,nng_http_conn_write_req(3)>>,
+<<nng_http_req_add_header#,nng_http_req_add_header(3)>>,
+<<nng_http_req_copy_data#,nng_http_req_copy_data(3)>>,
+<<nng_http_req_del_header#,nng_http_req_del_header(3)>>,
+<<nng_http_req_free#,nng_http_req_free(3)>>,
+<<nng_http_req_get_header#,nng_http_req_get_header(3)>>,
+<<nng_http_req_get_method#,nng_http_req_get_method(3)>>,
+<<nng_http_req_get_uri#,nng_http_req_get_uri(3)>>,
+<<nng_http_req_get_version#,nng_http_req_get_version(3)>>,
+<<nng_http_req_set_data#,nng_http_req_set_data(3)>>,
+<<nng_http_req_set_method#,nng_http_req_set_method(3)>>,
+<<nng_http_req_set_uri#,nng_http_req_set_uri(3)>>,
+<<nng_http_req_set_version#,nng_http_req_set_version(3)>>,
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_url_parse#,nng_url_parse(3)>>
+<<nng_strerror#,nng_strerror(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_copy_data.adoc b/docs/nng_http_req_copy_data.adoc
new file mode 100644
index 00000000..0ae54cf0
--- /dev/null
+++ b/docs/nng_http_req_copy_data.adoc
@@ -0,0 +1,68 @@
+= nng_http_req_copy_data(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_copy_data - copy HTTP request body
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_copy_data(nng_http_req *req, const void *body, size_t size);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_copy_data()` makes a copy of _body_ (of size __size__)
+and sets the HTTP body for the request _req_ to it. The copy will be
+deallocated automatically when _req_ is freed.
+
+The copied body data will be automatically sent with the request when it
+is sent using <<nng_http_conn_write_req#,nni_http_conn_write_req(3)>>.
+
+This also updates the relevant `Content-Length` header of _req_.
+
+NOTE: The current framework does not support sending data via chunked
+transfer-encoding.
+
+TIP: To avoid copying data, the
+<<nng_http_req_set_data#,nng_http_req_set_data(3)>> may be used instead.
+
+TIP: It is a good idea to also set the `Content-Type` header.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_conn_write_req#,nng_http_conn_write_req(3)>>,
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_set_data#,nng_http_req_set_data(3)>>,
+<<nng_http_req_set_header#,nng_http_req_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_del_header.adoc b/docs/nng_http_req_del_header.adoc
new file mode 100644
index 00000000..e58650db
--- /dev/null
+++ b/docs/nng_http_req_del_header.adoc
@@ -0,0 +1,60 @@
+= nng_http_req_set_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_header - set HTTP request header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_header(nng_http_req *req, const char *key);
+
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_del_header()` removes all HTTP headers with the
+associated _key_ from the request structure _req_.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOENT`:: No header with the key _key_ was present.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_add_header#,nng_http_req_add_header(3)>>,
+<<nng_http_req_del_header#,nng_http_req_del_header(3)>>,
+<<nng_http_req_get_header#,nng_http_req_get_header(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_free.adoc b/docs/nng_http_req_free.adoc
new file mode 100644
index 00000000..2b4dc840
--- /dev/null
+++ b/docs/nng_http_req_free.adoc
@@ -0,0 +1,50 @@
+= nng_http_req_free(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_free - free HTTP request structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+void nng_http_req_free(nng_http_req *req);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_free()` function deallocates the HTTP request structure
+_req_ entirely.
+
+== RETURN VALUES
+
+None.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_get_header.adoc b/docs/nng_http_req_get_header.adoc
new file mode 100644
index 00000000..9431f597
--- /dev/null
+++ b/docs/nng_http_req_get_header.adoc
@@ -0,0 +1,59 @@
+= nng_http_req_get_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_get_header - return HTTP request header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_req_get_header(nng_http_req *req, const char *key);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_get_header()` looks for an HTTP header _key_ in
+the request _req_, and returns the associated value if found,
+or `NULL` if not found.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` will not find anything.
+
+
+== RETURN VALUES
+
+HTTP header value for _key_, if it exists, or NULL otherwise.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_add_header#,nng_http_req_add_header(3)>>,
+<<nng_http_req_set_header#,nng_http_req_set_header(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_get_method.adoc b/docs/nng_http_req_get_method.adoc
new file mode 100644
index 00000000..4ae03516
--- /dev/null
+++ b/docs/nng_http_req_get_method.adoc
@@ -0,0 +1,53 @@
+= nng_http_req_get_method(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_get_method - return HTTP request method
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_req_get_method(nng_http_req *req);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_get_method()` returns the HTTP method associated with
+the request _req_. The value will be a string, such as "GET" or "POST".
+
+
+== RETURN VALUES
+
+Request method as a string.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_set_method#,nng_http_req_set_method(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_get_uri.adoc b/docs/nng_http_req_get_uri.adoc
new file mode 100644
index 00000000..982a28a1
--- /dev/null
+++ b/docs/nng_http_req_get_uri.adoc
@@ -0,0 +1,54 @@
+= nng_http_req_get_method(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_get_uri - return HTTP request URI
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_req_get_method(nng_http_req *req);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_get_uri()` returns the URI (path) associated with the HTTP
+the request _req_. The value returned includes the path, as well as any
+query information or fragment. The value will look like a filesystem path
+with those optional components appened, such as `/api/get_info.cgi?name=garrett`.
+
+== RETURN VALUES
+
+Request URI as a string.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_set_uri#,nng_http_req_set_uri(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_get_version.adoc b/docs/nng_http_req_get_version.adoc
new file mode 100644
index 00000000..5aaac194
--- /dev/null
+++ b/docs/nng_http_req_get_version.adoc
@@ -0,0 +1,53 @@
+= nng_http_req_get_version(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_get_version - return HTTP request protocol version
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_req_get_version(nng_http_req *req);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_get_version()` returns a string representing the HTTP
+protocol version associated with the request _req_, such as "HTTP/1.1".
+
+
+== RETURN VALUES
+
+Request version as a string.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_set_version#,nng_http_req_set_version(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_set_data.adoc b/docs/nng_http_req_set_data.adoc
new file mode 100644
index 00000000..e1b5f6f9
--- /dev/null
+++ b/docs/nng_http_req_set_data.adoc
@@ -0,0 +1,70 @@
+= nng_http_req_set_data(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_data - set HTTP request body
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_data(nng_http_req *req, const void *body, size_t size);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_set_data()` sets the HTTP body associated with
+the request _req_ to _body_, and the size of the body to _size_.
+This body data will be automatically sent with the request when it
+is sent using <<nng_http_conn_write_req#,nni_http_conn_write_req(3)>>.
+
+This also updates the relevant `Content-Length` header of _req_.
+
+NOTE: The current framework does not support sending data via chunked
+transfer-encoding.
+
+The _body_ is *not* copied, and the caller must ensure that it is available
+until the _req_ is deallocated.
+
+TIP: To have a local copy allocated with _req_ that will be automatically
+deallocated when _req_ is freed,
+see <<nng_http_req_copy_data#,nng_http_req_copy_data(3)>>.
+
+TIP: It is a good idea to also set the `Content-Type` header.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_conn_write_req#,nng_http_conn_write_req(3)>>,
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_copy_data#,nng_http_req_copy_data(3)>>,
+<<nng_http_req_set_header#,nng_http_req_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_set_header.adoc b/docs/nng_http_req_set_header.adoc
new file mode 100644
index 00000000..e4381906
--- /dev/null
+++ b/docs/nng_http_req_set_header.adoc
@@ -0,0 +1,64 @@
+= nng_http_req_set_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_header - set HTTP request header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_header(nng_http_req *req, const char *key,
+ const char *val);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_set_header()` sets the HTTP header for the request
+_req_ and the _key_ to the _val_. The _key_ and _val_ are copied.
+Any previous header with the same _key_ is replaced.
+
+TIP: See <<nng_http_req_add_header#,nng_http_req_add_header(3)>> to
+add additional headers with the same _key_ without replacing them.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_add_header#,nng_http_req_add_header(3)>>,
+<<nng_http_req_del_header#,nng_http_req_del_header(3)>>,
+<<nng_http_req_get_header#,nng_http_req_get_header(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_set_method.adoc b/docs/nng_http_req_set_method.adoc
new file mode 100644
index 00000000..439f9bc5
--- /dev/null
+++ b/docs/nng_http_req_set_method.adoc
@@ -0,0 +1,59 @@
+= nng_http_req_set_method(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_method - set HTTP request method
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_method(nng_http_req *req, const char *method);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_set_method()` sets the HTTP method associated with
+the request _req_ to _method_. The _method_ must be a string,
+such as "GET" or "POST", and the HTTP specifications indicate that it must
+be upper case.
+
+The default value method for newly allocated requests is "GET".
+
+A local copy of the _method_ is made in the request _req_.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_get_method#,nng_http_req_get_method(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_set_uri.adoc b/docs/nng_http_req_set_uri.adoc
new file mode 100644
index 00000000..3208958a
--- /dev/null
+++ b/docs/nng_http_req_set_uri.adoc
@@ -0,0 +1,64 @@
+= nng_http_req_set_uri(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_uri - set HTTP request URI
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_uri(nng_http_req *req, const char *uri);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_set_uri()` sets the Request-URI associated with
+the request _req_ to _uri_. The _uri_ should contain precisely the
+string that will be sent to the HTTP server in the request, including
+any query information or fragment.
+
+A local copy of the _uri_ is made in the request _req_.
+
+NOTE: No validation or canonicalization of the _uri_ is performed.
+
+TIP: The <<nng_url_parse#,nng_url_parse(3)>> function can be used to
+perform validation and canonicalization. The `u_requri` member will
+contain a suitable value that can be used with this function.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_get_uri#,nng_http_req_get_uri(3)>>,
+<<nng_url_parse#,nng_url_parse(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_req_set_version.adoc b/docs/nng_http_req_set_version.adoc
new file mode 100644
index 00000000..fdfe117c
--- /dev/null
+++ b/docs/nng_http_req_set_version.adoc
@@ -0,0 +1,64 @@
+= nng_http_req_set_version(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_req_set_version - set HTTP request protocol version
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_req_set_version(nng_http_req *req, const char *version);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_req_set_version()` sets the HTTP protocol version associated with
+the request _req_ to _version_. The _version_ must be a string containing
+a valid HTTP protocol version, such as "HTTP/1.0". The default value is
+"HTTP/1.1".
+
+A local copy of the _version_ is made in the request _req_.
+
+NOTE: No validation of the version supplied is performed.
+
+NOTE: The library does not contain support for versions of HTTP other than
+"HTTP/1.0" and "HTTP/1.1". Specifying any other version may result in
+unspecified behavior.
+
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_req_get_version#,nng_http_req_get_version(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_add_header.adoc b/docs/nng_http_res_add_header.adoc
new file mode 100644
index 00000000..81203de6
--- /dev/null
+++ b/docs/nng_http_res_add_header.adoc
@@ -0,0 +1,70 @@
+= nng_http_res_add_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_add_header - add HTTP response header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_add_header(nng_http_res *res, const char *key,
+ const char *val);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_add_header()` adds an HTTP header for the response
+_res_ and the _key_ to the _val_. The _key_ and _val_ are copied.
+
+If a header with the value of _key_ already exists, then a comma
+and whitespace separate are appended to it, followed by _val_.
+
+If no such header already exists, then one is created with the value _val_.
+
+TIP: The HTTP specification requires that duplicate headers be treated
+identically to a single header with multiple comma-delimited values.
+
+TIP: See <<nng_http_res_set_header#,nng_http_res_set_header(3)>> if
+replacement of an existing header rather than appending to it is desired.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_del_header#,nng_http_res_del_header(3)>>,
+<<nng_http_res_get_header#,nng_http_res_get_header(3)>>,
+<<nng_http_res_set_header#,nng_http_res_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_alloc.adoc b/docs/nng_http_res_alloc.adoc
new file mode 100644
index 00000000..73dbccf5
--- /dev/null
+++ b/docs/nng_http_res_alloc.adoc
@@ -0,0 +1,73 @@
+= nng_http_res_alloc(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_alloc - allocate HTTP response structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_alloc(nng_http_res **resp);
+-----------
+
+
+== DESCRIPTION
+
+The `nng_http_res_alloc()` function allocates a new HTTP response structure
+and stores a pointer to it in __resp__. The response will be initialized
+with status code 200 (`NNG_HTTP_STATUS_OK`), and a reason phrase of "OK",
+and HTTP protocol version "HTTP/1.1".
+
+TIP: When an error response is needed, consider using
+<<nng_http_res_alloc_error#,nng_http_res_alloc_error(3)>> instead.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient free memory exists to allocate a message.
+`NNG_ENOTSUP`:: HTTP support not configured.
+
+== SEE ALSO
+
+<<nng_http_conn_read_res#,nng_http_conn_read_res(3)>>,
+<<nng_http_conn_write_res#,nng_http_conn_write_res(3)>>,
+<<nng_http_req_alloc#,nng_http_req_alloc(3)>>,
+<<nng_http_res_alloc_errror#,nng_http_res_alloc_error(3)>>,
+<<nng_http_res_add_header#,nng_http_res_add_header(3)>>,
+<<nng_http_res_copy_data#,nng_http_res_copy_data(3)>>,
+<<nng_http_res_del_header#,nng_http_res_del_header(3)>>,
+<<nng_http_res_free#,nng_http_res_free(3)>>,
+<<nng_http_res_get_header#,nng_http_res_get_header(3)>>,
+<<nng_http_res_get_reason#,nng_http_res_get_reason(3)>>,
+<<nng_http_res_get_status#,nng_http_res_get_status(3)>>,
+<<nng_http_res_get_version#,nng_http_res_get_version(3)>>,
+<<nng_http_res_set_data#,nng_http_res_set_data(3)>>,
+<<nng_http_res_set_reason#,nng_http_res_set_reason(3)>>,
+<<nng_http_res_set_status#,nng_http_res_set_status(3)>>,
+<<nng_http_res_set_version#,nng_http_res_set_version(3)>>,
+<<nng_strerror#,nng_strerror(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_alloc_error.adoc b/docs/nng_http_res_alloc_error.adoc
new file mode 100644
index 00000000..21a40d5f
--- /dev/null
+++ b/docs/nng_http_res_alloc_error.adoc
@@ -0,0 +1,63 @@
+= nng_http_res_alloc_error(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_alloc_error - allocate HTTP error response
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_alloc_error(nng_http_res **resp, uint16_t status);
+-----------
+
+
+== DESCRIPTION
+
+The `nng_http_res_alloc_error()` function allocates a new HTTP response structure
+and stores a pointer to it in __resp__. The response will be initialized
+with the status code _status_, a corresponding reason phrase, and
+a simple HTML page containing the same information will be generated and
+attached to the response. (Relevant HTTP headers will be set as well,
+such as `Content-Type` and `Content-Length`.) The HTTP protocol version
+is also set to "HTTP/1.1".
+
+TIP: This is the simplest way to generate an error response.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient free memory exists to allocate a message.
+`NNG_ENOTSUP`:: HTTP support not configured.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_free#,nng_http_res_free(3)>>,
+<<nng_http_res_set_reason#,nng_http_res_set_reason(3)>>,
+<<nng_http_res_set_status#,nng_http_res_set_status(3)>>,
+<<nng_strerror#,nng_strerror(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_copy_data.adoc b/docs/nng_http_res_copy_data.adoc
new file mode 100644
index 00000000..2034c033
--- /dev/null
+++ b/docs/nng_http_res_copy_data.adoc
@@ -0,0 +1,68 @@
+= nng_http_res_copy_data(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_copy_data - copy HTTP response body
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_copy_data(nng_http_res *res, const void *body, size_t size);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_copy_data()` makes a copy of _body_ (of size __size__)
+and sets the HTTP body for the response _res_ to it. The copy will be
+deallocated automatically when _res_ is freed.
+
+The copied body data will be automatically sent with the response when it
+is sent using <<nng_http_conn_write_res#,nni_http_conn_write_res(3)>>.
+
+This also updates the relevant `Content-Length` header of _res_.
+
+NOTE: The current framework does not support sending data via chunked
+transfer-encoding.
+
+TIP: To avoid copying data, the
+<<nng_http_res_set_data#,nng_http_res_set_data(3)>> may be used instead.
+
+TIP: It is a good idea to also set the `Content-Type` header.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_conn_write_res#,nng_http_conn_write_res(3)>>,
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_set_data#,nng_http_res_set_data(3)>>,
+<<nng_http_res_set_header#,nng_http_res_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_del_header.adoc b/docs/nng_http_res_del_header.adoc
new file mode 100644
index 00000000..4c9b8719
--- /dev/null
+++ b/docs/nng_http_res_del_header.adoc
@@ -0,0 +1,60 @@
+= nng_http_res_set_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_header - set HTTP response header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_header(nng_http_res *res, const char *key);
+
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_del_header()` removes all HTTP headers with the
+associated _key_ from the response structure _res_.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOENT`:: No header with the key _key_ was present.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_add_header#,nng_http_res_add_header(3)>>,
+<<nng_http_res_del_header#,nng_http_res_del_header(3)>>,
+<<nng_http_res_get_header#,nng_http_res_get_header(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_free.adoc b/docs/nng_http_res_free.adoc
new file mode 100644
index 00000000..102ddb84
--- /dev/null
+++ b/docs/nng_http_res_free.adoc
@@ -0,0 +1,50 @@
+= nng_http_res_free(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_free - free HTTP response structure
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+void nng_http_res_free(nng_http_res *req);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_free()` function deallocates the HTTP response structure
+_res_ entirely.
+
+== RETURN VALUES
+
+None.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_req_alloc(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_get_header.adoc b/docs/nng_http_res_get_header.adoc
new file mode 100644
index 00000000..74bb2f9f
--- /dev/null
+++ b/docs/nng_http_res_get_header.adoc
@@ -0,0 +1,59 @@
+= nng_http_res_get_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_get_header - return HTTP response header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_res_get_header(nng_http_res *res, const char *key);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_get_header()` looks for an HTTP header _key_ in
+the response _res_, and returns the associated value if found,
+or `NULL` if not found.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` will not find anything.
+
+
+== RETURN VALUES
+
+HTTP header value for _key_, if it exists, or NULL otherwise.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_add_header#,nng_http_res_add_header(3)>>,
+<<nng_http_res_set_header#,nng_http_res_set_header(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_get_reason.adoc b/docs/nng_http_res_get_reason.adoc
new file mode 100644
index 00000000..12e25352
--- /dev/null
+++ b/docs/nng_http_res_get_reason.adoc
@@ -0,0 +1,55 @@
+= nng_http_res_get_reason(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_get_reason - return HTTP response reason
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_res_get_reason(nng_http_res *res);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_get_reason()` returns a string representing the "reason
+phrase" associated with the response _res_. This is a human-readable
+explanation of the status code that would be obtained from
+<<nng_http_res_get_status#,nng_http_res_get_status(3)>>.
+
+== RETURN VALUES
+
+Reason as a string.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_get_status#,nng_http_res_get_status(3)>>,
+<<nng_http_res_set_reason#,nng_http_res_set_reason(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_get_status.adoc b/docs/nng_http_res_get_status.adoc
new file mode 100644
index 00000000..5a0db720
--- /dev/null
+++ b/docs/nng_http_res_get_status.adoc
@@ -0,0 +1,125 @@
+= nng_http_res_get_status(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_get_status - return HTTP status code
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+uint16_t nng_http_res_get_status(nng_http_res *res);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_get_status()` returns a numeric code corresponding to
+the HTTP status of the response _res_.
+
+For convenience, a number of predefined symbols corresponding to well-known
+HTTP status codes are available.
+
+[source, c]
+----
+enum {
+ NNG_HTTP_STATUS_CONTINUE = 100,
+ NNG_HTTP_STATUS_SWITCHING = 101,
+ NNG_HTTP_STATUS_PROCESSING = 102,
+ NNG_HTTP_STATUS_OK = 200,
+ NNG_HTTP_STATUS_CREATED = 201,
+ NNG_HTTP_STATUS_ACCEPTED = 202,
+ NNG_HTTP_STATUS_NOT_AUTHORITATIVE = 203,
+ NNG_HTTP_STATUS_NO_CONTENT = 204,
+ NNG_HTTP_STATUS_RESET_CONTENT = 205,
+ NNG_HTTP_STATUS_PARTIAL_CONTENT = 206,
+ NNG_HTTP_STATUS_MULTI_STATUS = 207,
+ NNG_HTTP_STATUS_ALREADY_REPORTED = 208,
+ NNG_HTTP_STATUS_IM_USED = 226,
+ NNG_HTTP_STATUS_MULTIPLE_CHOICES = 300,
+ NNG_HTTP_STATUS_STATUS_MOVED_PERMANENTLY = 301,
+ NNG_HTTP_STATUS_FOUND = 302,
+ NNG_HTTP_STATUS_SEE_OTHER = 303,
+ NNG_HTTP_STATUS_NOT_MODIFIED = 304,
+ NNG_HTTP_STATUS_USE_PROXY = 305,
+ NNG_HTTP_STATUS_TEMPORARY_REDIRECT = 307,
+ NNG_HTTP_STATUS_PERMANENT_REDIRECT = 308,
+ NNG_HTTP_STATUS_BAD_REQUEST = 400,
+ NNG_HTTP_STATUS_UNAUTHORIZED = 401,
+ NNG_HTTP_STATUS_PAYMENT_REQUIRED = 402,
+ NNG_HTTP_STATUS_FORBIDDEN = 403,
+ NNG_HTTP_STATUS_NOT_FOUND = 404,
+ NNG_HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
+ NNG_HTTP_STATUS_NOT_ACCEPTABLE = 406,
+ NNG_HTTP_STATUS_PROXY_AUTH_REQUIRED = 407,
+ NNG_HTTP_STATUS_REQUEST_TIMEOUT = 408,
+ NNG_HTTP_STATUS_CONFLICT = 409,
+ NNG_HTTP_STATUS_GONE = 410,
+ NNG_HTTP_STATUS_LENGTH_REQUIRED = 411,
+ NNG_HTTP_STATUS_PRECONDITION_FAILED = 412,
+ NNG_HTTP_STATUS_PAYLOAD_TOO_LARGE = 413,
+ NNG_HTTP_STATUS_ENTITY_TOO_LONG = 414,
+ NNG_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
+ NNG_HTTP_STATUS_RANGE_NOT_SATISFIABLE = 416,
+ NNG_HTTP_STATUS_EXPECTATION_FAILED = 417,
+ NNG_HTTP_STATUS_TEAPOT = 418,
+ NNG_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
+ NNG_HTTP_STATUS_LOCKED = 423,
+ NNG_HTTP_STATUS_FAILED_DEPENDENCY = 424,
+ NNG_HTTP_STATUS_UPGRADE_REQUIRED = 426,
+ NNG_HTTP_STATUS_PRECONDITION_REQUIRED = 428,
+ NNG_HTTP_STATUS_TOO_MANY_REQUESTS = 429,
+ NNG_HTTP_STATUS_HEADERS_TOO_LARGE = 431,
+ NNG_HTTP_STATUS_UNAVAIL_LEGAL_REASONS = 451,
+ NNG_HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
+ NNG_HTTP_STATUS_NOT_IMPLEMENTED = 501,
+ NNG_HTTP_STATUS_BAD_GATEWAY = 502,
+ NNG_HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
+ NNG_HTTP_STATUS_GATEWAY_TIMEOUT = 504,
+ NNG_HTTP_STATUS_HTTP_VERSION_NOT_SUPP = 505,
+ NNG_HTTP_STATUS_VARIANT_ALSO_NEGOTIATES = 506,
+ NNG_HTTP_STATUS_INSUFFICIENT_STORAGE = 507,
+ NNG_HTTP_STATUS_LOOP_DETECTED = 508,
+ NNG_HTTP_STATUS_NOT_EXTENDED = 510,
+ NNG_HTTP_STATUS_NETWORK_AUTH_REQUIRED = 511,
+}
+----
+
+TIP: When displaying status information to users (or logging such information),
+consider also including the "reason phrase" obtained with
+<<nng_http_res_get_reason#,nng_http_res_get_reason(3)>>.
+
+== RETURN VALUES
+
+HTTP status code.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_get_reason#,nng_http_res_get_reason(3)>>,
+<<nng_http_res_set_status#,nng_http_res_set_status(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_get_version.adoc b/docs/nng_http_res_get_version.adoc
new file mode 100644
index 00000000..740dd661
--- /dev/null
+++ b/docs/nng_http_res_get_version.adoc
@@ -0,0 +1,53 @@
+= nng_http_res_get_version(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_get_version - return HTTP response protocol version
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+const char *nng_http_res_get_version(nng_http_res *res);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_get_version()` returns a string representing the HTTP
+protocol version associated with the request _res_, such as "HTTP/1.1".
+
+
+== RETURN VALUES
+
+Response version as a string.
+
+== ERRORS
+
+None.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_set_version#,nng_http_res_set_version(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_set_data.adoc b/docs/nng_http_res_set_data.adoc
new file mode 100644
index 00000000..a2f29ba1
--- /dev/null
+++ b/docs/nng_http_res_set_data.adoc
@@ -0,0 +1,70 @@
+= nng_http_res_set_data(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_data - set HTTP response body
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_data(nng_http_res *res, const void *body, size_t size);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_set_data()` sets the HTTP body associated with
+the response _res_ to _body_, and the size of the body to _size_.
+This body data will be automatically sent with the response when it
+is sent using <<nng_http_conn_write_res#,nni_http_conn_write_res(3)>>.
+
+This also updates the relevant `Content-Length` header of _res_.
+
+NOTE: The current framework does not support sending data via chunked
+transfer-encoding.
+
+The _body_ is *not* copied, and the caller must ensure that it is available
+until the _res_ is deallocated.
+
+TIP: To have a local copy allocated with _res_ that will be automatically
+deallocated when _res_ is freed,
+see <<nng_http_res_copy_data#,nng_http_res_copy_data(3)>>.
+
+TIP: It is a good idea to also set the `Content-Type` header.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_conn_write_res#,nng_http_conn_write_res(3)>>,
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_copy_data#,nng_http_res_copy_data(3)>>,
+<<nng_http_res_set_header#,nng_http_res_set_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_set_header.adoc b/docs/nng_http_res_set_header.adoc
new file mode 100644
index 00000000..630d9fc4
--- /dev/null
+++ b/docs/nng_http_res_set_header.adoc
@@ -0,0 +1,63 @@
+= nng_http_res_set_header(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_header - set HTTP response header
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_header(nng_http_res *res, const char *key,
+ const char *val);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_set_header()` sets the HTTP header for the response
+_res_ and the _key_ to the _val_. The _key_ and _val_ are copied.
+Any previous header with the same _key_ is replaced.
+
+TIP: See <<nng_http_res_add_header#,nng_http_res_add_header(3)>> to
+add additional headers with the same _key_ without replacing them.
+
+The value of _key_ is case insensitive, and should not include the final
+colon in an HTTP header. For example, specifying `Host` or `hOSt` are
+equivalent, whereas the value `Host:` is not a legal header key.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_add_header#,nng_http_res_add_header(3)>>,
+<<nng_http_res_del_header#,nng_http_res_del_header(3)>>,
+<<nng_http_res_get_header#,nng_http_res_get_header(3)>>,
+<<nng#,nng(7)>>
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_set_reason.adoc b/docs/nng_http_res_set_reason.adoc
new file mode 100644
index 00000000..7321badb
--- /dev/null
+++ b/docs/nng_http_res_set_reason.adoc
@@ -0,0 +1,63 @@
+= nng_http_res_set_reason(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_reason - set HTTP response reason
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_reason(nng_http_res *res, const char *reason);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_set_reason()` sets the human readable "reason phrase"
+associated with the response _res_ to _reason_.
+
+If the value of _reason_ is `NULL` (the default), then a default reason
+phrase is supplied based upon the value of the status code (see
+<<nng_http_res_set_status#,nng_http_res_set_status(3)>>).
+
+TIP: The _reason_ is never parsed automatically, but it can be a hint for humans
+ to help them understand the nature of any erroroneous result.
+
+A local copy of the _reason_ is made in the response _res_.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_get_reason#,nng_http_req_get_reason(3)>>,
+<<nng_http_res_set_status#,nng_http_req_set_status(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_set_status.adoc b/docs/nng_http_res_set_status.adoc
new file mode 100644
index 00000000..f8a88c8e
--- /dev/null
+++ b/docs/nng_http_res_set_status.adoc
@@ -0,0 +1,131 @@
+= nng_http_res_set_status(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_status - set HTTP response status
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_status(nng_http_res *res, uint16_t status);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_set_status()` sets the numeric HTTP status code
+associated with the response _res_ to _status_. The default value
+for a newly allocated response is 200 (`NNG_HTTP_STATUS_OK`).
+
+The _status_ is not verified, so the caller should take care to ensure
+that only a valid code is supplied.
+
+For convenience, a number of predefined symbols are available.
+
+[source, c]
+----
+enum {
+ NNG_HTTP_STATUS_CONTINUE = 100,
+ NNG_HTTP_STATUS_SWITCHING = 101,
+ NNG_HTTP_STATUS_PROCESSING = 102,
+ NNG_HTTP_STATUS_OK = 200,
+ NNG_HTTP_STATUS_CREATED = 201,
+ NNG_HTTP_STATUS_ACCEPTED = 202,
+ NNG_HTTP_STATUS_NOT_AUTHORITATIVE = 203,
+ NNG_HTTP_STATUS_NO_CONTENT = 204,
+ NNG_HTTP_STATUS_RESET_CONTENT = 205,
+ NNG_HTTP_STATUS_PARTIAL_CONTENT = 206,
+ NNG_HTTP_STATUS_MULTI_STATUS = 207,
+ NNG_HTTP_STATUS_ALREADY_REPORTED = 208,
+ NNG_HTTP_STATUS_IM_USED = 226,
+ NNG_HTTP_STATUS_MULTIPLE_CHOICES = 300,
+ NNG_HTTP_STATUS_STATUS_MOVED_PERMANENTLY = 301,
+ NNG_HTTP_STATUS_FOUND = 302,
+ NNG_HTTP_STATUS_SEE_OTHER = 303,
+ NNG_HTTP_STATUS_NOT_MODIFIED = 304,
+ NNG_HTTP_STATUS_USE_PROXY = 305,
+ NNG_HTTP_STATUS_TEMPORARY_REDIRECT = 307,
+ NNG_HTTP_STATUS_PERMANENT_REDIRECT = 308,
+ NNG_HTTP_STATUS_BAD_REQUEST = 400,
+ NNG_HTTP_STATUS_UNAUTHORIZED = 401,
+ NNG_HTTP_STATUS_PAYMENT_REQUIRED = 402,
+ NNG_HTTP_STATUS_FORBIDDEN = 403,
+ NNG_HTTP_STATUS_NOT_FOUND = 404,
+ NNG_HTTP_STATUS_METHOD_NOT_ALLOWED = 405,
+ NNG_HTTP_STATUS_NOT_ACCEPTABLE = 406,
+ NNG_HTTP_STATUS_PROXY_AUTH_REQUIRED = 407,
+ NNG_HTTP_STATUS_REQUEST_TIMEOUT = 408,
+ NNG_HTTP_STATUS_CONFLICT = 409,
+ NNG_HTTP_STATUS_GONE = 410,
+ NNG_HTTP_STATUS_LENGTH_REQUIRED = 411,
+ NNG_HTTP_STATUS_PRECONDITION_FAILED = 412,
+ NNG_HTTP_STATUS_PAYLOAD_TOO_LARGE = 413,
+ NNG_HTTP_STATUS_ENTITY_TOO_LONG = 414,
+ NNG_HTTP_STATUS_UNSUPPORTED_MEDIA_TYPE = 415,
+ NNG_HTTP_STATUS_RANGE_NOT_SATISFIABLE = 416,
+ NNG_HTTP_STATUS_EXPECTATION_FAILED = 417,
+ NNG_HTTP_STATUS_TEAPOT = 418,
+ NNG_HTTP_STATUS_UNPROCESSABLE_ENTITY = 422,
+ NNG_HTTP_STATUS_LOCKED = 423,
+ NNG_HTTP_STATUS_FAILED_DEPENDENCY = 424,
+ NNG_HTTP_STATUS_UPGRADE_REQUIRED = 426,
+ NNG_HTTP_STATUS_PRECONDITION_REQUIRED = 428,
+ NNG_HTTP_STATUS_TOO_MANY_REQUESTS = 429,
+ NNG_HTTP_STATUS_HEADERS_TOO_LARGE = 431,
+ NNG_HTTP_STATUS_UNAVAIL_LEGAL_REASONS = 451,
+ NNG_HTTP_STATUS_INTERNAL_SERVER_ERROR = 500,
+ NNG_HTTP_STATUS_NOT_IMPLEMENTED = 501,
+ NNG_HTTP_STATUS_BAD_GATEWAY = 502,
+ NNG_HTTP_STATUS_SERVICE_UNAVAILABLE = 503,
+ NNG_HTTP_STATUS_GATEWAY_TIMEOUT = 504,
+ NNG_HTTP_STATUS_HTTP_VERSION_NOT_SUPP = 505,
+ NNG_HTTP_STATUS_VARIANT_ALSO_NEGOTIATES = 506,
+ NNG_HTTP_STATUS_INSUFFICIENT_STORAGE = 507,
+ NNG_HTTP_STATUS_LOOP_DETECTED = 508,
+ NNG_HTTP_STATUS_NOT_EXTENDED = 510,
+ NNG_HTTP_STATUS_NETWORK_AUTH_REQUIRED = 511,
+}
+----
+
+Please see the relevant HTTP RFCs for the semantics and correct
+use of these status codes.
+
+TIP: It is a good idea to also set the "reason phrase" with
+<<nng_http_res_set_reason#,nng_http_set_reason(3)>>. This
+will help any humans who may have to diagnose any failure.
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_res_get_status#,nng_http_req_get_status(3)>>,
+<<nng_http_res_set_reason#,nng_http_req_set_reason(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].
diff --git a/docs/nng_http_res_set_version.adoc b/docs/nng_http_res_set_version.adoc
new file mode 100644
index 00000000..14ed046d
--- /dev/null
+++ b/docs/nng_http_res_set_version.adoc
@@ -0,0 +1,64 @@
+= nng_http_res_set_version(3)
+:doctype: manpage
+:manmanual: nng
+:mansource: nng
+:manvolnum: 3
+:copyright: Copyright 2018 Staysail Systems, Inc. <info@staysail.tech> \
+ Copyright 2018 Capitar IT Group BV <info@capitar.com> \
+ This software is supplied under the terms of the MIT License, a \
+ copy of which should be located in the distribution where this \
+ file was obtained (LICENSE.txt). A copy of the license may also \
+ be found online at https://opensource.org/licenses/MIT.
+
+== NAME
+
+nng_http_res_set_version - set HTTP response protocol version
+
+== SYNOPSIS
+
+[source, c]
+-----------
+#include <nng/nng.h>
+
+int nng_http_res_set_version(nng_http_res *res, const char *version);
+-----------
+
+== DESCRIPTION
+
+The `nng_http_res_set_version()` sets the HTTP protocol version associated with
+the response _res_ to _version_. The _version_ must be a string containing
+a valid HTTP protocol version, such as "HTTP/1.0". The default value is
+"HTTP/1.1".
+
+A local copy of the _version_ is made in the response _res_.
+
+NOTE: No validation of the version supplied is performed.
+
+NOTE: The library does not contain support for versions of HTTP other than
+"HTTP/1.0" and "HTTP/1.1". Specifying any other version may result in
+unspecified behavior.
+
+
+== RETURN VALUES
+
+This function returns 0 on success, and non-zero otherwise.
+
+== ERRORS
+
+`NNG_ENOMEM`:: Insufficient memory to perform the operation.
+`NNG_ENOTSUP`:: No support for HTTP in the library.
+
+== SEE ALSO
+
+<<nng_http_res_alloc#,nng_http_res_alloc(3)>>,
+<<nng_http_req_get_version#,nng_http_req_get_version(3)>>,
+<<nng#,nng(7)>>
+
+
+== COPYRIGHT
+
+Copyright 2018 mailto:info@staysail.tech[Staysail Systems, Inc.] +
+Copyright 2018 mailto:info@capitar.com[Capitar IT Group BV]
+
+This document is supplied under the terms of the
+https://opensource.org/licenses/MIT[MIT License].