You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pulsar.apache.org by mm...@apache.org on 2018/06/09 08:28:03 UTC

[incubator-pulsar] branch asf-site updated: Updated site at revision 2bf387d

This is an automated email from the ASF dual-hosted git repository.

mmerli pushed a commit to branch asf-site
in repository https://gitbox.apache.org/repos/asf/incubator-pulsar.git


The following commit(s) were added to refs/heads/asf-site by this push:
     new 20d62cb  Updated site at revision 2bf387d
20d62cb is described below

commit 20d62cb6bb17c1d1867f7a305da4c8ec85620405
Author: jenkins <bu...@apache.org>
AuthorDate: Sat Jun 9 08:27:53 2018 +0000

    Updated site at revision 2bf387d
---
 content/api/admin/index-all.html                   |    7 +
 .../org/apache/pulsar/client/admin/Functions.html  |   48 +-
 .../pulsar/common/policies/data/Policies.html      |   43 +-
 content/api/cpp/annotated.html                     |   46 +-
 content/api/cpp/authentication_8h_source.html      |    2 +-
 content/api/cpp/classes.html                       |   31 +-
 ...ml => classpulsar_1_1_auth_athenz-members.html} |   22 +-
 ...ctory.html => classpulsar_1_1_auth_athenz.html} |   76 +-
 content/api/cpp/classpulsar_1_1_auth_athenz.png    |  Bin 0 -> 584 bytes
 .../cpp/classpulsar_1_1_auth_factory-members.html  |    2 +-
 content/api/cpp/classpulsar_1_1_auth_factory.html  |   40 +-
 ....html => classpulsar_1_1_auth_tls-members.html} |   21 +-
 ..._factory.html => classpulsar_1_1_auth_tls.html} |   73 +-
 content/api/cpp/classpulsar_1_1_auth_tls.png       |  Bin 0 -> 556 bytes
 .../api/cpp/classpulsar_1_1_authentication.html    |   10 +
 content/api/cpp/classpulsar_1_1_authentication.png |  Bin 0 -> 837 bytes
 .../api/cpp/classpulsar_1_1_consumer-members.html  |    2 +
 content/api/cpp/classpulsar_1_1_consumer.html      |   70 +
 .../api/cpp/client__configuration_8h_source.html   |    2 +-
 content/api/cpp/consumer_8h_source.html            |    2 +-
 content/api/cpp/files.html                         |   49 +-
 content/api/cpp/functions.html                     |    9 +-
 content/api/cpp/functions_func.html                |    9 +-
 content/api/cpp/hierarchy.html                     |    4 +-
 content/api/cpp/index.html                         |    2 +-
 content/api/cpp/message_8h_source.html             |    2 +-
 content/api/cpp/namespacepulsar.html               |    4 +
 content/api/cpp/search/all_0.js                    |    4 +-
 content/api/cpp/search/all_2.js                    |    2 +-
 content/api/cpp/search/all_c.js                    |    2 +
 content/api/cpp/search/classes_0.js                |    4 +-
 content/api/cpp/search/functions_2.js              |    2 +-
 content/api/cpp/search/functions_b.js              |    2 +
 ...n_8h_source.html => string__map_8h_source.html} |    6 +-
 content/api/python/functions/context.m.html        | 1652 ++++++++++++++++++++
 content/api/python/functions/function.m.html       | 1139 ++++++++++++++
 content/api/python/functions/index.html            | 1075 +++++++++++++
 content/api/python/functions/serde.m.html          | 1375 ++++++++++++++++
 content/api/python/index.html                      |   40 +-
 .../docs/latest/reference/Configuration/index.html |   56 +
 content/docs/latest/reference/RestApi/index.html   |    4 +-
 content/download/index.html                        |   20 +-
 content/ja/reference/Configuration/index.html      |   56 +
 content/ja/reference/RestApi/index.html            |    4 +-
 44 files changed, 5807 insertions(+), 212 deletions(-)

diff --git a/content/api/admin/index-all.html b/content/api/admin/index-all.html
index 3261654..4890083 100644
--- a/content/api/admin/index-all.html
+++ b/content/api/admin/index-all.html
@@ -290,6 +290,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/client/admin/PulsarAdmin.html#clusters--">clusters()</a></span> - Method in class org.apache.pulsar.client.admin.<a href="org/apache/pulsar/client/admin/PulsarAdmin.html" title="class in org.apache.pulsar.client.admin">PulsarAdmin</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/common/policies/data/Policies.html#compaction_threshold">compaction_threshold</a></span> - Variable in class org.apache.pulsar.common.policies.data.<a href="org/apache/pulsar/common/policies/data/Policies.html" title="class in org.apache.pulsar.common.policies.data">Policies</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/client/admin/Topics.html#compactionStatus-java.lang.String-">compactionStatus(String)</a></span> - Method in interface org.apache.pulsar.client.admin.<a href="org/apache/pulsar/client/admin/Topics.html" title="interface in org.apache.pulsar.client.admin">Topics</a></dt>
 <dd>
 <div class="block">Check the status of an ongoing compaction for a topic.</div>
@@ -332,6 +334,11 @@
 <dd>
 <div class="block">Create a new function.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/pulsar/client/admin/Functions.html#createFunctionWithUrl-FunctionDetails-java.lang.String-">createFunctionWithUrl(FunctionDetails, String)</a></span> - Method in interface org.apache.pulsar.client.admin.<a href="org/apache/pulsar/client/admin/Functions.html" title="interface in org.apache.pulsar.client.admin">Functions</a></dt>
+<dd>
+<div class="block">
+ Create a new function by providing url from which fun-pkg can be downloaded.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/pulsar/client/admin/Namespaces.html#createNamespace-java.lang.String-int-">createNamespace(String, int)</a></span> - Method in interface org.apache.pulsar.client.admin.<a href="org/apache/pulsar/client/admin/Namespaces.html" title="interface in org.apache.pulsar.client.admin">Namespaces</a></dt>
 <dd>
 <div class="block">Create a new namespace.</div>
diff --git a/content/api/admin/org/apache/pulsar/client/admin/Functions.html b/content/api/admin/org/apache/pulsar/client/admin/Functions.html
index a40ef7a..4a75f0d 100644
--- a/content/api/admin/org/apache/pulsar/client/admin/Functions.html
+++ b/content/api/admin/org/apache/pulsar/client/admin/Functions.html
@@ -17,7 +17,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6};
+var methods = {"i0":6,"i1":6,"i2":6,"i3":6,"i4":6,"i5":6,"i6":6,"i7":6,"i8":6,"i9":6};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -128,20 +128,28 @@ var activeTableTab = "activeTableTab";
 </tr>
 <tr id="i1" class="rowColor">
 <td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#createFunctionWithUrl-FunctionDetails-java.lang.String-">createFunctionWithUrl</a></span>(FunctionDetails&nbsp;functionDetails,
+                     String&nbsp;pkgUrl)</code>
+<div class="block">
+ Create a new function by providing url from which fun-pkg can be downloaded.</div>
+</td>
+</tr>
+<tr id="i2" class="altColor">
+<td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#deleteFunction-java.lang.String-java.lang.String-java.lang.String-">deleteFunction</a></span>(String&nbsp;tenant,
               String&nbsp;namespace,
               String&nbsp;function)</code>
 <div class="block">Delete an existing function</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#downloadFunction-java.lang.String-java.lang.String-">downloadFunction</a></span>(String&nbsp;destinationFile,
                 String&nbsp;path)</code>
 <div class="block">Download Function Code.</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code>FunctionDetails</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#getFunction-java.lang.String-java.lang.String-java.lang.String-">getFunction</a></span>(String&nbsp;tenant,
            String&nbsp;namespace,
@@ -149,14 +157,14 @@ var activeTableTab = "activeTableTab";
 <div class="block">Get the configuration for the specified function.</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>List&lt;String&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#getFunctions-java.lang.String-java.lang.String-">getFunctions</a></span>(String&nbsp;tenant,
             String&nbsp;namespace)</code>
 <div class="block">Get the list of functions.</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>FunctionStatusList</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#getFunctionStatus-java.lang.String-java.lang.String-java.lang.String-">getFunctionStatus</a></span>(String&nbsp;tenant,
                  String&nbsp;namespace,
@@ -164,7 +172,7 @@ var activeTableTab = "activeTableTab";
 <div class="block">Gets the current status of a function.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#triggerFunction-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-java.lang.String-">triggerFunction</a></span>(String&nbsp;tenant,
                String&nbsp;namespace,
@@ -175,14 +183,14 @@ var activeTableTab = "activeTableTab";
 <div class="block">Triggers the function by writing to the input topic.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#updateFunction-FunctionDetails-java.lang.String-">updateFunction</a></span>(FunctionDetails&nbsp;functionDetails,
               String&nbsp;fileName)</code>
 <div class="block">Update the configuration for a function.</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/pulsar/client/admin/Functions.html#uploadFunction-java.lang.String-java.lang.String-">uploadFunction</a></span>(String&nbsp;sourceFile,
               String&nbsp;path)</code>
@@ -278,6 +286,30 @@ var activeTableTab = "activeTableTab";
 </dl>
 </li>
 </ul>
+<a name="createFunctionWithUrl-FunctionDetails-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>createFunctionWithUrl</h4>
+<pre>void&nbsp;createFunctionWithUrl(FunctionDetails&nbsp;functionDetails,
+                           String&nbsp;pkgUrl)
+                    throws <a href="../../../../../org/apache/pulsar/client/admin/PulsarAdminException.html" title="class in org.apache.pulsar.client.admin">PulsarAdminException</a></pre>
+<div class="block"><pre>
+ Create a new function by providing url from which fun-pkg can be downloaded. supported url: http/file
+ eg:
+ File: file:/dir/fileName.jar
+ Http: http://www.repo.com/fileName.jar
+ </pre></div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>functionDetails</code> - the function configuration object</dd>
+<dd><code>pkgUrl</code> - url from which pkg can be downloaded</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="../../../../../org/apache/pulsar/client/admin/PulsarAdminException.html" title="class in org.apache.pulsar.client.admin">PulsarAdminException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="updateFunction-FunctionDetails-java.lang.String-">
 <!--   -->
 </a>
diff --git a/content/api/admin/org/apache/pulsar/common/policies/data/Policies.html b/content/api/admin/org/apache/pulsar/common/policies/data/Policies.html
index 63d3c07..a8f29eb 100644
--- a/content/api/admin/org/apache/pulsar/common/policies/data/Policies.html
+++ b/content/api/admin/org/apache/pulsar/common/policies/data/Policies.html
@@ -148,62 +148,66 @@ extends Object</pre>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#clusterDispatchRate">clusterDispatchRate</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>long</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#compaction_threshold">compaction_threshold</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>Boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#deduplicationEnabled">deduplicationEnabled</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#deleted">deleted</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#encryption_required">encryption_required</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#FIRST_BOUNDARY">FIRST_BOUNDARY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static String</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#LAST_BOUNDARY">LAST_BOUNDARY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>Map&lt;String,Integer&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#latency_stats_sample_rate">latency_stats_sample_rate</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#max_consumers_per_subscription">max_consumers_per_subscription</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#max_consumers_per_topic">max_consumers_per_topic</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#max_producers_per_topic">max_producers_per_topic</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#message_ttl_in_seconds">message_ttl_in_seconds</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/pulsar/common/policies/data/PersistencePolicies.html" title="class in org.apache.pulsar.common.policies.data">PersistencePolicies</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#persistence">persistence</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>Set&lt;String&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#replication_clusters">replication_clusters</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/pulsar/common/policies/data/RetentionPolicies.html" title="class in org.apache.pulsar.common.policies.data">RetentionPolicies</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#retention_policies">retention_policies</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="../../../../../../org/apache/pulsar/common/policies/data/SubscriptionAuthMode.html" title="enum in org.apache.pulsar.common.policies.data">SubscriptionAuthMode</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#subscription_auth_mode">subscription_auth_mode</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>Map&lt;String,<a href="../../../../../../org/apache/pulsar/common/policies/data/DispatchRate.html" title="class in org.apache.pulsar.common.policies.data">DispatchRate</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/pulsar/common/policies/data/Policies.html#subscriptionDispatchRate">subscriptionDispatchRate</a></span></code>&nbsp;</td>
 </tr>
@@ -455,12 +459,21 @@ extends Object</pre>
 <a name="max_consumers_per_subscription">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>max_consumers_per_subscription</h4>
 <pre>public&nbsp;int max_consumers_per_subscription</pre>
 </li>
 </ul>
+<a name="compaction_threshold">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>compaction_threshold</h4>
+<pre>public&nbsp;long compaction_threshold</pre>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ========= CONSTRUCTOR DETAIL ======== -->
diff --git a/content/api/cpp/annotated.html b/content/api/cpp/annotated.html
index 9674cff..2e468cf 100644
--- a/content/api/cpp/annotated.html
+++ b/content/api/cpp/annotated.html
@@ -91,28 +91,30 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="textblock">Here are the classes, structs, unions and interfaces with brief descriptions:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
 <tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">N</span></span><a class="el" href="namespacepulsar.html" target="_self">pulsar</a></td><td class="desc"></td></tr>
-<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication.html" target="_self">Authentication</a></td><td class="desc"></td></tr>
-<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication_data_provider.html" target="_self">AuthenticationDataProvider</a></td><td class="desc"></td></tr>
-<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_factory.html" target="_self">AuthFactory</a></td><td class="desc"></td></tr>
-<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_broker_consumer_stats.html" target="_self">BrokerConsumerStats</a></td><td class="desc"></td></tr>
-<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_client.html" target="_self">Client</a></td><td class="desc"></td></tr>
-<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_client_configuration.html" target="_self">ClientConfiguration</a></td><td class="desc"></td></tr>
-<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_consumer.html" target="_self">Consumer</a></td><td class="desc"></td></tr>
-<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_consumer_configuration.html" target="_self">ConsumerConfiguration</a></td><td class="desc"></td></tr>
-<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_crypto_key_reader.html" target="_self">CryptoKeyReader</a></td><td class="desc"></td></tr>
-<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_deprecated_exception.html" target="_self">DeprecatedException</a></td><td class="desc"></td></tr>
-<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_encryption_key_info.html" target="_self">EncryptionKeyInfo</a></td><td class="desc"></td></tr>
-<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_logger.html" target="_self">Logger</a></td><td class="desc"></td></tr>
-<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_logger_factory.html" target="_self">LoggerFactory</a></td><td class="desc"></td></tr>
-<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message.html" target="_self">Message</a></td><td class="desc"></td></tr>
-<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_builder.html" target="_self">MessageBuilder</a></td><td class="desc"></td></tr>
-<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_id.html" target="_self">MessageId</a></td><td class="desc"></td></tr>
-<tr id="row_0_16_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_routing_policy.html" target="_self">MessageRoutingPolicy</a></td><td class="desc"></td></tr>
-<tr id="row_0_17_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_producer.html" target="_self">Producer</a></td><td class="desc"></td></tr>
-<tr id="row_0_18_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_producer_configuration.html" target="_self">ProducerConfiguration</a></td><td class="desc"></td></tr>
-<tr id="row_0_19_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_reader.html" target="_self">Reader</a></td><td class="desc"></td></tr>
-<tr id="row_0_20_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_reader_configuration.html" target="_self">ReaderConfiguration</a></td><td class="desc"></td></tr>
-<tr id="row_0_21_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_topic_metadata.html" target="_self">TopicMetadata</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_athenz.html" target="_self">AuthAthenz</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication.html" target="_self">Authentication</a></td><td class="desc"></td></tr>
+<tr id="row_0_2_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication_data_provider.html" target="_self">AuthenticationDataProvider</a></td><td class="desc"></td></tr>
+<tr id="row_0_3_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_factory.html" target="_self">AuthFactory</a></td><td class="desc"></td></tr>
+<tr id="row_0_4_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_tls.html" target="_self">AuthTls</a></td><td class="desc"></td></tr>
+<tr id="row_0_5_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_broker_consumer_stats.html" target="_self">BrokerConsumerStats</a></td><td class="desc"></td></tr>
+<tr id="row_0_6_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_client.html" target="_self">Client</a></td><td class="desc"></td></tr>
+<tr id="row_0_7_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_client_configuration.html" target="_self">ClientConfiguration</a></td><td class="desc"></td></tr>
+<tr id="row_0_8_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_consumer.html" target="_self">Consumer</a></td><td class="desc"></td></tr>
+<tr id="row_0_9_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_consumer_configuration.html" target="_self">ConsumerConfiguration</a></td><td class="desc"></td></tr>
+<tr id="row_0_10_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_crypto_key_reader.html" target="_self">CryptoKeyReader</a></td><td class="desc"></td></tr>
+<tr id="row_0_11_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_deprecated_exception.html" target="_self">DeprecatedException</a></td><td class="desc"></td></tr>
+<tr id="row_0_12_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_encryption_key_info.html" target="_self">EncryptionKeyInfo</a></td><td class="desc"></td></tr>
+<tr id="row_0_13_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_logger.html" target="_self">Logger</a></td><td class="desc"></td></tr>
+<tr id="row_0_14_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_logger_factory.html" target="_self">LoggerFactory</a></td><td class="desc"></td></tr>
+<tr id="row_0_15_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message.html" target="_self">Message</a></td><td class="desc"></td></tr>
+<tr id="row_0_16_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_builder.html" target="_self">MessageBuilder</a></td><td class="desc"></td></tr>
+<tr id="row_0_17_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_id.html" target="_self">MessageId</a></td><td class="desc"></td></tr>
+<tr id="row_0_18_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_message_routing_policy.html" target="_self">MessageRoutingPolicy</a></td><td class="desc"></td></tr>
+<tr id="row_0_19_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_producer.html" target="_self">Producer</a></td><td class="desc"></td></tr>
+<tr id="row_0_20_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_producer_configuration.html" target="_self">ProducerConfiguration</a></td><td class="desc"></td></tr>
+<tr id="row_0_21_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_reader.html" target="_self">Reader</a></td><td class="desc"></td></tr>
+<tr id="row_0_22_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_reader_configuration.html" target="_self">ReaderConfiguration</a></td><td class="desc"></td></tr>
+<tr id="row_0_23_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_topic_metadata.html" target="_self">TopicMetadata</a></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/content/api/cpp/authentication_8h_source.html b/content/api/cpp/authentication_8h_source.html
index 53715de..aa71ec5 100644
--- a/content/api/cpp/authentication_8h_source.html
+++ b/content/api/cpp/authentication_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">authentication.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/content/api/cpp/classes.html b/content/api/cpp/classes.html
index 02b34ab..4824401 100644
--- a/content/api/cpp/classes.html
+++ b/content/api/cpp/classes.html
@@ -91,26 +91,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|& [...]
 <table class="classindex">
 <tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;A&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classpulsar_1_1_client_configuration.html">ClientConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;L&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classpulsar_1_1_message_routing_policy.html">MessageRoutingPolicy</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classpulsar_1_1_message_builder.html">MessageBuilder</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_reader_configuration.html">ReaderConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;T&#160;&#160;</div></td></tr></table>
 </td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_consumer.html">Consumer</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
-</td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_authentication.html">Authentication</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_consumer_configuration.html">ConsumerConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_logger.html">Logger</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&# [...]
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_authentication_data_provider.html">AuthenticationDataProvider</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_crypto_key_reader.html">CryptoKeyReader</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_logger_factory.html">LoggerFactory</a> (<a class="el" href="names [...]
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
-</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classpulsar_1_1_producer_configuration.html">ProducerConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_auth_athenz.html">AuthAthenz</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_client.html">Client</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_encryption_key_info.html">EncryptionKeyInfo</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#16 [...]
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_authentication.html">Authentication</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_client_configuration.html">ClientConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&# [...]
+</td><td rowspan="2" valign="bottom"><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;P&#160;&#160;</div></td></tr></table>
+</td><td valign="top"><a class="el" href="classpulsar_1_1_topic_metadata.html">TopicMetadata</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td></tr>
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_authentication_data_provider.html">AuthenticationDataProvider</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_consumer.html">Consumer</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td></tr>
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_consumer_configuration.html">ConsumerConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_logger.html">Logger</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;& [...]
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_auth_tls.html">AuthTls</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_crypto_key_reader.html">CryptoKeyReader</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_logger_factory.html">LoggerFactory</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160 [...]
 <tr><td rowspan="2" valign="bottom"><a name="letter_B"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;B&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;D&#160;&#160;</div></td></tr></table>
+</td><td rowspan="2" valign="bottom"><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;M&#160;&#160;</div></td></tr></table>
 </td><td rowspan="2" valign="bottom"><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;R&#160;&#160;</div></td></tr></table>
 </td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_deprecated_exception.html">DeprecatedException</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_message.html">Message</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_broker_consumer_stats.html">BrokerConsumerStats</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td rowspan="2" valign="bottom"><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;E&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classpulsar_1_1_message_builder.html">MessageBuilder</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_reader.html">Reader</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td rowspan="2" valign="bottom"><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">&#160;&#160;C&#160;&#160;</div></td></tr></table>
-</td><td valign="top"><a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_reader_configuration.html">ReaderConfiguration</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_encryption_key_info.html">EncryptionKeyInfo</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td><td></td><td></td></tr>
-<tr><td valign="top"><a class="el" href="classpulsar_1_1_client.html">Client</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td></td><td></td><td></td><td></td></tr>
+<tr><td></td></tr>
+<tr><td valign="top"><a class="el" href="classpulsar_1_1_broker_consumer_stats.html">BrokerConsumerStats</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_deprecated_exception.html">DeprecatedException</a> (<a class="el" href="namespacepulsar.html">pulsar</a>)&#160;&#160;&#160;</td><td valign="top"><a class="el" href="classpulsar_1_1_message.html">Message</a> (<a class="el" href="namespacepulsar.html">pul [...]
 <tr><td></td><td></td><td></td><td></td><td></td></tr>
 </table>
 <div class="qindex"><a class="qindex" href="#letter_A">A</a>&#160;|&#160;<a class="qindex" href="#letter_B">B</a>&#160;|&#160;<a class="qindex" href="#letter_C">C</a>&#160;|&#160;<a class="qindex" href="#letter_D">D</a>&#160;|&#160;<a class="qindex" href="#letter_E">E</a>&#160;|&#160;<a class="qindex" href="#letter_L">L</a>&#160;|&#160;<a class="qindex" href="#letter_M">M</a>&#160;|&#160;<a class="qindex" href="#letter_P">P</a>&#160;|&#160;<a class="qindex" href="#letter_R">R</a>&#160;|& [...]
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory-members.html b/content/api/cpp/classpulsar_1_1_auth_athenz-members.html
similarity index 57%
copy from content/api/cpp/classpulsar_1_1_auth_factory-members.html
copy to content/api/cpp/classpulsar_1_1_auth_athenz-members.html
index fb721f3..d37ac45 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory-members.html
+++ b/content/api/cpp/classpulsar_1_1_auth_athenz-members.html
@@ -84,24 +84,26 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a></li>  </ul>
+<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_athenz.html">AuthAthenz</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">pulsar::AuthFactory Member List</div>  </div>
+<div class="title">pulsar::AuthAthenz Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, ParamMap &amp;params) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Disabled</b>() (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isShutdownHookRegistered_</b> (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>loadedLibrariesHandles_</b> (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>release_handles</b>() (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AuthAthenz</b>(AuthenticationDataPtr &amp;) (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>authData_</b> (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>Authentication</b>() (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>create</b>(ParamMap &amp;params) (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;authParamsString) (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getAuthData</b>(AuthenticationDataPtr &amp;authDataAthenz) const  (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getAuthMethodName</b>() const  (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~AuthAthenz</b>() (defined in <a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_athenz.html">pulsar::AuthAthenz</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Authentication</b>() (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory.html b/content/api/cpp/classpulsar_1_1_auth_athenz.html
similarity index 60%
copy from content/api/cpp/classpulsar_1_1_auth_factory.html
copy to content/api/cpp/classpulsar_1_1_auth_athenz.html
index 4954a5e..522a81a 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory.html
+++ b/content/api/cpp/classpulsar_1_1_auth_athenz.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.11"/>
-<title>pulsar-client-cpp: pulsar::AuthFactory Class Reference</title>
+<title>pulsar-client-cpp: pulsar::AuthAthenz Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -84,51 +84,61 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a></li>  </ul>
+<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_athenz.html">AuthAthenz</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
-<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
-<a href="classpulsar_1_1_auth_factory-members.html">List of all members</a>  </div>
+<a href="classpulsar_1_1_auth_athenz-members.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">pulsar::AuthFactory Class Reference</div>  </div>
+<div class="title">pulsar::AuthAthenz Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_authentication_8h_source.html">Authentication.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for pulsar::AuthAthenz:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classpulsar_1_1_auth_athenz.png" usemap="#pulsar::AuthAthenz_map" alt=""/>
+  <map id="pulsar::AuthAthenz_map" name="pulsar::AuthAthenz_map">
+<area href="classpulsar_1_1_authentication.html" alt="pulsar::Authentication" shape="rect" coords="0,0,133,24"/>
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:ab4ed3eadbc72cabc8ff942e0ebdc053d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab4ed3eadbc72cabc8ff942e0ebdc053d"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AuthAthenz</b> (AuthenticationDataPtr &amp;)</td></tr>
+<tr class="separator:ab4ed3eadbc72cabc8ff942e0ebdc053d"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a26aa4be56fd20b15823ce94250762ba6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a26aa4be56fd20b15823ce94250762ba6"></a>
+const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getAuthMethodName</b> () const </td></tr>
+<tr class="separator:a26aa4be56fd20b15823ce94250762ba6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a8a55e4f046f70abf3d5647ef0ffdd733"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8a55e4f046f70abf3d5647ef0ffdd733"></a>
+<a class="el" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getAuthData</b> (AuthenticationDataPtr &amp;authDataAthenz) const </td></tr>
+<tr class="separator:a8a55e4f046f70abf3d5647ef0ffdd733"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a430f22348c1a089dd8589d87c6accf41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430f22348c1a089dd8589d87c6accf41"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>Disabled</b> ()</td></tr>
-<tr class="separator:a430f22348c1a089dd8589d87c6accf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa99900a3f8ed1ee55900431cc784f624"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa99900a3f8ed1ee55900431cc784f624"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath)</td></tr>
-<tr class="separator:aa99900a3f8ed1ee55900431cc784f624"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0584dbbca158125a96e55506933d4d34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0584dbbca158125a96e55506933d4d34"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString)</td></tr>
-<tr class="separator:a0584dbbca158125a96e55506933d4d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a133e43b5cd7a7031bd5419f1f2d23625"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133e43b5cd7a7031bd5419f1f2d23625"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath, ParamMap &amp;params)</td></tr>
-<tr class="separator:a133e43b5cd7a7031bd5419f1f2d23625"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
-Static Protected Member Functions</h2></td></tr>
-<tr class="memitem:a313049ed4f9c7e587b7529b8b667e569"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a313049ed4f9c7e587b7529b8b667e569"></a>
-static void&#160;</td><td class="memItemRight" valign="bottom"><b>release_handles</b> ()</td></tr>
-<tr class="separator:a313049ed4f9c7e587b7529b8b667e569"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:acde69fc41668a27d12d558023aaed0d9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="acde69fc41668a27d12d558023aaed0d9"></a>
+static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (ParamMap &amp;params)</td></tr>
+<tr class="separator:acde69fc41668a27d12d558023aaed0d9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:afd40a525e1d8d61fc97880c2c8a958fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afd40a525e1d8d61fc97880c2c8a958fe"></a>
+static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;authParamsString)</td></tr>
+<tr class="separator:afd40a525e1d8d61fc97880c2c8a958fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
-Static Protected Attributes</h2></td></tr>
-<tr class="memitem:a6a3436cb14de4c90a3b02509410753fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a3436cb14de4c90a3b02509410753fd"></a>
-static bool&#160;</td><td class="memItemRight" valign="bottom"><b>isShutdownHookRegistered_</b></td></tr>
-<tr class="separator:a6a3436cb14de4c90a3b02509410753fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf8d4232884ae351e216935f1d229ee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf8d4232884ae351e216935f1d229ee6"></a>
-static std::vector&lt; void * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>loadedLibrariesHandles_</b></td></tr>
-<tr class="separator:abf8d4232884ae351e216935f1d229ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_classpulsar_1_1_authentication"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpulsar_1_1_authentication')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td></tr>
+<tr class="memitem:abac33d5c492826fb8a4bea05512c9f7c inherit pro_attribs_classpulsar_1_1_authentication"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abac33d5c492826fb8a4bea05512c9f7c"></a>
+AuthenticationDataPtr&#160;</td><td class="memItemRight" valign="bottom"><b>authData_</b></td></tr>
+<tr class="separator:abac33d5c492826fb8a4bea05512c9f7c inherit pro_attribs_classpulsar_1_1_authentication"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>Athenz implementation of Pulsar client authentication </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>include/pulsar/<a class="el" href="_authentication_8h_source.html">Authentication.h</a></li>
 </ul>
 </div><!-- contents -->
diff --git a/content/api/cpp/classpulsar_1_1_auth_athenz.png b/content/api/cpp/classpulsar_1_1_auth_athenz.png
new file mode 100644
index 0000000..d27f4a7
Binary files /dev/null and b/content/api/cpp/classpulsar_1_1_auth_athenz.png differ
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory-members.html b/content/api/cpp/classpulsar_1_1_auth_factory-members.html
index fb721f3..a68810a 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory-members.html
+++ b/content/api/cpp/classpulsar_1_1_auth_factory-members.html
@@ -95,7 +95,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <p>This is the complete list of members for <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624">create</a>(const std::string &amp;dynamicLibPath)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, ParamMap &amp;params) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>Disabled</b>() (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory.html b/content/api/cpp/classpulsar_1_1_auth_factory.html
index 4954a5e..f823e13 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory.html
+++ b/content/api/cpp/classpulsar_1_1_auth_factory.html
@@ -97,14 +97,15 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">pulsar::AuthFactory Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_authentication_8h_source.html">Authentication.h</a>&gt;</code></p>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
 <tr class="memitem:a430f22348c1a089dd8589d87c6accf41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430f22348c1a089dd8589d87c6accf41"></a>
 static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>Disabled</b> ()</td></tr>
 <tr class="separator:a430f22348c1a089dd8589d87c6accf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa99900a3f8ed1ee55900431cc784f624"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa99900a3f8ed1ee55900431cc784f624"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath)</td></tr>
+<tr class="memitem:aa99900a3f8ed1ee55900431cc784f624"><td class="memItemLeft" align="right" valign="top">static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624">create</a> (const std::string &amp;dynamicLibPath)</td></tr>
 <tr class="separator:aa99900a3f8ed1ee55900431cc784f624"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a0584dbbca158125a96e55506933d4d34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0584dbbca158125a96e55506933d4d34"></a>
 static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString)</td></tr>
@@ -128,6 +129,41 @@ static bool&#160;</td><td class="memItemRight" valign="bottom"><b>isShutdownHook
 static std::vector&lt; void * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>loadedLibrariesHandles_</b></td></tr>
 <tr class="separator:abf8d4232884ae351e216935f1d229ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a> is used to create instances of <a class="el" href="classpulsar_1_1_authentication.html">Authentication</a> class when configuring a <a class="el" href="classpulsar_1_1_client.html">Client</a> instance. It loads the authentication from an external plugin.</p>
+<p>To use authentication methods that are internally supported, you should use <code>AuthTls::create("my-cert.pem", "my-private.key")</code> or similar. </p>
+</div><h2 class="groupheader">Member Function Documentation</h2>
+<a class="anchor" id="aa99900a3f8ed1ee55900431cc784f624"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">static AuthenticationPtr pulsar::AuthFactory::create </td>
+          <td>(</td>
+          <td class="paramtype">const std::string &amp;&#160;</td>
+          <td class="paramname"><em>dynamicLibPath</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">static</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Create </p><dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">dynamicLibPath</td><td></td></tr>
+  </table>
+  </dd>
+</dl>
+<dl class="section return"><dt>Returns</dt><dd></dd></dl>
+
+</div>
+</div>
 <hr/>The documentation for this class was generated from the following file:<ul>
 <li>include/pulsar/<a class="el" href="_authentication_8h_source.html">Authentication.h</a></li>
 </ul>
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory-members.html b/content/api/cpp/classpulsar_1_1_auth_tls-members.html
similarity index 60%
copy from content/api/cpp/classpulsar_1_1_auth_factory-members.html
copy to content/api/cpp/classpulsar_1_1_auth_tls-members.html
index fb721f3..9c097af 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory-members.html
+++ b/content/api/cpp/classpulsar_1_1_auth_tls-members.html
@@ -84,24 +84,25 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a></li>  </ul>
+<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_tls.html">AuthTls</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">pulsar::AuthFactory Member List</div>  </div>
+<div class="title">pulsar::AuthTls Member List</div>  </div>
 </div><!--header-->
 <div class="contents">
 
-<p>This is the complete list of members for <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>, including all inherited members.</p>
+<p>This is the complete list of members for <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>, including all inherited members.</p>
 <table class="directory">
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>create</b>(const std::string &amp;dynamicLibPath, ParamMap &amp;params) (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>Disabled</b>() (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>isShutdownHookRegistered_</b> (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0"><td class="entry"><b>loadedLibrariesHandles_</b> (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
-  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>release_handles</b>() (defined in <a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_factory.html">pulsar::AuthFactory</a></td><td class="entry"><span class="mlabel">protected</span><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>authData_</b> (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>Authentication</b>() (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">protected</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>AuthTls</b>(AuthenticationDataPtr &amp;) (defined in <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a></td><td class="entry"></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>create</b>(const std::string &amp;certificatePath, const std::string &amp;privateKeyPath) (defined in <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a></td><td class="entry"><span class="mlabel">static</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>getAuthData</b>(AuthenticationDataPtr &amp;authDataTls) const  (defined in <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>getAuthMethodName</b>() const  (defined in <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0" class="even"><td class="entry"><b>~Authentication</b>() (defined in <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
+  <tr bgcolor="#f0f0f0"><td class="entry"><b>~AuthTls</b>() (defined in <a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_auth_tls.html">pulsar::AuthTls</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
diff --git a/content/api/cpp/classpulsar_1_1_auth_factory.html b/content/api/cpp/classpulsar_1_1_auth_tls.html
similarity index 61%
copy from content/api/cpp/classpulsar_1_1_auth_factory.html
copy to content/api/cpp/classpulsar_1_1_auth_tls.html
index 4954a5e..69b4fd3 100644
--- a/content/api/cpp/classpulsar_1_1_auth_factory.html
+++ b/content/api/cpp/classpulsar_1_1_auth_tls.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.11"/>
-<title>pulsar-client-cpp: pulsar::AuthFactory Class Reference</title>
+<title>pulsar-client-cpp: pulsar::AuthTls Class Reference</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -84,51 +84,58 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 <div id="nav-path" class="navpath">
   <ul>
-<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a></li>  </ul>
+<li class="navelem"><a class="el" href="namespacepulsar.html">pulsar</a></li><li class="navelem"><a class="el" href="classpulsar_1_1_auth_tls.html">AuthTls</a></li>  </ul>
 </div>
 </div><!-- top -->
 <div class="header">
   <div class="summary">
+<a href="#pub-methods">Public Member Functions</a> &#124;
 <a href="#pub-static-methods">Static Public Member Functions</a> &#124;
-<a href="#pro-static-methods">Static Protected Member Functions</a> &#124;
-<a href="#pro-static-attribs">Static Protected Attributes</a> &#124;
-<a href="classpulsar_1_1_auth_factory-members.html">List of all members</a>  </div>
+<a href="classpulsar_1_1_auth_tls-members.html">List of all members</a>  </div>
   <div class="headertitle">
-<div class="title">pulsar::AuthFactory Class Reference</div>  </div>
+<div class="title">pulsar::AuthTls Class Reference</div>  </div>
 </div><!--header-->
 <div class="contents">
+
+<p><code>#include &lt;<a class="el" href="_authentication_8h_source.html">Authentication.h</a>&gt;</code></p>
+<div class="dynheader">
+Inheritance diagram for pulsar::AuthTls:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classpulsar_1_1_auth_tls.png" usemap="#pulsar::AuthTls_map" alt=""/>
+  <map id="pulsar::AuthTls_map" name="pulsar::AuthTls_map">
+<area href="classpulsar_1_1_authentication.html" alt="pulsar::Authentication" shape="rect" coords="0,0,133,24"/>
+</map>
+ </div></div>
 <table class="memberdecls">
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
+Public Member Functions</h2></td></tr>
+<tr class="memitem:a288702412c2ed9dc55e293902d476767"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a288702412c2ed9dc55e293902d476767"></a>
+&#160;</td><td class="memItemRight" valign="bottom"><b>AuthTls</b> (AuthenticationDataPtr &amp;)</td></tr>
+<tr class="separator:a288702412c2ed9dc55e293902d476767"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a4cb16de5740f8153696b7b82e681dac9"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4cb16de5740f8153696b7b82e681dac9"></a>
+const std::string&#160;</td><td class="memItemRight" valign="bottom"><b>getAuthMethodName</b> () const </td></tr>
+<tr class="separator:a4cb16de5740f8153696b7b82e681dac9"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ad5be6123439f540fcbffe9598adc239b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad5be6123439f540fcbffe9598adc239b"></a>
+<a class="el" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><b>getAuthData</b> (AuthenticationDataPtr &amp;authDataTls) const </td></tr>
+<tr class="separator:ad5be6123439f540fcbffe9598adc239b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+</table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
 Static Public Member Functions</h2></td></tr>
-<tr class="memitem:a430f22348c1a089dd8589d87c6accf41"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a430f22348c1a089dd8589d87c6accf41"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>Disabled</b> ()</td></tr>
-<tr class="separator:a430f22348c1a089dd8589d87c6accf41"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:aa99900a3f8ed1ee55900431cc784f624"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa99900a3f8ed1ee55900431cc784f624"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath)</td></tr>
-<tr class="separator:aa99900a3f8ed1ee55900431cc784f624"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a0584dbbca158125a96e55506933d4d34"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a0584dbbca158125a96e55506933d4d34"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath, const std::string &amp;authParamsString)</td></tr>
-<tr class="separator:a0584dbbca158125a96e55506933d4d34"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:a133e43b5cd7a7031bd5419f1f2d23625"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a133e43b5cd7a7031bd5419f1f2d23625"></a>
-static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;dynamicLibPath, ParamMap &amp;params)</td></tr>
-<tr class="separator:a133e43b5cd7a7031bd5419f1f2d23625"><td class="memSeparator" colspan="2">&#160;</td></tr>
-</table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-methods"></a>
-Static Protected Member Functions</h2></td></tr>
-<tr class="memitem:a313049ed4f9c7e587b7529b8b667e569"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a313049ed4f9c7e587b7529b8b667e569"></a>
-static void&#160;</td><td class="memItemRight" valign="bottom"><b>release_handles</b> ()</td></tr>
-<tr class="separator:a313049ed4f9c7e587b7529b8b667e569"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:ac32274cb7d7095cfcd35fcebcf277d5b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ac32274cb7d7095cfcd35fcebcf277d5b"></a>
+static AuthenticationPtr&#160;</td><td class="memItemRight" valign="bottom"><b>create</b> (const std::string &amp;certificatePath, const std::string &amp;privateKeyPath)</td></tr>
+<tr class="separator:ac32274cb7d7095cfcd35fcebcf277d5b"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
-<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-static-attribs"></a>
-Static Protected Attributes</h2></td></tr>
-<tr class="memitem:a6a3436cb14de4c90a3b02509410753fd"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a6a3436cb14de4c90a3b02509410753fd"></a>
-static bool&#160;</td><td class="memItemRight" valign="bottom"><b>isShutdownHookRegistered_</b></td></tr>
-<tr class="separator:a6a3436cb14de4c90a3b02509410753fd"><td class="memSeparator" colspan="2">&#160;</td></tr>
-<tr class="memitem:abf8d4232884ae351e216935f1d229ee6"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abf8d4232884ae351e216935f1d229ee6"></a>
-static std::vector&lt; void * &gt;&#160;</td><td class="memItemRight" valign="bottom"><b>loadedLibrariesHandles_</b></td></tr>
-<tr class="separator:abf8d4232884ae351e216935f1d229ee6"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="inherited"></a>
+Additional Inherited Members</h2></td></tr>
+<tr class="inherit_header pro_attribs_classpulsar_1_1_authentication"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classpulsar_1_1_authentication')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classpulsar_1_1_authentication.html">pulsar::Authentication</a></td></tr>
+<tr class="memitem:abac33d5c492826fb8a4bea05512c9f7c inherit pro_attribs_classpulsar_1_1_authentication"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abac33d5c492826fb8a4bea05512c9f7c"></a>
+AuthenticationDataPtr&#160;</td><td class="memItemRight" valign="bottom"><b>authData_</b></td></tr>
+<tr class="separator:abac33d5c492826fb8a4bea05512c9f7c inherit pro_attribs_classpulsar_1_1_authentication"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table>
-<hr/>The documentation for this class was generated from the following file:<ul>
+<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
+<div class="textblock"><p>TLS implementation of Pulsar client authentication </p>
+</div><hr/>The documentation for this class was generated from the following file:<ul>
 <li>include/pulsar/<a class="el" href="_authentication_8h_source.html">Authentication.h</a></li>
 </ul>
 </div><!-- contents -->
diff --git a/content/api/cpp/classpulsar_1_1_auth_tls.png b/content/api/cpp/classpulsar_1_1_auth_tls.png
new file mode 100644
index 0000000..936a732
Binary files /dev/null and b/content/api/cpp/classpulsar_1_1_auth_tls.png differ
diff --git a/content/api/cpp/classpulsar_1_1_authentication.html b/content/api/cpp/classpulsar_1_1_authentication.html
index 71d0f75..f108000 100644
--- a/content/api/cpp/classpulsar_1_1_authentication.html
+++ b/content/api/cpp/classpulsar_1_1_authentication.html
@@ -97,6 +97,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">pulsar::Authentication Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div>  </div>
 </div><!--header-->
 <div class="contents">
+<div class="dynheader">
+Inheritance diagram for pulsar::Authentication:</div>
+<div class="dyncontent">
+ <div class="center">
+  <img src="classpulsar_1_1_authentication.png" usemap="#pulsar::Authentication_map" alt=""/>
+  <map id="pulsar::Authentication_map" name="pulsar::Authentication_map">
+<area href="classpulsar_1_1_auth_athenz.html" alt="pulsar::AuthAthenz" shape="rect" coords="0,56,133,80"/>
+<area href="classpulsar_1_1_auth_tls.html" alt="pulsar::AuthTls" shape="rect" coords="143,56,276,80"/>
+</map>
+ </div></div>
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
 Public Member Functions</h2></td></tr>
diff --git a/content/api/cpp/classpulsar_1_1_authentication.png b/content/api/cpp/classpulsar_1_1_authentication.png
new file mode 100644
index 0000000..bf77d9d
Binary files /dev/null and b/content/api/cpp/classpulsar_1_1_authentication.png differ
diff --git a/content/api/cpp/classpulsar_1_1_consumer-members.html b/content/api/cpp/classpulsar_1_1_consumer-members.html
index 936189a..6ed3115 100644
--- a/content/api/cpp/classpulsar_1_1_consumer-members.html
+++ b/content/api/cpp/classpulsar_1_1_consumer-members.html
@@ -121,6 +121,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
   <tr><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#ace9475b70f37c91df5b442f41058370e">receive</a>(Message &amp;msg, int timeoutMs)</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#a3d60ee12b0e9766d60c3a8e08a61287a">redeliverUnacknowledgedMessages</a>()</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
   <tr bgcolor="#f0f0f0"><td class="entry"><b>resumeMessageListener</b>() (defined in <a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a>)</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
+  <tr class="even"><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">seek</a>(const MessageId &amp;msgId)</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
+  <tr><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5">seekAsync</a>(const MessageId &amp;msgId, ResultCallback callback)</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"><span class="mlabel">virtual</span></td></tr>
   <tr class="even"><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#a542ca0a9473a03ccf8bd8aeed24de490">unsubscribe</a>()</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
   <tr><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html#a8691920cae838418f33f13690a72771d">unsubscribeAsync</a>(ResultCallback callback)</td><td class="entry"><a class="el" href="classpulsar_1_1_consumer.html">pulsar::Consumer</a></td><td class="entry"></td></tr>
 </table></div><!-- contents -->
diff --git a/content/api/cpp/classpulsar_1_1_consumer.html b/content/api/cpp/classpulsar_1_1_consumer.html
index 4f3c41d..fa12291 100644
--- a/content/api/cpp/classpulsar_1_1_consumer.html
+++ b/content/api/cpp/classpulsar_1_1_consumer.html
@@ -151,6 +151,10 @@ void&#160;</td><td class="memItemRight" valign="bottom"><b>closeAsync</b> (<a cl
 <tr class="separator:a617639e11e05ecba3d013d831578d19d"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:a01e55f7906b6922fa069d84f5459af4b"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_consumer.html#a01e55f7906b6922fa069d84f5459af4b">getBrokerConsumerStatsAsync</a> (BrokerConsumerStatsCallback callback)</td></tr>
 <tr class="separator:a01e55f7906b6922fa069d84f5459af4b"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a949eda4ed6de3ecc2e4f793cce1dc06c"><td class="memItemLeft" align="right" valign="top"><a class="el" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">seek</a> (const <a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> &amp;msgId)</td></tr>
+<tr class="separator:a949eda4ed6de3ecc2e4f793cce1dc06c"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:a52bb7deeca9c8376de61c88bb5db24e5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5">seekAsync</a> (const <a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> &amp;msgId, <a class="el" href="namespacepulsar.html#a471fb397a128f0e2891d5979f2282e2d">ResultCallback</a> callback)</td></tr>
+<tr class="separator:a52bb7deeca9c8376de61c88bb5db24e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
 </table><table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="friends"></a>
 Friends</h2></td></tr>
@@ -478,6 +482,72 @@ ResultInvalidConfiguration if a message listener had been set in the configurati
 
 </div>
 </div>
+<a class="anchor" id="a949eda4ed6de3ecc2e4f793cce1dc06c"></a>
+<div class="memitem">
+<div class="memproto">
+      <table class="memname">
+        <tr>
+          <td class="memname"><a class="el" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a> pulsar::Consumer::seek </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> &amp;&#160;</td>
+          <td class="paramname"><em>msgId</em></td><td>)</td>
+          <td></td>
+        </tr>
+      </table>
+</div><div class="memdoc">
+<p>Reset the subscription associated with this consumer to a specific message id. The message id can either be a specific message or represent the first or last messages in the topic.</p>
+<p>Note: this operation can only be done on non-partitioned topics. For these, one can rather perform the <a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">seek()</a> on the individual partitions.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">messageId</td><td>the message id where to reposition the subscription </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
+<a class="anchor" id="a52bb7deeca9c8376de61c88bb5db24e5"></a>
+<div class="memitem">
+<div class="memproto">
+<table class="mlabels">
+  <tr>
+  <td class="mlabels-left">
+      <table class="memname">
+        <tr>
+          <td class="memname">virtual void pulsar::Consumer::seekAsync </td>
+          <td>(</td>
+          <td class="paramtype">const <a class="el" href="classpulsar_1_1_message_id.html">MessageId</a> &amp;&#160;</td>
+          <td class="paramname"><em>msgId</em>, </td>
+        </tr>
+        <tr>
+          <td class="paramkey"></td>
+          <td></td>
+          <td class="paramtype"><a class="el" href="namespacepulsar.html#a471fb397a128f0e2891d5979f2282e2d">ResultCallback</a>&#160;</td>
+          <td class="paramname"><em>callback</em>&#160;</td>
+        </tr>
+        <tr>
+          <td></td>
+          <td>)</td>
+          <td></td><td></td>
+        </tr>
+      </table>
+  </td>
+  <td class="mlabels-right">
+<span class="mlabels"><span class="mlabel">virtual</span></span>  </td>
+  </tr>
+</table>
+</div><div class="memdoc">
+<p>Asynchronously reset the subscription associated with this consumer to a specific message id. The message id can either be a specific message or represent the first or last messages in the topic.</p>
+<p>Note: this operation can only be done on non-partitioned topics. For these, one can rather perform the <a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">seek()</a> on the individual partitions.</p>
+<dl class="params"><dt>Parameters</dt><dd>
+  <table class="params">
+    <tr><td class="paramname">messageId</td><td>the message id where to reposition the subscription </td></tr>
+  </table>
+  </dd>
+</dl>
+
+</div>
+</div>
 <a class="anchor" id="a542ca0a9473a03ccf8bd8aeed24de490"></a>
 <div class="memitem">
 <div class="memproto">
diff --git a/content/api/cpp/client__configuration_8h_source.html b/content/api/cpp/client__configuration_8h_source.html
index 2272ed8..9406e9e 100644
--- a/content/api/cpp/client__configuration_8h_source.html
+++ b/content/api/cpp/client__configuration_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">client_configuration.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/content/api/cpp/consumer_8h_source.html b/content/api/cpp/consumer_8h_source.html
index c6d5994..c9227b4 100644
--- a/content/api/cpp/consumer_8h_source.html
+++ b/content/api/cpp/consumer_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">consumer.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00022">< [...]
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00019"></a><span class="lineno">   19</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;</div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00022">< [...]
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/content/api/cpp/files.html b/content/api/cpp/files.html
index 29a5e57..58f30f8 100644
--- a/content/api/cpp/files.html
+++ b/content/api/cpp/files.html
@@ -103,30 +103,31 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <tr id="row_0_0_0_10_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="reader_8h_source.html"><span class="icondoc"></span></a><b>reader.h</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_11_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="reader__configuration_8h_source.html"><span class="icondoc"></span></a><b>reader_configuration.h</b></td><td class="desc"></td></tr>
 <tr id="row_0_0_0_12_"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="result_8h_source.html"><span class="icondoc"></span></a><b>result.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_1_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_authentication_8h_source.html"><span class="icondoc"></span></a><b>Authentication.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_2_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_broker_consumer_stats_8h_source.html"><span class="icondoc"></span></a><b>BrokerConsumerStats.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_3_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_client_8h_source.html"><span class="icondoc"></span></a><b>Client.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_4_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_client_configuration_8h_source.html"><span class="icondoc"></span></a><b>ClientConfiguration.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_5_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_compression_type_8h_source.html"><span class="icondoc"></span></a><b>CompressionType.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_6_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_8h_source.html"><span class="icondoc"></span></a><b>Consumer.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_7_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_configuration_8h_source.html"><span class="icondoc"></span></a><b>ConsumerConfiguration.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_8_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_crypto_failure_action_8h_source.html"><span class="icondoc"></span></a><b>ConsumerCryptoFailureAction.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_9_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_type_8h_source.html"><span class="icondoc"></span></a><b>ConsumerType.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_10_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_crypto_key_reader_8h_source.html"><span class="icondoc"></span></a><b>CryptoKeyReader.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_11_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_deprecated_exception_8h_source.html"><span class="icondoc"></span></a><b>DeprecatedException.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_12_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_encryption_key_info_8h_source.html"><span class="icondoc"></span></a><b>EncryptionKeyInfo.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_13_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_logger_8h_source.html"><span class="icondoc"></span></a><b>Logger.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_14_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_8h_source.html"><span class="icondoc"></span></a><b>Message.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_15_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_builder_8h_source.html"><span class="icondoc"></span></a><b>MessageBuilder.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_16_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_id_8h_source.html"><span class="icondoc"></span></a><b>MessageId.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_17_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_routing_policy_8h_source.html"><span class="icondoc"></span></a><b>MessageRoutingPolicy.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_18_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_8h_source.html"><span class="icondoc"></span></a><b>Producer.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_19_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_configuration_8h_source.html"><span class="icondoc"></span></a><b>ProducerConfiguration.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_20_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_crypto_failure_action_8h_source.html"><span class="icondoc"></span></a><b>ProducerCryptoFailureAction.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_21_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_reader_8h_source.html"><span class="icondoc"></span></a><b>Reader.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_22_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_reader_configuration_8h_source.html"><span class="icondoc"></span></a><b>ReaderConfiguration.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_23_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_result_8h_source.html"><span class="icondoc"></span></a><b>Result.h</b></td><td class="desc"></td></tr>
-<tr id="row_0_0_24_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_topic_metadata_8h_source.html"><span class="icondoc"></span></a><b>TopicMetadata.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_0_13_" class="even"><td class="entry"><span style="width:64px;display:inline-block;">&#160;</span><a href="string__map_8h_source.html"><span class="icondoc"></span></a><b>string_map.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_1_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_authentication_8h_source.html"><span class="icondoc"></span></a><b>Authentication.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_2_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_broker_consumer_stats_8h_source.html"><span class="icondoc"></span></a><b>BrokerConsumerStats.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_3_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_client_8h_source.html"><span class="icondoc"></span></a><b>Client.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_4_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_client_configuration_8h_source.html"><span class="icondoc"></span></a><b>ClientConfiguration.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_5_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_compression_type_8h_source.html"><span class="icondoc"></span></a><b>CompressionType.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_6_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_8h_source.html"><span class="icondoc"></span></a><b>Consumer.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_7_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_configuration_8h_source.html"><span class="icondoc"></span></a><b>ConsumerConfiguration.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_8_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_crypto_failure_action_8h_source.html"><span class="icondoc"></span></a><b>ConsumerCryptoFailureAction.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_9_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_consumer_type_8h_source.html"><span class="icondoc"></span></a><b>ConsumerType.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_10_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_crypto_key_reader_8h_source.html"><span class="icondoc"></span></a><b>CryptoKeyReader.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_11_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_deprecated_exception_8h_source.html"><span class="icondoc"></span></a><b>DeprecatedException.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_12_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_encryption_key_info_8h_source.html"><span class="icondoc"></span></a><b>EncryptionKeyInfo.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_13_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_logger_8h_source.html"><span class="icondoc"></span></a><b>Logger.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_14_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_8h_source.html"><span class="icondoc"></span></a><b>Message.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_15_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_builder_8h_source.html"><span class="icondoc"></span></a><b>MessageBuilder.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_16_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_id_8h_source.html"><span class="icondoc"></span></a><b>MessageId.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_17_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_message_routing_policy_8h_source.html"><span class="icondoc"></span></a><b>MessageRoutingPolicy.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_18_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_8h_source.html"><span class="icondoc"></span></a><b>Producer.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_19_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_configuration_8h_source.html"><span class="icondoc"></span></a><b>ProducerConfiguration.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_20_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_producer_crypto_failure_action_8h_source.html"><span class="icondoc"></span></a><b>ProducerCryptoFailureAction.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_21_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_reader_8h_source.html"><span class="icondoc"></span></a><b>Reader.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_22_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_reader_configuration_8h_source.html"><span class="icondoc"></span></a><b>ReaderConfiguration.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_23_"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_result_8h_source.html"><span class="icondoc"></span></a><b>Result.h</b></td><td class="desc"></td></tr>
+<tr id="row_0_0_24_" class="even"><td class="entry"><span style="width:48px;display:inline-block;">&#160;</span><a href="_topic_metadata_8h_source.html"><span class="icondoc"></span></a><b>TopicMetadata.h</b></td><td class="desc"></td></tr>
 </table>
 </div><!-- directory -->
 </div><!-- contents -->
diff --git a/content/api/cpp/functions.html b/content/api/cpp/functions.html
index f591cc7..e2750c7 100644
--- a/content/api/cpp/functions.html
+++ b/content/api/cpp/functions.html
@@ -147,7 +147,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classpulsar_1_1_consumer.html#afe59503d5d5309f38d4e246bd9f435b4">pulsar::Consumer</a>
 </li>
 <li>create()
-: <a class="el" href="classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0">pulsar::MessageBuilder</a>
+: <a class="el" href="classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624">pulsar::AuthFactory</a>
+, <a class="el" href="classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0">pulsar::MessageBuilder</a>
 </li>
 <li>createProducer()
 : <a class="el" href="classpulsar_1_1_client.html#a96f49cc0ce27bfe68d75224991f0ba52">pulsar::Client</a>
@@ -343,6 +344,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>seek()
+: <a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">pulsar::Consumer</a>
+</li>
+<li>seekAsync()
+: <a class="el" href="classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5">pulsar::Consumer</a>
+</li>
 <li>send()
 : <a class="el" href="classpulsar_1_1_producer.html#ad4737186cf798acfb24a167796259443">pulsar::Producer</a>
 </li>
diff --git a/content/api/cpp/functions_func.html b/content/api/cpp/functions_func.html
index 95022ad..80f9193 100644
--- a/content/api/cpp/functions_func.html
+++ b/content/api/cpp/functions_func.html
@@ -147,7 +147,8 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 : <a class="el" href="classpulsar_1_1_consumer.html#afe59503d5d5309f38d4e246bd9f435b4">pulsar::Consumer</a>
 </li>
 <li>create()
-: <a class="el" href="classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0">pulsar::MessageBuilder</a>
+: <a class="el" href="classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624">pulsar::AuthFactory</a>
+, <a class="el" href="classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0">pulsar::MessageBuilder</a>
 </li>
 <li>createProducer()
 : <a class="el" href="classpulsar_1_1_client.html#a96f49cc0ce27bfe68d75224991f0ba52">pulsar::Client</a>
@@ -343,6 +344,12 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 
 
 <h3><a class="anchor" id="index_s"></a>- s -</h3><ul>
+<li>seek()
+: <a class="el" href="classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c">pulsar::Consumer</a>
+</li>
+<li>seekAsync()
+: <a class="el" href="classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5">pulsar::Consumer</a>
+</li>
 <li>send()
 : <a class="el" href="classpulsar_1_1_producer.html#ad4737186cf798acfb24a167796259443">pulsar::Producer</a>
 </li>
diff --git a/content/api/cpp/hierarchy.html b/content/api/cpp/hierarchy.html
index f794435..66fbe3d 100644
--- a/content/api/cpp/hierarchy.html
+++ b/content/api/cpp/hierarchy.html
@@ -90,7 +90,9 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="contents">
 <div class="textblock">This inheritance list is sorted roughly, but not completely, alphabetically:</div><div class="directory">
 <div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span>]</div><table class="directory">
-<tr id="row_0_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication.html" target="_self">pulsar::Authentication</a></td><td class="desc"></td></tr>
+<tr id="row_0_" class="even"><td class="entry"><span style="width:0px;display:inline-block;">&#160;</span><span id="arr_0_" class="arrow" onclick="toggleFolder('0_')">&#9660;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication.html" target="_self">pulsar::Authentication</a></td><td class="desc"></td></tr>
+<tr id="row_0_0_"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_athenz.html" target="_self">pulsar::AuthAthenz</a></td><td class="desc"></td></tr>
+<tr id="row_0_1_" class="even"><td class="entry"><span style="width:32px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_tls.html" target="_self">pulsar::AuthTls</a></td><td class="desc"></td></tr>
 <tr id="row_1_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_authentication_data_provider.html" target="_self">pulsar::AuthenticationDataProvider</a></td><td class="desc"></td></tr>
 <tr id="row_2_" class="even"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_auth_factory.html" target="_self">pulsar::AuthFactory</a></td><td class="desc"></td></tr>
 <tr id="row_3_"><td class="entry"><span style="width:16px;display:inline-block;">&#160;</span><span class="icona"><span class="icon">C</span></span><a class="el" href="classpulsar_1_1_broker_consumer_stats.html" target="_self">pulsar::BrokerConsumerStats</a></td><td class="desc"></td></tr>
diff --git a/content/api/cpp/index.html b/content/api/cpp/index.html
index 604251f..b2d1029 100644
--- a/content/api/cpp/index.html
+++ b/content/api/cpp/index.html
@@ -108,7 +108,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;$ cd pulsar-client-cpp</div><div class="line"><a name="l00002"></a><span class="lineno">    2</span>&#160;$ cmake .</div><div class="line"><a name="l00003"></a><span class="lineno">    3</span>&#160;$ make</div></div><!-- fragment --><h2>Consumer</h2>
 <div class="fragment"><div class="line">Client client(<span class="stringliteral">&quot;pulsar://localhost:6650&quot;</span>);</div><div class="line"></div><div class="line">Consumer consumer;</div><div class="line"><a class="code" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a> result = client.subscribe(<span class="stringliteral">&quot;persistent://sample/standalone/ns1/my-topic&quot;</span>, <span class="stringliteral">&quot;my-subscribtion-name&quot;</span>,  [...]
 <div class="fragment"><div class="line">Client client(<span class="stringliteral">&quot;pulsar://localhost:6650&quot;</span>);</div><div class="line"></div><div class="line">Producer producer;</div><div class="line"><a class="code" href="namespacepulsar.html#ae85314d6b9e8afd831cf8c66705f2dbb">Result</a> result = client.createProducer(<span class="stringliteral">&quot;persistent://sample/standalone/ns1/my-topic&quot;</span>, producer);</div><div class="line"><span class="keywordflow">if</ [...]
-<div class="fragment"><div class="line">ClientConfiguration config = ClientConfiguration();</div><div class="line">config.setUseTls(<span class="keyword">true</span>);</div><div class="line">std::string certfile = <span class="stringliteral">&quot;/path/to/cacert.pem&quot;</span>;</div><div class="line"></div><div class="line">ParamMap params;</div><div class="line">params[<span class="stringliteral">&quot;tlsCertFile&quot;</span>] = <span class="stringliteral">&quot;/path/to/client-cert [...]
+<div class="fragment"><div class="line">ClientConfiguration config = ClientConfiguration();</div><div class="line">config.setUseTls(<span class="keyword">true</span>);</div><div class="line">std::string certfile = <span class="stringliteral">&quot;/path/to/cacert.pem&quot;</span>;</div><div class="line"></div><div class="line">ParamMap params;</div><div class="line">params[<span class="stringliteral">&quot;tlsCertFile&quot;</span>] = <span class="stringliteral">&quot;/path/to/client-cert [...]
 <p>After you changed code, run auto-formatting by the following command.</p>
 <div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;make format</div></div><!-- fragment --><p> You need to have the following installed to use the auto-formatting.</p><ul>
 <li><a href="https://clang.llvm.org/">clang-format 5.0</a> </li>
diff --git a/content/api/cpp/message_8h_source.html b/content/api/cpp/message_8h_source.html
index 681b95a..091e3eb 100644
--- a/content/api/cpp/message_8h_source.html
+++ b/content/api/cpp/message_8h_source.html
@@ -89,7 +89,7 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <div class="title">message.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/content/api/cpp/namespacepulsar.html b/content/api/cpp/namespacepulsar.html
index cfb6560..4912a77 100644
--- a/content/api/cpp/namespacepulsar.html
+++ b/content/api/cpp/namespacepulsar.html
@@ -94,12 +94,16 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 <table class="memberdecls">
 <tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
 Classes</h2></td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_auth_athenz.html">AuthAthenz</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_authentication.html">Authentication</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_authentication_data_provider.html">AuthenticationDataProvider</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_auth_factory.html">AuthFactory</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
+<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_auth_tls.html">AuthTls</a></td></tr>
+<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_broker_consumer_stats.html">BrokerConsumerStats</a></td></tr>
 <tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
 <tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classpulsar_1_1_client.html">Client</a></td></tr>
diff --git a/content/api/cpp/search/all_0.js b/content/api/cpp/search/all_0.js
index 3ae091d..dd92c1b 100644
--- a/content/api/cpp/search/all_0.js
+++ b/content/api/cpp/search/all_0.js
@@ -4,7 +4,9 @@ var searchData=
   ['acknowledgeasync',['acknowledgeAsync',['../classpulsar_1_1_consumer.html#a867bebab981d5aa2f74217308aa2353c',1,'pulsar::Consumer']]],
   ['acknowledgecumulative',['acknowledgeCumulative',['../classpulsar_1_1_consumer.html#a3eb0b0db2da0628da15d3f242e254f6d',1,'pulsar::Consumer']]],
   ['acknowledgecumulativeasync',['acknowledgeCumulativeAsync',['../classpulsar_1_1_consumer.html#a6ad164b1ab4449b17bce764224e92960',1,'pulsar::Consumer']]],
+  ['authathenz',['AuthAthenz',['../classpulsar_1_1_auth_athenz.html',1,'pulsar']]],
   ['authentication',['Authentication',['../classpulsar_1_1_authentication.html',1,'pulsar']]],
   ['authenticationdataprovider',['AuthenticationDataProvider',['../classpulsar_1_1_authentication_data_provider.html',1,'pulsar']]],
-  ['authfactory',['AuthFactory',['../classpulsar_1_1_auth_factory.html',1,'pulsar']]]
+  ['authfactory',['AuthFactory',['../classpulsar_1_1_auth_factory.html',1,'pulsar']]],
+  ['authtls',['AuthTls',['../classpulsar_1_1_auth_tls.html',1,'pulsar']]]
 ];
diff --git a/content/api/cpp/search/all_2.js b/content/api/cpp/search/all_2.js
index 21bcd4c..afbe0c1 100644
--- a/content/api/cpp/search/all_2.js
+++ b/content/api/cpp/search/all_2.js
@@ -12,7 +12,7 @@ var searchData=
   ['consumerfailover',['ConsumerFailover',['../namespacepulsar.html#ac3e442abe2558a2b257fc7344af61d40aadffd5f0d50b1da36685230cd3f910a1',1,'pulsar']]],
   ['consumershared',['ConsumerShared',['../namespacepulsar.html#ac3e442abe2558a2b257fc7344af61d40ac55370821e835a03c2da742ab27e1705',1,'pulsar']]],
   ['consumertype',['ConsumerType',['../namespacepulsar.html#ac3e442abe2558a2b257fc7344af61d40',1,'pulsar']]],
-  ['create',['create',['../classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0',1,'pulsar::MessageBuilder']]],
+  ['create',['create',['../classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624',1,'pulsar::AuthFactory::create()'],['../classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0',1,'pulsar::MessageBuilder::create()']]],
   ['createproducer',['createProducer',['../classpulsar_1_1_client.html#a96f49cc0ce27bfe68d75224991f0ba52',1,'pulsar::Client::createProducer(const std::string &amp;topic, Producer &amp;producer)'],['../classpulsar_1_1_client.html#aae7658dee80ad23b418cfb7e12f5df05',1,'pulsar::Client::createProducer(const std::string &amp;topic, const ProducerConfiguration &amp;conf, Producer &amp;producer)']]],
   ['createreader',['createReader',['../classpulsar_1_1_client.html#ad2f6404e06200714e1fe82419b7c963a',1,'pulsar::Client']]],
   ['cryptokeyreader',['CryptoKeyReader',['../classpulsar_1_1_crypto_key_reader.html',1,'pulsar']]]
diff --git a/content/api/cpp/search/all_c.js b/content/api/cpp/search/all_c.js
index 36d450a..854e76a 100644
--- a/content/api/cpp/search/all_c.js
+++ b/content/api/cpp/search/all_c.js
@@ -1,5 +1,7 @@
 var searchData=
 [
+  ['seek',['seek',['../classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c',1,'pulsar::Consumer']]],
+  ['seekasync',['seekAsync',['../classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5',1,'pulsar::Consumer']]],
   ['send',['send',['../classpulsar_1_1_producer.html#ad4737186cf798acfb24a167796259443',1,'pulsar::Producer']]],
   ['sendasync',['sendAsync',['../classpulsar_1_1_producer.html#a7b31f92eb0362bdff32316fc9ab70fd7',1,'pulsar::Producer']]],
   ['serialize',['serialize',['../classpulsar_1_1_message_id.html#a665b97923d70670a87361038e5ec3fe6',1,'pulsar::MessageId']]],
diff --git a/content/api/cpp/search/classes_0.js b/content/api/cpp/search/classes_0.js
index 9837e3a..c73c357 100644
--- a/content/api/cpp/search/classes_0.js
+++ b/content/api/cpp/search/classes_0.js
@@ -1,6 +1,8 @@
 var searchData=
 [
+  ['authathenz',['AuthAthenz',['../classpulsar_1_1_auth_athenz.html',1,'pulsar']]],
   ['authentication',['Authentication',['../classpulsar_1_1_authentication.html',1,'pulsar']]],
   ['authenticationdataprovider',['AuthenticationDataProvider',['../classpulsar_1_1_authentication_data_provider.html',1,'pulsar']]],
-  ['authfactory',['AuthFactory',['../classpulsar_1_1_auth_factory.html',1,'pulsar']]]
+  ['authfactory',['AuthFactory',['../classpulsar_1_1_auth_factory.html',1,'pulsar']]],
+  ['authtls',['AuthTls',['../classpulsar_1_1_auth_tls.html',1,'pulsar']]]
 ];
diff --git a/content/api/cpp/search/functions_2.js b/content/api/cpp/search/functions_2.js
index 11bea6e..8650c0a 100644
--- a/content/api/cpp/search/functions_2.js
+++ b/content/api/cpp/search/functions_2.js
@@ -4,7 +4,7 @@ var searchData=
   ['close',['close',['../classpulsar_1_1_client.html#ac3f0a65b099f88781548d4fad41685ac',1,'pulsar::Client::close()'],['../classpulsar_1_1_producer.html#a0b4a93617a0c0f8d172633a7bf8ba06b',1,'pulsar::Producer::close()']]],
   ['closeasync',['closeAsync',['../classpulsar_1_1_producer.html#a40f5268e6754c9e61e2406d432cffe2f',1,'pulsar::Producer']]],
   ['consumer',['Consumer',['../classpulsar_1_1_consumer.html#afe59503d5d5309f38d4e246bd9f435b4',1,'pulsar::Consumer']]],
-  ['create',['create',['../classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0',1,'pulsar::MessageBuilder']]],
+  ['create',['create',['../classpulsar_1_1_auth_factory.html#aa99900a3f8ed1ee55900431cc784f624',1,'pulsar::AuthFactory::create()'],['../classpulsar_1_1_message_builder.html#a331944373a3ed3fe7daed7730e9254c0',1,'pulsar::MessageBuilder::create()']]],
   ['createproducer',['createProducer',['../classpulsar_1_1_client.html#a96f49cc0ce27bfe68d75224991f0ba52',1,'pulsar::Client::createProducer(const std::string &amp;topic, Producer &amp;producer)'],['../classpulsar_1_1_client.html#aae7658dee80ad23b418cfb7e12f5df05',1,'pulsar::Client::createProducer(const std::string &amp;topic, const ProducerConfiguration &amp;conf, Producer &amp;producer)']]],
   ['createreader',['createReader',['../classpulsar_1_1_client.html#ad2f6404e06200714e1fe82419b7c963a',1,'pulsar::Client']]]
 ];
diff --git a/content/api/cpp/search/functions_b.js b/content/api/cpp/search/functions_b.js
index 36d450a..854e76a 100644
--- a/content/api/cpp/search/functions_b.js
+++ b/content/api/cpp/search/functions_b.js
@@ -1,5 +1,7 @@
 var searchData=
 [
+  ['seek',['seek',['../classpulsar_1_1_consumer.html#a949eda4ed6de3ecc2e4f793cce1dc06c',1,'pulsar::Consumer']]],
+  ['seekasync',['seekAsync',['../classpulsar_1_1_consumer.html#a52bb7deeca9c8376de61c88bb5db24e5',1,'pulsar::Consumer']]],
   ['send',['send',['../classpulsar_1_1_producer.html#ad4737186cf798acfb24a167796259443',1,'pulsar::Producer']]],
   ['sendasync',['sendAsync',['../classpulsar_1_1_producer.html#a7b31f92eb0362bdff32316fc9ab70fd7',1,'pulsar::Producer']]],
   ['serialize',['serialize',['../classpulsar_1_1_message_id.html#a665b97923d70670a87361038e5ec3fe6',1,'pulsar::MessageId']]],
diff --git a/content/api/cpp/authentication_8h_source.html b/content/api/cpp/string__map_8h_source.html
similarity index 64%
copy from content/api/cpp/authentication_8h_source.html
copy to content/api/cpp/string__map_8h_source.html
index 53715de..34e99be 100644
--- a/content/api/cpp/authentication_8h_source.html
+++ b/content/api/cpp/string__map_8h_source.html
@@ -4,7 +4,7 @@
 <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
 <meta http-equiv="X-UA-Compatible" content="IE=9"/>
 <meta name="generator" content="Doxygen 1.8.11"/>
-<title>pulsar-client-cpp: include/pulsar/c/authentication.h Source File</title>
+<title>pulsar-client-cpp: include/pulsar/c/string_map.h Source File</title>
 <link href="tabs.css" rel="stylesheet" type="text/css"/>
 <script type="text/javascript" src="jquery.js"></script>
 <script type="text/javascript" src="dynsections.js"></script>
@@ -86,10 +86,10 @@ var searchBox = new SearchBox("searchBox", "search",false,'Search');
 </div><!-- top -->
 <div class="header">
   <div class="headertitle">
-<div class="title">authentication.h</div>  </div>
+<div class="title">string_map.h</div>  </div>
 </div><!--header-->
 <div class="contents">
-<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
+<div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno">    1</span>&#160;</div><div class="line"><a name="l00020"></a><span class="lineno">   20</span>&#160;<span class="preprocessor">#pragma once</span></div><div class="line"><a name="l00021"></a><span class="lineno">   21</span>&#160;</div><div class="line"><a name="l00022"></a><span class="lineno">   22</span>&#160;<span class="preprocessor">#ifdef __cplusplus</span></div><div class="line"><a name="l00023">< [...]
 <!-- start footer part -->
 <hr class="footer"/><address class="footer"><small>
 Generated by &#160;<a href="http://www.doxygen.org/index.html">
diff --git a/content/api/python/functions/context.m.html b/content/api/python/functions/context.m.html
new file mode 100644
index 0000000..5273b11
--- /dev/null
+++ b/content/api/python/functions/context.m.html
@@ -0,0 +1,1652 @@
+<!doctype html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+
+    <title>pulsar.functions.context API documentation</title>
+    <meta name="description" content="context.py: Context defines context information available during
+# processing of a request." />
+
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300' rel='stylesheet' type='text/css'>
+  
+  <style type="text/css">
+  
+* {
+  box-sizing: border-box;
+}
+/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Prevent system color scheme's background color being used in Firefox, IE,
+ *    and Opera.
+ * 2. Prevent system color scheme's text color being used in Firefox, IE, and
+ *    Opera.
+ * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 4. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    background: #fff; /* 1 */
+    color: #000; /* 2 */
+    font-size: 100%; /* 3 */
+    -webkit-text-size-adjust: 100%; /* 4 */
+    -ms-text-size-adjust: 100%; /* 4 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+  </style>
+
+  <style type="text/css">
+  
+  html, body {
+    margin: 0;
+    padding: 0;
+    min-height: 100%;
+  }
+  body {
+    background: #fff;
+    font-family: "Source Sans Pro", "Helvetica Neueue", Helvetica, sans;
+    font-weight: 300;
+    font-size: 16px;
+    line-height: 1.6em;
+  }
+  #content {
+    width: 70%;
+    max-width: 850px;
+    float: left;
+    padding: 30px 60px;
+    border-left: 1px solid #ddd;
+  }
+  #sidebar {
+    width: 25%;
+    float: left;
+    padding: 30px;
+    overflow: hidden;
+  }
+  #nav {
+    font-size: 130%;
+    margin: 0 0 15px 0;
+  }
+
+  #top {
+    display: block;
+    position: fixed;
+    bottom: 5px;
+    left: 5px;
+    font-size: .85em;
+    text-transform: uppercase;
+  }
+
+  #footer {
+    font-size: .75em;
+    padding: 5px 30px;
+    border-top: 1px solid #ddd;
+    text-align: right;
+  }
+    #footer p {
+      margin: 0 0 0 30px;
+      display: inline-block;
+    }
+
+  h1, h2, h3, h4, h5 {
+    font-weight: 300;
+  }
+  h1 {
+    font-size: 2.5em;
+    line-height: 1.1em;
+    margin: 0 0 .50em 0;
+  }
+
+  h2 {
+    font-size: 1.75em;
+    margin: 1em 0 .50em 0;
+  }
+
+  h3 {
+    margin: 25px 0 10px 0;
+  }
+
+  h4 {
+    margin: 0;
+    font-size: 105%;
+  }
+
+  a {
+    color: #058;
+    text-decoration: none;
+    transition: color .3s ease-in-out;
+  }
+
+  a:hover {
+    color: #e08524;
+    transition: color .3s ease-in-out;
+  }
+
+  pre, code, .mono, .name {
+    font-family: "Ubuntu Mono", "Cousine", "DejaVu Sans Mono", monospace;
+  }
+
+  .title .name {
+    font-weight: bold;
+  }
+  .section-title {
+    margin-top: 2em;
+  }
+  .ident {
+    color: #900;
+  }
+
+  code {
+    background: #f9f9f9;
+  } 
+
+  pre {
+    background: #fefefe;
+    border: 1px solid #ddd;
+    box-shadow: 2px 2px 0 #f3f3f3;
+    margin: 0 30px;
+    padding: 15px 30px;
+  }
+
+  .codehilite {
+    margin: 0 30px 10px 30px;
+  }
+
+    .codehilite pre {
+      margin: 0;
+    }
+    .codehilite .err { background: #ff3300; color: #fff !important; } 
+
+  table#module-list {
+    font-size: 110%;
+  }
+
+    table#module-list tr td:first-child {
+      padding-right: 10px;
+      white-space: nowrap;
+    }
+
+    table#module-list td {
+      vertical-align: top;
+      padding-bottom: 8px;
+    }
+
+      table#module-list td p {
+        margin: 0 0 7px 0;
+      }
+
+  .def {
+    display: table;
+  }
+
+    .def p {
+      display: table-cell;
+      vertical-align: top;
+      text-align: left;
+    }
+
+    .def p:first-child {
+      white-space: nowrap;
+    }
+
+    .def p:last-child {
+      width: 100%;
+    }
+
+
+  #index {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+  }
+    ul#index .class_name {
+      /* font-size: 110%; */
+      font-weight: bold;
+    }
+    #index ul {
+      margin: 0;
+    }
+
+  .item {
+    margin: 0 0 15px 0;
+  }
+
+    .item .class {
+      margin: 0 0 25px 30px;
+    }
+
+      .item .class ul.class_list {
+        margin: 0 0 20px 0;
+      }
+
+    .item .name {
+      background: #fafafa;
+      margin: 0;
+      font-weight: bold;
+      padding: 5px 10px;
+      border-radius: 3px;
+      display: inline-block;
+      min-width: 40%;
+    }
+      .item .name:hover {
+        background: #f6f6f6;
+      }
+
+    .item .empty_desc {
+      margin: 0 0 5px 0;
+      padding: 0;
+    }
+
+    .item .inheritance {
+      margin: 3px 0 0 30px;
+    }
+
+    .item .inherited {
+      color: #666;
+    }
+
+    .item .desc {
+      padding: 0 8px;
+      margin: 0;
+    }
+
+      .item .desc p {
+        margin: 0 0 10px 0;
+      }
+
+    .source_cont {
+      margin: 0;
+      padding: 0;
+    }
+
+    .source_link a {
+      background: #ffc300;
+      font-weight: 400;
+      font-size: .75em;
+      text-transform: uppercase;
+      color: #fff;
+      text-shadow: 1px 1px 0 #f4b700;
+      
+      padding: 3px 8px;
+      border-radius: 2px;
+      transition: background .3s ease-in-out;
+    }
+      .source_link a:hover {
+        background: #FF7200;
+        text-shadow: none;
+        transition: background .3s ease-in-out;
+      }
+
+    .source {
+      display: none;
+      max-height: 600px;
+      overflow-y: scroll;
+      margin-bottom: 15px;
+    }
+
+      .source .codehilite {
+        margin: 0;
+      }
+
+  .desc h1, .desc h2, .desc h3 {
+    font-size: 100% !important;
+  }
+  .clear {
+    clear: both;
+  }
+
+  @media all and (max-width: 950px) {
+    #sidebar {
+      width: 35%;
+    }
+    #content {
+      width: 65%;
+    }
+  }
+  @media all and (max-width: 650px) {
+    #top {
+      display: none;
+    }
+    #sidebar {
+      float: none;
+      width: auto;
+    }
+    #content {
+      float: none;
+      width: auto;
+      padding: 30px;
+    }
+
+    #index ul {
+      padding: 0;
+      margin-bottom: 15px;
+    }
+    #index ul li {
+      display: inline-block;
+      margin-right: 30px;
+    }
+    #footer {
+      text-align: left;
+    }
+    #footer p {
+      display: block;
+      margin: inherit;
+    }
+  }
+
+  /*****************************/
+
+  </style>
+
+
+  <style type="text/css">
+  
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+  </style>
+
+  <script type="text/javascript">
+  function toggle(id, $link) {
+    $node = document.getElementById(id);
+    if (!$node)
+    return;
+    if (!$node.style.display || $node.style.display == 'none') {
+    $node.style.display = 'block';
+    $link.innerHTML = 'Hide source &nequiv;';
+    } else {
+    $node.style.display = 'none';
+    $link.innerHTML = 'Show source &equiv;';
+    }
+  }
+  </script>
+</head>
+<body>
+<a href="#" id="top">Top</a>
+
+<div id="container">
+    
+  
+  <div id="sidebar">
+    <h1>Index</h1>
+    <ul id="index">
+
+
+    <li class="set"><h3><a href="#header-classes">Classes</a></h3>
+      <ul>
+        <li class="mono">
+        <span class="class_name"><a href="#pulsar.functions.context.Context">Context</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#pulsar.functions.context.Context.ack">ack</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_current_message_topic_name">get_current_message_topic_name</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_function_id">get_function_id</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_function_name">get_function_name</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_function_namespace">get_function_namespace</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_function_tenant">get_function_tenant</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_function_version">get_function_version</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_instance_id">get_instance_id</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_logger">get_logger</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_message_id">get_message_id</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_output_serde_class_name">get_output_serde_class_name</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_output_topic">get_output_topic</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_user_config_map">get_user_config_map</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.get_user_config_value">get_user_config_value</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.publish">publish</a></li>
+    <li class="mono"><a href="#pulsar.functions.context.Context.record_metric">record_metric</a></li>
+  </ul>
+
+        </li>
+      </ul>
+    </li>
+
+    </ul>
+  </div>
+
+    <article id="content">
+      
+  
+
+  
+
+
+  <header id="section-intro">
+  <h1 class="title"><span class="name">pulsar.functions.context</span> module</h1>
+  <p>context.py: Context defines context information available during</p>
+<h1>processing of a request.</h1>
+  
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context" class="source">
+    <pre><code>#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# -*- encoding: utf-8 -*-
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+"""context.py: Context defines context information available during
+# processing of a request.
+"""
+from abc import abstractmethod
+
+class Context(object):
+  """Interface defining information available at process time"""
+  @abstractmethod
+  def get_message_id(self):
+    """Return the messageid of the current message that we are processing"""
+    pass
+
+  @abstractmethod
+  def get_current_message_topic_name(self):
+    """Returns the topic name of the message that we are processing"""
+    pass
+  
+  @abstractmethod
+  def get_function_tenant(self):
+    """Returns the tenant of the message that's being processed"""
+    pass
+
+  @abstractmethod
+  def get_function_namespace(self):
+    """Returns the namespace of the message that's being processed"""
+
+  @abstractmethod
+  def get_function_name(self):
+    """Returns the function name that we are a part of"""
+    pass
+
+  @abstractmethod
+  def get_function_id(self):
+    """Returns the function id that we are a part of"""
+    pass
+
+  @abstractmethod
+  def get_instance_id(self):
+    """Returns the instance id that is executing the function"""
+    pass
+
+  @abstractmethod
+  def get_function_version(self):
+    """Returns the version of function that we are executing"""
+    pass
+
+  @abstractmethod
+  def get_logger(self):
+    """Returns the logger object that can be used to do logging"""
+    pass
+
+  @abstractmethod
+  def get_user_config_value(self, key):
+    """Returns the value of the user-defined config. If the key doesn't exist, None is returned"""
+    pass
+  
+  @abstractmethod
+  def get_user_config_map(self):
+    """Returns the entire user-defined config as a dict (the dict will be empty if no user-defined config is supplied)"""
+    pass
+
+  @abstractmethod
+  def record_metric(self, metric_name, metric_value):
+    """Records the metric_value. metric_value has to satisfy isinstance(metric_value, numbers.Number)"""
+    pass
+
+  @abstractmethod
+  def publish(self, topic_name, message, serde_class_name):
+    """Publishes message to topic_name by first serializing the message using serde_class_name serde"""
+    pass
+
+  @abstractmethod
+  def publish(self, topic_name, message):
+    """Publishes message to topic_name by first serializing the message using IdentitySerDe"""
+    pass
+
+  @abstractmethod
+  def get_output_topic(self):
+    """Returns the output topic of function"""
+    pass
+
+  @abstractmethod
+  def get_output_serde_class_name(self):
+    """return output Serde class"""
+    pass
+
+  @abstractmethod
+  def ack(self, msgid, topic):
+    """ack this message id"""
+    pass
+</code></pre>
+  </div>
+
+  </header>
+
+  <section id="section-items">
+
+
+    <h2 class="section-title" id="header-classes">Classes</h2>
+      
+      <div class="item">
+      <p id="pulsar.functions.context.Context" class="name">class <span class="ident">Context</span></p>
+      
+  
+    <div class="desc"><p>Interface defining information available at process time</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context" class="source">
+    <pre><code>class Context(object):
+  """Interface defining information available at process time"""
+  @abstractmethod
+  def get_message_id(self):
+    """Return the messageid of the current message that we are processing"""
+    pass
+
+  @abstractmethod
+  def get_current_message_topic_name(self):
+    """Returns the topic name of the message that we are processing"""
+    pass
+  
+  @abstractmethod
+  def get_function_tenant(self):
+    """Returns the tenant of the message that's being processed"""
+    pass
+
+  @abstractmethod
+  def get_function_namespace(self):
+    """Returns the namespace of the message that's being processed"""
+
+  @abstractmethod
+  def get_function_name(self):
+    """Returns the function name that we are a part of"""
+    pass
+
+  @abstractmethod
+  def get_function_id(self):
+    """Returns the function id that we are a part of"""
+    pass
+
+  @abstractmethod
+  def get_instance_id(self):
+    """Returns the instance id that is executing the function"""
+    pass
+
+  @abstractmethod
+  def get_function_version(self):
+    """Returns the version of function that we are executing"""
+    pass
+
+  @abstractmethod
+  def get_logger(self):
+    """Returns the logger object that can be used to do logging"""
+    pass
+
+  @abstractmethod
+  def get_user_config_value(self, key):
+    """Returns the value of the user-defined config. If the key doesn't exist, None is returned"""
+    pass
+  
+  @abstractmethod
+  def get_user_config_map(self):
+    """Returns the entire user-defined config as a dict (the dict will be empty if no user-defined config is supplied)"""
+    pass
+
+  @abstractmethod
+  def record_metric(self, metric_name, metric_value):
+    """Records the metric_value. metric_value has to satisfy isinstance(metric_value, numbers.Number)"""
+    pass
+
+  @abstractmethod
+  def publish(self, topic_name, message, serde_class_name):
+    """Publishes message to topic_name by first serializing the message using serde_class_name serde"""
+    pass
+
+  @abstractmethod
+  def publish(self, topic_name, message):
+    """Publishes message to topic_name by first serializing the message using IdentitySerDe"""
+    pass
+
+  @abstractmethod
+  def get_output_topic(self):
+    """Returns the output topic of function"""
+    pass
+
+  @abstractmethod
+  def get_output_serde_class_name(self):
+    """return output Serde class"""
+    pass
+
+  @abstractmethod
+  def ack(self, msgid, topic):
+    """ack this message id"""
+    pass
+</code></pre>
+  </div>
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#pulsar.functions.context.Context">Context</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.ack">
+    <p>def <span class="ident">ack</span>(</p><p>self, msgid, topic)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>ack this message id</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.ack', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.ack" class="source">
+    <pre><code>@abstractmethod
+def ack(self, msgid, topic):
+  """ack this message id"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_current_message_topic_name">
+    <p>def <span class="ident">get_current_message_topic_name</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the topic name of the message that we are processing</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_current_message_topic_name', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_current_message_topic_name" class="source">
+    <pre><code>@abstractmethod
+def get_current_message_topic_name(self):
+  """Returns the topic name of the message that we are processing"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_function_id">
+    <p>def <span class="ident">get_function_id</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the function id that we are a part of</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_function_id', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_function_id" class="source">
+    <pre><code>@abstractmethod
+def get_function_id(self):
+  """Returns the function id that we are a part of"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_function_name">
+    <p>def <span class="ident">get_function_name</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the function name that we are a part of</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_function_name', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_function_name" class="source">
+    <pre><code>@abstractmethod
+def get_function_name(self):
+  """Returns the function name that we are a part of"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_function_namespace">
+    <p>def <span class="ident">get_function_namespace</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the namespace of the message that's being processed</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_function_namespace', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_function_namespace" class="source">
+    <pre><code>@abstractmethod
+def get_function_namespace(self):
+  """Returns the namespace of the message that's being processed"""
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_function_tenant">
+    <p>def <span class="ident">get_function_tenant</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the tenant of the message that's being processed</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_function_tenant', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_function_tenant" class="source">
+    <pre><code>@abstractmethod
+def get_function_tenant(self):
+  """Returns the tenant of the message that's being processed"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_function_version">
+    <p>def <span class="ident">get_function_version</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the version of function that we are executing</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_function_version', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_function_version" class="source">
+    <pre><code>@abstractmethod
+def get_function_version(self):
+  """Returns the version of function that we are executing"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_instance_id">
+    <p>def <span class="ident">get_instance_id</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the instance id that is executing the function</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_instance_id', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_instance_id" class="source">
+    <pre><code>@abstractmethod
+def get_instance_id(self):
+  """Returns the instance id that is executing the function"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_logger">
+    <p>def <span class="ident">get_logger</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the logger object that can be used to do logging</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_logger', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_logger" class="source">
+    <pre><code>@abstractmethod
+def get_logger(self):
+  """Returns the logger object that can be used to do logging"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_message_id">
+    <p>def <span class="ident">get_message_id</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Return the messageid of the current message that we are processing</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_message_id', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_message_id" class="source">
+    <pre><code>@abstractmethod
+def get_message_id(self):
+  """Return the messageid of the current message that we are processing"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_output_serde_class_name">
+    <p>def <span class="ident">get_output_serde_class_name</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>return output Serde class</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_output_serde_class_name', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_output_serde_class_name" class="source">
+    <pre><code>@abstractmethod
+def get_output_serde_class_name(self):
+  """return output Serde class"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_output_topic">
+    <p>def <span class="ident">get_output_topic</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the output topic of function</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_output_topic', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_output_topic" class="source">
+    <pre><code>@abstractmethod
+def get_output_topic(self):
+  """Returns the output topic of function"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_user_config_map">
+    <p>def <span class="ident">get_user_config_map</span>(</p><p>self)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the entire user-defined config as a dict (the dict will be empty if no user-defined config is supplied)</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_user_config_map', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_user_config_map" class="source">
+    <pre><code>@abstractmethod
+def get_user_config_map(self):
+  """Returns the entire user-defined config as a dict (the dict will be empty if no user-defined config is supplied)"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.get_user_config_value">
+    <p>def <span class="ident">get_user_config_value</span>(</p><p>self, key)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Returns the value of the user-defined config. If the key doesn't exist, None is returned</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.get_user_config_value', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.get_user_config_value" class="source">
+    <pre><code>@abstractmethod
+def get_user_config_value(self, key):
+  """Returns the value of the user-defined config. If the key doesn't exist, None is returned"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.publish">
+    <p>def <span class="ident">publish</span>(</p><p>self, topic_name, message)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Publishes message to topic_name by first serializing the message using IdentitySerDe</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.publish', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.publish" class="source">
+    <pre><code>@abstractmethod
+def publish(self, topic_name, message):
+  """Publishes message to topic_name by first serializing the message using IdentitySerDe"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.context.Context.record_metric">
+    <p>def <span class="ident">record_metric</span>(</p><p>self, metric_name, metric_value)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Records the metric_value. metric_value has to satisfy isinstance(metric_value, numbers.Number)</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.context.Context.record_metric', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.context.Context.record_metric" class="source">
+    <pre><code>@abstractmethod
+def record_metric(self, metric_name, metric_value):
+  """Records the metric_value. metric_value has to satisfy isinstance(metric_value, numbers.Number)"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+
+  </section>
+
+    </article>
+  <div class="clear"> </div>
+  <footer id="footer">
+    <p>
+      Documentation generated by
+      <a href="https://github.com/BurntSushi/pdoc">pdoc 0.3.2</a>
+    </p>
+
+    <p>pdoc is in the public domain with the
+      <a href="http://unlicense.org">UNLICENSE</a></p>
+
+    <p>Design by <a href="http://nadh.in">Kailash Nadh</a></p>
+  </footer>
+</div>
+</body>
+</html>
diff --git a/content/api/python/functions/function.m.html b/content/api/python/functions/function.m.html
new file mode 100644
index 0000000..df6ad9f
--- /dev/null
+++ b/content/api/python/functions/function.m.html
@@ -0,0 +1,1139 @@
+<!doctype html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+
+    <title>pulsar.functions.function API documentation</title>
+    <meta name="description" content="function.py: This is the core interface of the function api.
+# The process method is called for ever..." />
+
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300' rel='stylesheet' type='text/css'>
+  
+  <style type="text/css">
+  
+* {
+  box-sizing: border-box;
+}
+/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Prevent system color scheme's background color being used in Firefox, IE,
+ *    and Opera.
+ * 2. Prevent system color scheme's text color being used in Firefox, IE, and
+ *    Opera.
+ * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 4. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    background: #fff; /* 1 */
+    color: #000; /* 2 */
+    font-size: 100%; /* 3 */
+    -webkit-text-size-adjust: 100%; /* 4 */
+    -ms-text-size-adjust: 100%; /* 4 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+  </style>
+
+  <style type="text/css">
+  
+  html, body {
+    margin: 0;
+    padding: 0;
+    min-height: 100%;
+  }
+  body {
+    background: #fff;
+    font-family: "Source Sans Pro", "Helvetica Neueue", Helvetica, sans;
+    font-weight: 300;
+    font-size: 16px;
+    line-height: 1.6em;
+  }
+  #content {
+    width: 70%;
+    max-width: 850px;
+    float: left;
+    padding: 30px 60px;
+    border-left: 1px solid #ddd;
+  }
+  #sidebar {
+    width: 25%;
+    float: left;
+    padding: 30px;
+    overflow: hidden;
+  }
+  #nav {
+    font-size: 130%;
+    margin: 0 0 15px 0;
+  }
+
+  #top {
+    display: block;
+    position: fixed;
+    bottom: 5px;
+    left: 5px;
+    font-size: .85em;
+    text-transform: uppercase;
+  }
+
+  #footer {
+    font-size: .75em;
+    padding: 5px 30px;
+    border-top: 1px solid #ddd;
+    text-align: right;
+  }
+    #footer p {
+      margin: 0 0 0 30px;
+      display: inline-block;
+    }
+
+  h1, h2, h3, h4, h5 {
+    font-weight: 300;
+  }
+  h1 {
+    font-size: 2.5em;
+    line-height: 1.1em;
+    margin: 0 0 .50em 0;
+  }
+
+  h2 {
+    font-size: 1.75em;
+    margin: 1em 0 .50em 0;
+  }
+
+  h3 {
+    margin: 25px 0 10px 0;
+  }
+
+  h4 {
+    margin: 0;
+    font-size: 105%;
+  }
+
+  a {
+    color: #058;
+    text-decoration: none;
+    transition: color .3s ease-in-out;
+  }
+
+  a:hover {
+    color: #e08524;
+    transition: color .3s ease-in-out;
+  }
+
+  pre, code, .mono, .name {
+    font-family: "Ubuntu Mono", "Cousine", "DejaVu Sans Mono", monospace;
+  }
+
+  .title .name {
+    font-weight: bold;
+  }
+  .section-title {
+    margin-top: 2em;
+  }
+  .ident {
+    color: #900;
+  }
+
+  code {
+    background: #f9f9f9;
+  } 
+
+  pre {
+    background: #fefefe;
+    border: 1px solid #ddd;
+    box-shadow: 2px 2px 0 #f3f3f3;
+    margin: 0 30px;
+    padding: 15px 30px;
+  }
+
+  .codehilite {
+    margin: 0 30px 10px 30px;
+  }
+
+    .codehilite pre {
+      margin: 0;
+    }
+    .codehilite .err { background: #ff3300; color: #fff !important; } 
+
+  table#module-list {
+    font-size: 110%;
+  }
+
+    table#module-list tr td:first-child {
+      padding-right: 10px;
+      white-space: nowrap;
+    }
+
+    table#module-list td {
+      vertical-align: top;
+      padding-bottom: 8px;
+    }
+
+      table#module-list td p {
+        margin: 0 0 7px 0;
+      }
+
+  .def {
+    display: table;
+  }
+
+    .def p {
+      display: table-cell;
+      vertical-align: top;
+      text-align: left;
+    }
+
+    .def p:first-child {
+      white-space: nowrap;
+    }
+
+    .def p:last-child {
+      width: 100%;
+    }
+
+
+  #index {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+  }
+    ul#index .class_name {
+      /* font-size: 110%; */
+      font-weight: bold;
+    }
+    #index ul {
+      margin: 0;
+    }
+
+  .item {
+    margin: 0 0 15px 0;
+  }
+
+    .item .class {
+      margin: 0 0 25px 30px;
+    }
+
+      .item .class ul.class_list {
+        margin: 0 0 20px 0;
+      }
+
+    .item .name {
+      background: #fafafa;
+      margin: 0;
+      font-weight: bold;
+      padding: 5px 10px;
+      border-radius: 3px;
+      display: inline-block;
+      min-width: 40%;
+    }
+      .item .name:hover {
+        background: #f6f6f6;
+      }
+
+    .item .empty_desc {
+      margin: 0 0 5px 0;
+      padding: 0;
+    }
+
+    .item .inheritance {
+      margin: 3px 0 0 30px;
+    }
+
+    .item .inherited {
+      color: #666;
+    }
+
+    .item .desc {
+      padding: 0 8px;
+      margin: 0;
+    }
+
+      .item .desc p {
+        margin: 0 0 10px 0;
+      }
+
+    .source_cont {
+      margin: 0;
+      padding: 0;
+    }
+
+    .source_link a {
+      background: #ffc300;
+      font-weight: 400;
+      font-size: .75em;
+      text-transform: uppercase;
+      color: #fff;
+      text-shadow: 1px 1px 0 #f4b700;
+      
+      padding: 3px 8px;
+      border-radius: 2px;
+      transition: background .3s ease-in-out;
+    }
+      .source_link a:hover {
+        background: #FF7200;
+        text-shadow: none;
+        transition: background .3s ease-in-out;
+      }
+
+    .source {
+      display: none;
+      max-height: 600px;
+      overflow-y: scroll;
+      margin-bottom: 15px;
+    }
+
+      .source .codehilite {
+        margin: 0;
+      }
+
+  .desc h1, .desc h2, .desc h3 {
+    font-size: 100% !important;
+  }
+  .clear {
+    clear: both;
+  }
+
+  @media all and (max-width: 950px) {
+    #sidebar {
+      width: 35%;
+    }
+    #content {
+      width: 65%;
+    }
+  }
+  @media all and (max-width: 650px) {
+    #top {
+      display: none;
+    }
+    #sidebar {
+      float: none;
+      width: auto;
+    }
+    #content {
+      float: none;
+      width: auto;
+      padding: 30px;
+    }
+
+    #index ul {
+      padding: 0;
+      margin-bottom: 15px;
+    }
+    #index ul li {
+      display: inline-block;
+      margin-right: 30px;
+    }
+    #footer {
+      text-align: left;
+    }
+    #footer p {
+      display: block;
+      margin: inherit;
+    }
+  }
+
+  /*****************************/
+
+  </style>
+
+
+  <style type="text/css">
+  
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+  </style>
+
+  <script type="text/javascript">
+  function toggle(id, $link) {
+    $node = document.getElementById(id);
+    if (!$node)
+    return;
+    if (!$node.style.display || $node.style.display == 'none') {
+    $node.style.display = 'block';
+    $link.innerHTML = 'Hide source &nequiv;';
+    } else {
+    $node.style.display = 'none';
+    $link.innerHTML = 'Show source &equiv;';
+    }
+  }
+  </script>
+</head>
+<body>
+<a href="#" id="top">Top</a>
+
+<div id="container">
+    
+  
+  <div id="sidebar">
+    <h1>Index</h1>
+    <ul id="index">
+
+
+    <li class="set"><h3><a href="#header-classes">Classes</a></h3>
+      <ul>
+        <li class="mono">
+        <span class="class_name"><a href="#pulsar.functions.function.Function">Function</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#pulsar.functions.function.Function.process">process</a></li>
+  </ul>
+
+        </li>
+      </ul>
+    </li>
+
+    </ul>
+  </div>
+
+    <article id="content">
+      
+  
+
+  
+
+
+  <header id="section-intro">
+  <h1 class="title"><span class="name">pulsar.functions.function</span> module</h1>
+  <p>function.py: This is the core interface of the function api.</p>
+<h1>The process method is called for every message of the input topic of the</h1>
+<h1>function. The incoming input bytes are deserialized using the serde.</h1>
+<h1>The process function can optionally emit an output</h1>
+  
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.function', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.function" class="source">
+    <pre><code>#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# -*- encoding: utf-8 -*-
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+"""function.py: This is the core interface of the function api.
+# The process method is called for every message of the input topic of the
+# function. The incoming input bytes are deserialized using the serde.
+# The process function can optionally emit an output
+"""
+from abc import abstractmethod
+
+class Function(object):
+  """Interface for Pulsar Function"""
+  @abstractmethod
+  def process(self, input, context):
+    """Process input message"""
+    pass
+</code></pre>
+  </div>
+
+  </header>
+
+  <section id="section-items">
+
+
+    <h2 class="section-title" id="header-classes">Classes</h2>
+      
+      <div class="item">
+      <p id="pulsar.functions.function.Function" class="name">class <span class="ident">Function</span></p>
+      
+  
+    <div class="desc"><p>Interface for Pulsar Function</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.function.Function', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.function.Function" class="source">
+    <pre><code>class Function(object):
+  """Interface for Pulsar Function"""
+  @abstractmethod
+  def process(self, input, context):
+    """Process input message"""
+    pass
+</code></pre>
+  </div>
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#pulsar.functions.function.Function">Function</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.function.Function.process">
+    <p>def <span class="ident">process</span>(</p><p>self, input, context)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Process input message</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.function.Function.process', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.function.Function.process" class="source">
+    <pre><code>@abstractmethod
+def process(self, input, context):
+  """Process input message"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+
+  </section>
+
+    </article>
+  <div class="clear"> </div>
+  <footer id="footer">
+    <p>
+      Documentation generated by
+      <a href="https://github.com/BurntSushi/pdoc">pdoc 0.3.2</a>
+    </p>
+
+    <p>pdoc is in the public domain with the
+      <a href="http://unlicense.org">UNLICENSE</a></p>
+
+    <p>Design by <a href="http://nadh.in">Kailash Nadh</a></p>
+  </footer>
+</div>
+</body>
+</html>
diff --git a/content/api/python/functions/index.html b/content/api/python/functions/index.html
new file mode 100644
index 0000000..cfc53c8
--- /dev/null
+++ b/content/api/python/functions/index.html
@@ -0,0 +1,1075 @@
+<!doctype html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+
+    <title>pulsar.functions API documentation</title>
+    <meta name="description" content="" />
+
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300' rel='stylesheet' type='text/css'>
+  
+  <style type="text/css">
+  
+* {
+  box-sizing: border-box;
+}
+/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Prevent system color scheme's background color being used in Firefox, IE,
+ *    and Opera.
+ * 2. Prevent system color scheme's text color being used in Firefox, IE, and
+ *    Opera.
+ * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 4. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    background: #fff; /* 1 */
+    color: #000; /* 2 */
+    font-size: 100%; /* 3 */
+    -webkit-text-size-adjust: 100%; /* 4 */
+    -ms-text-size-adjust: 100%; /* 4 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+  </style>
+
+  <style type="text/css">
+  
+  html, body {
+    margin: 0;
+    padding: 0;
+    min-height: 100%;
+  }
+  body {
+    background: #fff;
+    font-family: "Source Sans Pro", "Helvetica Neueue", Helvetica, sans;
+    font-weight: 300;
+    font-size: 16px;
+    line-height: 1.6em;
+  }
+  #content {
+    width: 70%;
+    max-width: 850px;
+    float: left;
+    padding: 30px 60px;
+    border-left: 1px solid #ddd;
+  }
+  #sidebar {
+    width: 25%;
+    float: left;
+    padding: 30px;
+    overflow: hidden;
+  }
+  #nav {
+    font-size: 130%;
+    margin: 0 0 15px 0;
+  }
+
+  #top {
+    display: block;
+    position: fixed;
+    bottom: 5px;
+    left: 5px;
+    font-size: .85em;
+    text-transform: uppercase;
+  }
+
+  #footer {
+    font-size: .75em;
+    padding: 5px 30px;
+    border-top: 1px solid #ddd;
+    text-align: right;
+  }
+    #footer p {
+      margin: 0 0 0 30px;
+      display: inline-block;
+    }
+
+  h1, h2, h3, h4, h5 {
+    font-weight: 300;
+  }
+  h1 {
+    font-size: 2.5em;
+    line-height: 1.1em;
+    margin: 0 0 .50em 0;
+  }
+
+  h2 {
+    font-size: 1.75em;
+    margin: 1em 0 .50em 0;
+  }
+
+  h3 {
+    margin: 25px 0 10px 0;
+  }
+
+  h4 {
+    margin: 0;
+    font-size: 105%;
+  }
+
+  a {
+    color: #058;
+    text-decoration: none;
+    transition: color .3s ease-in-out;
+  }
+
+  a:hover {
+    color: #e08524;
+    transition: color .3s ease-in-out;
+  }
+
+  pre, code, .mono, .name {
+    font-family: "Ubuntu Mono", "Cousine", "DejaVu Sans Mono", monospace;
+  }
+
+  .title .name {
+    font-weight: bold;
+  }
+  .section-title {
+    margin-top: 2em;
+  }
+  .ident {
+    color: #900;
+  }
+
+  code {
+    background: #f9f9f9;
+  } 
+
+  pre {
+    background: #fefefe;
+    border: 1px solid #ddd;
+    box-shadow: 2px 2px 0 #f3f3f3;
+    margin: 0 30px;
+    padding: 15px 30px;
+  }
+
+  .codehilite {
+    margin: 0 30px 10px 30px;
+  }
+
+    .codehilite pre {
+      margin: 0;
+    }
+    .codehilite .err { background: #ff3300; color: #fff !important; } 
+
+  table#module-list {
+    font-size: 110%;
+  }
+
+    table#module-list tr td:first-child {
+      padding-right: 10px;
+      white-space: nowrap;
+    }
+
+    table#module-list td {
+      vertical-align: top;
+      padding-bottom: 8px;
+    }
+
+      table#module-list td p {
+        margin: 0 0 7px 0;
+      }
+
+  .def {
+    display: table;
+  }
+
+    .def p {
+      display: table-cell;
+      vertical-align: top;
+      text-align: left;
+    }
+
+    .def p:first-child {
+      white-space: nowrap;
+    }
+
+    .def p:last-child {
+      width: 100%;
+    }
+
+
+  #index {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+  }
+    ul#index .class_name {
+      /* font-size: 110%; */
+      font-weight: bold;
+    }
+    #index ul {
+      margin: 0;
+    }
+
+  .item {
+    margin: 0 0 15px 0;
+  }
+
+    .item .class {
+      margin: 0 0 25px 30px;
+    }
+
+      .item .class ul.class_list {
+        margin: 0 0 20px 0;
+      }
+
+    .item .name {
+      background: #fafafa;
+      margin: 0;
+      font-weight: bold;
+      padding: 5px 10px;
+      border-radius: 3px;
+      display: inline-block;
+      min-width: 40%;
+    }
+      .item .name:hover {
+        background: #f6f6f6;
+      }
+
+    .item .empty_desc {
+      margin: 0 0 5px 0;
+      padding: 0;
+    }
+
+    .item .inheritance {
+      margin: 3px 0 0 30px;
+    }
+
+    .item .inherited {
+      color: #666;
+    }
+
+    .item .desc {
+      padding: 0 8px;
+      margin: 0;
+    }
+
+      .item .desc p {
+        margin: 0 0 10px 0;
+      }
+
+    .source_cont {
+      margin: 0;
+      padding: 0;
+    }
+
+    .source_link a {
+      background: #ffc300;
+      font-weight: 400;
+      font-size: .75em;
+      text-transform: uppercase;
+      color: #fff;
+      text-shadow: 1px 1px 0 #f4b700;
+      
+      padding: 3px 8px;
+      border-radius: 2px;
+      transition: background .3s ease-in-out;
+    }
+      .source_link a:hover {
+        background: #FF7200;
+        text-shadow: none;
+        transition: background .3s ease-in-out;
+      }
+
+    .source {
+      display: none;
+      max-height: 600px;
+      overflow-y: scroll;
+      margin-bottom: 15px;
+    }
+
+      .source .codehilite {
+        margin: 0;
+      }
+
+  .desc h1, .desc h2, .desc h3 {
+    font-size: 100% !important;
+  }
+  .clear {
+    clear: both;
+  }
+
+  @media all and (max-width: 950px) {
+    #sidebar {
+      width: 35%;
+    }
+    #content {
+      width: 65%;
+    }
+  }
+  @media all and (max-width: 650px) {
+    #top {
+      display: none;
+    }
+    #sidebar {
+      float: none;
+      width: auto;
+    }
+    #content {
+      float: none;
+      width: auto;
+      padding: 30px;
+    }
+
+    #index ul {
+      padding: 0;
+      margin-bottom: 15px;
+    }
+    #index ul li {
+      display: inline-block;
+      margin-right: 30px;
+    }
+    #footer {
+      text-align: left;
+    }
+    #footer p {
+      display: block;
+      margin: inherit;
+    }
+  }
+
+  /*****************************/
+
+  </style>
+
+
+  <style type="text/css">
+  
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+  </style>
+
+  <script type="text/javascript">
+  function toggle(id, $link) {
+    $node = document.getElementById(id);
+    if (!$node)
+    return;
+    if (!$node.style.display || $node.style.display == 'none') {
+    $node.style.display = 'block';
+    $link.innerHTML = 'Hide source &nequiv;';
+    } else {
+    $node.style.display = 'none';
+    $link.innerHTML = 'Show source &equiv;';
+    }
+  }
+  </script>
+</head>
+<body>
+<a href="#" id="top">Top</a>
+
+<div id="container">
+    
+  
+  <div id="sidebar">
+    <h1>Index</h1>
+    <ul id="index">
+
+
+
+    <li class="set"><h3><a href="#header-submodules">Sub-modules</a></h3>
+      <ul>
+        <li class="mono"><a href="context.m.html">pulsar.functions.context</a></li>
+        <li class="mono"><a href="function.m.html">pulsar.functions.function</a></li>
+        <li class="mono"><a href="serde.m.html">pulsar.functions.serde</a></li>
+      </ul>
+    </li>
+    </ul>
+  </div>
+
+    <article id="content">
+      
+  
+
+  
+
+
+  <header id="section-intro">
+  <h1 class="title"><span class="name">pulsar.functions</span> module</h1>
+  
+  
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions" class="source">
+    <pre><code>#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# -*- encoding: utf-8 -*-
+</code></pre>
+  </div>
+
+  </header>
+
+  <section id="section-items">
+
+
+
+    <h2 class="section-title" id="header-submodules">Sub-modules</h2>
+      <div class="item">
+      <p class="name"><a href="context.m.html">pulsar.functions.context</a></p>
+      
+  
+    <div class="desc"><p>context.py: Context defines context information available during</p>
+<h1>processing of a request.</h1></div>
+
+      </div>
+      <div class="item">
+      <p class="name"><a href="function.m.html">pulsar.functions.function</a></p>
+      
+  
+    <div class="desc"><p>function.py: This is the core interface of the function api.</p>
+<h1>The process method is called for every message of the input topic of the</h1>
+<h1>function. The incoming input bytes are deserialized using the serde.</h1>
+<h1>The process function can optionally emit an output</h1></div>
+
+      </div>
+      <div class="item">
+      <p class="name"><a href="serde.m.html">pulsar.functions.serde</a></p>
+      
+  
+    <div class="desc"><p>serde.py: SerDe defines the interface for serialization/deserialization.</p>
+<h1>Everytime a message is read from pulsar topic, the serde is invoked to</h1>
+<h1>serialize the bytes into an object before invoking the process method.</h1>
+<h1>Anytime a python object needs to be written back to pulsar, it is</h1>
+<h1>serialized ...</h1></div>
+
+      </div>
+  </section>
+
+    </article>
+  <div class="clear"> </div>
+  <footer id="footer">
+    <p>
+      Documentation generated by
+      <a href="https://github.com/BurntSushi/pdoc">pdoc 0.3.2</a>
+    </p>
+
+    <p>pdoc is in the public domain with the
+      <a href="http://unlicense.org">UNLICENSE</a></p>
+
+    <p>Design by <a href="http://nadh.in">Kailash Nadh</a></p>
+  </footer>
+</div>
+</body>
+</html>
diff --git a/content/api/python/functions/serde.m.html b/content/api/python/functions/serde.m.html
new file mode 100644
index 0000000..c5619b4
--- /dev/null
+++ b/content/api/python/functions/serde.m.html
@@ -0,0 +1,1375 @@
+<!doctype html>
+<head>
+  <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+  <meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1" />
+
+    <title>pulsar.functions.serde API documentation</title>
+    <meta name="description" content="serde.py: SerDe defines the interface for serialization/deserialization.
+# Everytime a message is re..." />
+
+  <link href='http://fonts.googleapis.com/css?family=Source+Sans+Pro:400,300' rel='stylesheet' type='text/css'>
+  
+  <style type="text/css">
+  
+* {
+  box-sizing: border-box;
+}
+/*! normalize.css v1.1.1 | MIT License | git.io/normalize */
+
+/* ==========================================================================
+   HTML5 display definitions
+   ========================================================================== */
+
+/**
+ * Correct `block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+article,
+aside,
+details,
+figcaption,
+figure,
+footer,
+header,
+hgroup,
+main,
+nav,
+section,
+summary {
+    display: block;
+}
+
+/**
+ * Correct `inline-block` display not defined in IE 6/7/8/9 and Firefox 3.
+ */
+
+audio,
+canvas,
+video {
+    display: inline-block;
+    *display: inline;
+    *zoom: 1;
+}
+
+/**
+ * Prevent modern browsers from displaying `audio` without controls.
+ * Remove excess height in iOS 5 devices.
+ */
+
+audio:not([controls]) {
+    display: none;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Firefox 3, and Safari 4.
+ * Known issue: no IE 6 support.
+ */
+
+[hidden] {
+    display: none;
+}
+
+/* ==========================================================================
+   Base
+   ========================================================================== */
+
+/**
+ * 1. Prevent system color scheme's background color being used in Firefox, IE,
+ *    and Opera.
+ * 2. Prevent system color scheme's text color being used in Firefox, IE, and
+ *    Opera.
+ * 3. Correct text resizing oddly in IE 6/7 when body `font-size` is set using
+ *    `em` units.
+ * 4. Prevent iOS text size adjust after orientation change, without disabling
+ *    user zoom.
+ */
+
+html {
+    background: #fff; /* 1 */
+    color: #000; /* 2 */
+    font-size: 100%; /* 3 */
+    -webkit-text-size-adjust: 100%; /* 4 */
+    -ms-text-size-adjust: 100%; /* 4 */
+}
+
+/**
+ * Address `font-family` inconsistency between `textarea` and other form
+ * elements.
+ */
+
+html,
+button,
+input,
+select,
+textarea {
+    font-family: sans-serif;
+}
+
+/**
+ * Address margins handled incorrectly in IE 6/7.
+ */
+
+body {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Links
+   ========================================================================== */
+
+/**
+ * Address `outline` inconsistency between Chrome and other browsers.
+ */
+
+a:focus {
+    outline: thin dotted;
+}
+
+/**
+ * Improve readability when focused and also mouse hovered in all browsers.
+ */
+
+a:active,
+a:hover {
+    outline: 0;
+}
+
+/* ==========================================================================
+   Typography
+   ========================================================================== */
+
+/**
+ * Address font sizes and margins set differently in IE 6/7.
+ * Address font sizes within `section` and `article` in Firefox 4+, Safari 5,
+ * and Chrome.
+ */
+
+h1 {
+    font-size: 2em;
+    margin: 0.67em 0;
+}
+
+h2 {
+    font-size: 1.5em;
+    margin: 0.83em 0;
+}
+
+h3 {
+    font-size: 1.17em;
+    margin: 1em 0;
+}
+
+h4 {
+    font-size: 1em;
+    margin: 1.33em 0;
+}
+
+h5 {
+    font-size: 0.83em;
+    margin: 1.67em 0;
+}
+
+h6 {
+    font-size: 0.67em;
+    margin: 2.33em 0;
+}
+
+/**
+ * Address styling not present in IE 7/8/9, Safari 5, and Chrome.
+ */
+
+abbr[title] {
+    border-bottom: 1px dotted;
+}
+
+/**
+ * Address style set to `bolder` in Firefox 3+, Safari 4/5, and Chrome.
+ */
+
+b,
+strong {
+    font-weight: bold;
+}
+
+blockquote {
+    margin: 1em 40px;
+}
+
+/**
+ * Address styling not present in Safari 5 and Chrome.
+ */
+
+dfn {
+    font-style: italic;
+}
+
+/**
+ * Address differences between Firefox and other browsers.
+ * Known issue: no IE 6/7 normalization.
+ */
+
+hr {
+    -moz-box-sizing: content-box;
+    box-sizing: content-box;
+    height: 0;
+}
+
+/**
+ * Address styling not present in IE 6/7/8/9.
+ */
+
+mark {
+    background: #ff0;
+    color: #000;
+}
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+p,
+pre {
+    margin: 1em 0;
+}
+
+/**
+ * Correct font family set oddly in IE 6, Safari 4/5, and Chrome.
+ */
+
+code,
+kbd,
+pre,
+samp {
+    font-family: monospace, serif;
+    _font-family: 'courier new', monospace;
+    font-size: 1em;
+}
+
+/**
+ * Improve readability of pre-formatted text in all browsers.
+ */
+
+pre {
+    white-space: pre;
+    white-space: pre-wrap;
+    word-wrap: break-word;
+}
+
+/**
+ * Address CSS quotes not supported in IE 6/7.
+ */
+
+q {
+    quotes: none;
+}
+
+/**
+ * Address `quotes` property not supported in Safari 4.
+ */
+
+q:before,
+q:after {
+    content: '';
+    content: none;
+}
+
+/**
+ * Address inconsistent and variable font size in all browsers.
+ */
+
+small {
+    font-size: 80%;
+}
+
+/**
+ * Prevent `sub` and `sup` affecting `line-height` in all browsers.
+ */
+
+sub,
+sup {
+    font-size: 75%;
+    line-height: 0;
+    position: relative;
+    vertical-align: baseline;
+}
+
+sup {
+    top: -0.5em;
+}
+
+sub {
+    bottom: -0.25em;
+}
+
+/* ==========================================================================
+   Lists
+   ========================================================================== */
+
+/**
+ * Address margins set differently in IE 6/7.
+ */
+
+dl,
+menu,
+ol,
+ul {
+    margin: 1em 0;
+}
+
+dd {
+    margin: 0 0 0 40px;
+}
+
+/**
+ * Address paddings set differently in IE 6/7.
+ */
+
+menu,
+ol,
+ul {
+    padding: 0 0 0 40px;
+}
+
+/**
+ * Correct list images handled incorrectly in IE 7.
+ */
+
+nav ul,
+nav ol {
+    list-style: none;
+    list-style-image: none;
+}
+
+/* ==========================================================================
+   Embedded content
+   ========================================================================== */
+
+/**
+ * 1. Remove border when inside `a` element in IE 6/7/8/9 and Firefox 3.
+ * 2. Improve image quality when scaled in IE 7.
+ */
+
+img {
+    border: 0; /* 1 */
+    -ms-interpolation-mode: bicubic; /* 2 */
+}
+
+/**
+ * Correct overflow displayed oddly in IE 9.
+ */
+
+svg:not(:root) {
+    overflow: hidden;
+}
+
+/* ==========================================================================
+   Figures
+   ========================================================================== */
+
+/**
+ * Address margin not present in IE 6/7/8/9, Safari 5, and Opera 11.
+ */
+
+figure {
+    margin: 0;
+}
+
+/* ==========================================================================
+   Forms
+   ========================================================================== */
+
+/**
+ * Correct margin displayed oddly in IE 6/7.
+ */
+
+form {
+    margin: 0;
+}
+
+/**
+ * Define consistent border, margin, and padding.
+ */
+
+fieldset {
+    border: 1px solid #c0c0c0;
+    margin: 0 2px;
+    padding: 0.35em 0.625em 0.75em;
+}
+
+/**
+ * 1. Correct color not being inherited in IE 6/7/8/9.
+ * 2. Correct text not wrapping in Firefox 3.
+ * 3. Correct alignment displayed oddly in IE 6/7.
+ */
+
+legend {
+    border: 0; /* 1 */
+    padding: 0;
+    white-space: normal; /* 2 */
+    *margin-left: -7px; /* 3 */
+}
+
+/**
+ * 1. Correct font size not being inherited in all browsers.
+ * 2. Address margins set differently in IE 6/7, Firefox 3+, Safari 5,
+ *    and Chrome.
+ * 3. Improve appearance and consistency in all browsers.
+ */
+
+button,
+input,
+select,
+textarea {
+    font-size: 100%; /* 1 */
+    margin: 0; /* 2 */
+    vertical-align: baseline; /* 3 */
+    *vertical-align: middle; /* 3 */
+}
+
+/**
+ * Address Firefox 3+ setting `line-height` on `input` using `!important` in
+ * the UA stylesheet.
+ */
+
+button,
+input {
+    line-height: normal;
+}
+
+/**
+ * Address inconsistent `text-transform` inheritance for `button` and `select`.
+ * All other form control elements do not inherit `text-transform` values.
+ * Correct `button` style inheritance in Chrome, Safari 5+, and IE 6+.
+ * Correct `select` style inheritance in Firefox 4+ and Opera.
+ */
+
+button,
+select {
+    text-transform: none;
+}
+
+/**
+ * 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
+ *    and `video` controls.
+ * 2. Correct inability to style clickable `input` types in iOS.
+ * 3. Improve usability and consistency of cursor style between image-type
+ *    `input` and others.
+ * 4. Remove inner spacing in IE 7 without affecting normal text inputs.
+ *    Known issue: inner spacing remains in IE 6.
+ */
+
+button,
+html input[type="button"], /* 1 */
+input[type="reset"],
+input[type="submit"] {
+    -webkit-appearance: button; /* 2 */
+    cursor: pointer; /* 3 */
+    *overflow: visible;  /* 4 */
+}
+
+/**
+ * Re-set default cursor for disabled elements.
+ */
+
+button[disabled],
+html input[disabled] {
+    cursor: default;
+}
+
+/**
+ * 1. Address box sizing set to content-box in IE 8/9.
+ * 2. Remove excess padding in IE 8/9.
+ * 3. Remove excess padding in IE 7.
+ *    Known issue: excess padding remains in IE 6.
+ */
+
+input[type="checkbox"],
+input[type="radio"] {
+    box-sizing: border-box; /* 1 */
+    padding: 0; /* 2 */
+    *height: 13px; /* 3 */
+    *width: 13px; /* 3 */
+}
+
+/**
+ * 1. Address `appearance` set to `searchfield` in Safari 5 and Chrome.
+ * 2. Address `box-sizing` set to `border-box` in Safari 5 and Chrome
+ *    (include `-moz` to future-proof).
+ */
+
+input[type="search"] {
+    -webkit-appearance: textfield; /* 1 */
+    -moz-box-sizing: content-box;
+    -webkit-box-sizing: content-box; /* 2 */
+    box-sizing: content-box;
+}
+
+/**
+ * Remove inner padding and search cancel button in Safari 5 and Chrome
+ * on OS X.
+ */
+
+input[type="search"]::-webkit-search-cancel-button,
+input[type="search"]::-webkit-search-decoration {
+    -webkit-appearance: none;
+}
+
+/**
+ * Remove inner padding and border in Firefox 3+.
+ */
+
+button::-moz-focus-inner,
+input::-moz-focus-inner {
+    border: 0;
+    padding: 0;
+}
+
+/**
+ * 1. Remove default vertical scrollbar in IE 6/7/8/9.
+ * 2. Improve readability and alignment in all browsers.
+ */
+
+textarea {
+    overflow: auto; /* 1 */
+    vertical-align: top; /* 2 */
+}
+
+/* ==========================================================================
+   Tables
+   ========================================================================== */
+
+/**
+ * Remove most spacing between table cells.
+ */
+
+table {
+    border-collapse: collapse;
+    border-spacing: 0;
+}
+
+  </style>
+
+  <style type="text/css">
+  
+  html, body {
+    margin: 0;
+    padding: 0;
+    min-height: 100%;
+  }
+  body {
+    background: #fff;
+    font-family: "Source Sans Pro", "Helvetica Neueue", Helvetica, sans;
+    font-weight: 300;
+    font-size: 16px;
+    line-height: 1.6em;
+  }
+  #content {
+    width: 70%;
+    max-width: 850px;
+    float: left;
+    padding: 30px 60px;
+    border-left: 1px solid #ddd;
+  }
+  #sidebar {
+    width: 25%;
+    float: left;
+    padding: 30px;
+    overflow: hidden;
+  }
+  #nav {
+    font-size: 130%;
+    margin: 0 0 15px 0;
+  }
+
+  #top {
+    display: block;
+    position: fixed;
+    bottom: 5px;
+    left: 5px;
+    font-size: .85em;
+    text-transform: uppercase;
+  }
+
+  #footer {
+    font-size: .75em;
+    padding: 5px 30px;
+    border-top: 1px solid #ddd;
+    text-align: right;
+  }
+    #footer p {
+      margin: 0 0 0 30px;
+      display: inline-block;
+    }
+
+  h1, h2, h3, h4, h5 {
+    font-weight: 300;
+  }
+  h1 {
+    font-size: 2.5em;
+    line-height: 1.1em;
+    margin: 0 0 .50em 0;
+  }
+
+  h2 {
+    font-size: 1.75em;
+    margin: 1em 0 .50em 0;
+  }
+
+  h3 {
+    margin: 25px 0 10px 0;
+  }
+
+  h4 {
+    margin: 0;
+    font-size: 105%;
+  }
+
+  a {
+    color: #058;
+    text-decoration: none;
+    transition: color .3s ease-in-out;
+  }
+
+  a:hover {
+    color: #e08524;
+    transition: color .3s ease-in-out;
+  }
+
+  pre, code, .mono, .name {
+    font-family: "Ubuntu Mono", "Cousine", "DejaVu Sans Mono", monospace;
+  }
+
+  .title .name {
+    font-weight: bold;
+  }
+  .section-title {
+    margin-top: 2em;
+  }
+  .ident {
+    color: #900;
+  }
+
+  code {
+    background: #f9f9f9;
+  } 
+
+  pre {
+    background: #fefefe;
+    border: 1px solid #ddd;
+    box-shadow: 2px 2px 0 #f3f3f3;
+    margin: 0 30px;
+    padding: 15px 30px;
+  }
+
+  .codehilite {
+    margin: 0 30px 10px 30px;
+  }
+
+    .codehilite pre {
+      margin: 0;
+    }
+    .codehilite .err { background: #ff3300; color: #fff !important; } 
+
+  table#module-list {
+    font-size: 110%;
+  }
+
+    table#module-list tr td:first-child {
+      padding-right: 10px;
+      white-space: nowrap;
+    }
+
+    table#module-list td {
+      vertical-align: top;
+      padding-bottom: 8px;
+    }
+
+      table#module-list td p {
+        margin: 0 0 7px 0;
+      }
+
+  .def {
+    display: table;
+  }
+
+    .def p {
+      display: table-cell;
+      vertical-align: top;
+      text-align: left;
+    }
+
+    .def p:first-child {
+      white-space: nowrap;
+    }
+
+    .def p:last-child {
+      width: 100%;
+    }
+
+
+  #index {
+    list-style-type: none;
+    margin: 0;
+    padding: 0;
+  }
+    ul#index .class_name {
+      /* font-size: 110%; */
+      font-weight: bold;
+    }
+    #index ul {
+      margin: 0;
+    }
+
+  .item {
+    margin: 0 0 15px 0;
+  }
+
+    .item .class {
+      margin: 0 0 25px 30px;
+    }
+
+      .item .class ul.class_list {
+        margin: 0 0 20px 0;
+      }
+
+    .item .name {
+      background: #fafafa;
+      margin: 0;
+      font-weight: bold;
+      padding: 5px 10px;
+      border-radius: 3px;
+      display: inline-block;
+      min-width: 40%;
+    }
+      .item .name:hover {
+        background: #f6f6f6;
+      }
+
+    .item .empty_desc {
+      margin: 0 0 5px 0;
+      padding: 0;
+    }
+
+    .item .inheritance {
+      margin: 3px 0 0 30px;
+    }
+
+    .item .inherited {
+      color: #666;
+    }
+
+    .item .desc {
+      padding: 0 8px;
+      margin: 0;
+    }
+
+      .item .desc p {
+        margin: 0 0 10px 0;
+      }
+
+    .source_cont {
+      margin: 0;
+      padding: 0;
+    }
+
+    .source_link a {
+      background: #ffc300;
+      font-weight: 400;
+      font-size: .75em;
+      text-transform: uppercase;
+      color: #fff;
+      text-shadow: 1px 1px 0 #f4b700;
+      
+      padding: 3px 8px;
+      border-radius: 2px;
+      transition: background .3s ease-in-out;
+    }
+      .source_link a:hover {
+        background: #FF7200;
+        text-shadow: none;
+        transition: background .3s ease-in-out;
+      }
+
+    .source {
+      display: none;
+      max-height: 600px;
+      overflow-y: scroll;
+      margin-bottom: 15px;
+    }
+
+      .source .codehilite {
+        margin: 0;
+      }
+
+  .desc h1, .desc h2, .desc h3 {
+    font-size: 100% !important;
+  }
+  .clear {
+    clear: both;
+  }
+
+  @media all and (max-width: 950px) {
+    #sidebar {
+      width: 35%;
+    }
+    #content {
+      width: 65%;
+    }
+  }
+  @media all and (max-width: 650px) {
+    #top {
+      display: none;
+    }
+    #sidebar {
+      float: none;
+      width: auto;
+    }
+    #content {
+      float: none;
+      width: auto;
+      padding: 30px;
+    }
+
+    #index ul {
+      padding: 0;
+      margin-bottom: 15px;
+    }
+    #index ul li {
+      display: inline-block;
+      margin-right: 30px;
+    }
+    #footer {
+      text-align: left;
+    }
+    #footer p {
+      display: block;
+      margin: inherit;
+    }
+  }
+
+  /*****************************/
+
+  </style>
+
+
+  <style type="text/css">
+  
+/* ==========================================================================
+   EXAMPLE Media Queries for Responsive Design.
+   These examples override the primary ('mobile first') styles.
+   Modify as content requires.
+   ========================================================================== */
+
+@media only screen and (min-width: 35em) {
+    /* Style adjustments for viewports that meet the condition */
+}
+
+@media print,
+       (-o-min-device-pixel-ratio: 5/4),
+       (-webkit-min-device-pixel-ratio: 1.25),
+       (min-resolution: 120dpi) {
+    /* Style adjustments for high resolution devices */
+}
+
+/* ==========================================================================
+   Print styles.
+   Inlined to avoid required HTTP connection: h5bp.com/r
+   ========================================================================== */
+
+@media print {
+    * {
+        background: transparent !important;
+        color: #000 !important; /* Black prints faster: h5bp.com/s */
+        box-shadow: none !important;
+        text-shadow: none !important;
+    }
+
+    a,
+    a:visited {
+        text-decoration: underline;
+    }
+
+    a[href]:after {
+        content: " (" attr(href) ")";
+    }
+
+    abbr[title]:after {
+        content: " (" attr(title) ")";
+    }
+
+    /*
+     * Don't show links for images, or javascript/internal links
+     */
+
+    .ir a:after,
+    a[href^="javascript:"]:after,
+    a[href^="#"]:after {
+        content: "";
+    }
+
+    pre,
+    blockquote {
+        border: 1px solid #999;
+        page-break-inside: avoid;
+    }
+
+    thead {
+        display: table-header-group; /* h5bp.com/t */
+    }
+
+    tr,
+    img {
+        page-break-inside: avoid;
+    }
+
+    img {
+        max-width: 100% !important;
+    }
+
+    @page {
+        margin: 0.5cm;
+    }
+
+    p,
+    h2,
+    h3 {
+        orphans: 3;
+        widows: 3;
+    }
+
+    h2,
+    h3 {
+        page-break-after: avoid;
+    }
+}
+
+  </style>
+
+  <script type="text/javascript">
+  function toggle(id, $link) {
+    $node = document.getElementById(id);
+    if (!$node)
+    return;
+    if (!$node.style.display || $node.style.display == 'none') {
+    $node.style.display = 'block';
+    $link.innerHTML = 'Hide source &nequiv;';
+    } else {
+    $node.style.display = 'none';
+    $link.innerHTML = 'Show source &equiv;';
+    }
+  }
+  </script>
+</head>
+<body>
+<a href="#" id="top">Top</a>
+
+<div id="container">
+    
+  
+  <div id="sidebar">
+    <h1>Index</h1>
+    <ul id="index">
+
+
+    <li class="set"><h3><a href="#header-classes">Classes</a></h3>
+      <ul>
+        <li class="mono">
+        <span class="class_name"><a href="#pulsar.functions.serde.IdentitySerDe">IdentitySerDe</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#pulsar.functions.serde.IdentitySerDe.deserialize">deserialize</a></li>
+    <li class="mono"><a href="#pulsar.functions.serde.IdentitySerDe.serialize">serialize</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#pulsar.functions.serde.PickleSerDe">PickleSerDe</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#pulsar.functions.serde.PickleSerDe.deserialize">deserialize</a></li>
+    <li class="mono"><a href="#pulsar.functions.serde.PickleSerDe.serialize">serialize</a></li>
+  </ul>
+
+        </li>
+        <li class="mono">
+        <span class="class_name"><a href="#pulsar.functions.serde.SerDe">SerDe</a></span>
+        
+          
+  <ul>
+    <li class="mono"><a href="#pulsar.functions.serde.SerDe.deserialize">deserialize</a></li>
+    <li class="mono"><a href="#pulsar.functions.serde.SerDe.serialize">serialize</a></li>
+  </ul>
+
+        </li>
+      </ul>
+    </li>
+
+    </ul>
+  </div>
+
+    <article id="content">
+      
+  
+
+  
+
+
+  <header id="section-intro">
+  <h1 class="title"><span class="name">pulsar.functions.serde</span> module</h1>
+  <p>serde.py: SerDe defines the interface for serialization/deserialization.</p>
+<h1>Everytime a message is read from pulsar topic, the serde is invoked to</h1>
+<h1>serialize the bytes into an object before invoking the process method.</h1>
+<h1>Anytime a python object needs to be written back to pulsar, it is</h1>
+<h1>serialized into bytes before writing.</h1>
+  
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde" class="source">
+    <pre><code>#!/usr/bin/env python
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+# -*- encoding: utf-8 -*-
+
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied.  See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+"""serde.py: SerDe defines the interface for serialization/deserialization.
+# Everytime a message is read from pulsar topic, the serde is invoked to
+# serialize the bytes into an object before invoking the process method.
+# Anytime a python object needs to be written back to pulsar, it is
+# serialized into bytes before writing.
+"""
+from abc import abstractmethod
+
+import pickle
+
+class SerDe(object):
+  """Interface for Serialization/Deserialization"""
+  @abstractmethod
+  def serialize(self, input):
+    """Serialize input message into bytes"""
+    pass
+
+  @abstractmethod
+  def deserialize(self, input_bytes):
+    """Serialize input_bytes into an object"""
+    pass
+
+class PickleSerDe(SerDe):
+  """Pickle based serializer"""
+  def serialize(self, input):
+      return pickle.dumps(input)
+
+  def deserialize(self, input_bytes):
+      return pickle.loads(input_bytes)
+
+class IdentitySerDe(SerDe):
+  """Pickle based serializer"""
+  def serialize(self, input):
+    return input
+
+  def deserialize(self, input_bytes):
+    return input_bytes
+</code></pre>
+  </div>
+
+  </header>
+
+  <section id="section-items">
+
+
+    <h2 class="section-title" id="header-classes">Classes</h2>
+      
+      <div class="item">
+      <p id="pulsar.functions.serde.IdentitySerDe" class="name">class <span class="ident">IdentitySerDe</span></p>
+      
+  
+    <div class="desc"><p>Pickle based serializer</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.IdentitySerDe', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.IdentitySerDe" class="source">
+    <pre><code>class IdentitySerDe(SerDe):
+  """Pickle based serializer"""
+  def serialize(self, input):
+    return input
+
+  def deserialize(self, input_bytes):
+    return input_bytes
+</code></pre>
+  </div>
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#pulsar.functions.serde.IdentitySerDe">IdentitySerDe</a></li>
+          <li><a href="#pulsar.functions.serde.SerDe">SerDe</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.IdentitySerDe.deserialize">
+    <p>def <span class="ident">deserialize</span>(</p><p>self, input_bytes)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#pulsar.functions.serde.SerDe">SerDe</a></code>.<code><a href="#pulsar.functions.serde.SerDe.deserialize">deserialize</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Serialize input_bytes into an object</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.IdentitySerDe.deserialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.IdentitySerDe.deserialize" class="source">
+    <pre><code>def deserialize(self, input_bytes):
+  return input_bytes
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.IdentitySerDe.serialize">
+    <p>def <span class="ident">serialize</span>(</p><p>self, input)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#pulsar.functions.serde.SerDe">SerDe</a></code>.<code><a href="#pulsar.functions.serde.SerDe.serialize">serialize</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Serialize input message into bytes</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.IdentitySerDe.serialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.IdentitySerDe.serialize" class="source">
+    <pre><code>def serialize(self, input):
+  return input
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="pulsar.functions.serde.PickleSerDe" class="name">class <span class="ident">PickleSerDe</span></p>
+      
+  
+    <div class="desc"><p>Pickle based serializer</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.PickleSerDe', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.PickleSerDe" class="source">
+    <pre><code>class PickleSerDe(SerDe):
+  """Pickle based serializer"""
+  def serialize(self, input):
+      return pickle.dumps(input)
+
+  def deserialize(self, input_bytes):
+      return pickle.loads(input_bytes)
+</code></pre>
+  </div>
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#pulsar.functions.serde.PickleSerDe">PickleSerDe</a></li>
+          <li><a href="#pulsar.functions.serde.SerDe">SerDe</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.PickleSerDe.deserialize">
+    <p>def <span class="ident">deserialize</span>(</p><p>self, input_bytes)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#pulsar.functions.serde.SerDe">SerDe</a></code>.<code><a href="#pulsar.functions.serde.SerDe.deserialize">deserialize</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Serialize input_bytes into an object</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.PickleSerDe.deserialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.PickleSerDe.deserialize" class="source">
+    <pre><code>def deserialize(self, input_bytes):
+    return pickle.loads(input_bytes)
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.PickleSerDe.serialize">
+    <p>def <span class="ident">serialize</span>(</p><p>self, input)</p>
+    </div>
+    
+    <p class="inheritance">
+     <strong>Inheritance:</strong>
+       <code><a href="#pulsar.functions.serde.SerDe">SerDe</a></code>.<code><a href="#pulsar.functions.serde.SerDe.serialize">serialize</a></code>
+    </p>
+
+    
+  
+    <div class="desc inherited"><p>Serialize input message into bytes</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.PickleSerDe.serialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.PickleSerDe.serialize" class="source">
+    <pre><code>def serialize(self, input):
+    return pickle.dumps(input)
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+      
+      <div class="item">
+      <p id="pulsar.functions.serde.SerDe" class="name">class <span class="ident">SerDe</span></p>
+      
+  
+    <div class="desc"><p>Interface for Serialization/Deserialization</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.SerDe', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.SerDe" class="source">
+    <pre><code>class SerDe(object):
+  """Interface for Serialization/Deserialization"""
+  @abstractmethod
+  def serialize(self, input):
+    """Serialize input message into bytes"""
+    pass
+
+  @abstractmethod
+  def deserialize(self, input_bytes):
+    """Serialize input_bytes into an object"""
+    pass
+</code></pre>
+  </div>
+</div>
+
+
+      <div class="class">
+          <h3>Ancestors (in MRO)</h3>
+          <ul class="class_list">
+          <li><a href="#pulsar.functions.serde.SerDe">SerDe</a></li>
+          <li>__builtin__.object</li>
+          </ul>
+          <h3>Methods</h3>
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.SerDe.deserialize">
+    <p>def <span class="ident">deserialize</span>(</p><p>self, input_bytes)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Serialize input_bytes into an object</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.SerDe.deserialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.SerDe.deserialize" class="source">
+    <pre><code>@abstractmethod
+def deserialize(self, input_bytes):
+  """Serialize input_bytes into an object"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+            
+  <div class="item">
+    <div class="name def" id="pulsar.functions.serde.SerDe.serialize">
+    <p>def <span class="ident">serialize</span>(</p><p>self, input)</p>
+    </div>
+    
+
+    
+  
+    <div class="desc"><p>Serialize input message into bytes</p></div>
+  <div class="source_cont">
+  <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.functions.serde.SerDe.serialize', this);">Show source &equiv;</a></p>
+  <div id="source-pulsar.functions.serde.SerDe.serialize" class="source">
+    <pre><code>@abstractmethod
+def serialize(self, input):
+  """Serialize input message into bytes"""
+  pass
+</code></pre>
+  </div>
+</div>
+
+  </div>
+  
+      </div>
+      </div>
+
+  </section>
+
+    </article>
+  <div class="clear"> </div>
+  <footer id="footer">
+    <p>
+      Documentation generated by
+      <a href="https://github.com/BurntSushi/pdoc">pdoc 0.3.2</a>
+    </p>
+
+    <p>pdoc is in the public domain with the
+      <a href="http://unlicense.org">UNLICENSE</a></p>
+
+    <p>Design by <a href="http://nadh.in">Kailash Nadh</a></p>
+  </footer>
+</div>
+</body>
+</html>
diff --git a/content/api/python/index.html b/content/api/python/index.html
index 52faae9..69faa9d 100644
--- a/content/api/python/index.html
+++ b/content/api/python/index.html
@@ -1065,6 +1065,11 @@ table {
       </ul>
     </li>
 
+    <li class="set"><h3><a href="#header-submodules">Sub-modules</a></h3>
+      <ul>
+        <li class="mono"><a href="functions/index.html">pulsar.functions</a></li>
+      </ul>
+    </li>
     </ul>
   </div>
 
@@ -1430,7 +1435,8 @@ class Client:
                         batching_enabled=False,
                         batching_max_messages=1000,
                         batching_max_allowed_size_in_bytes=128*1024,
-                        batching_max_publish_delay_ms=10
+                        batching_max_publish_delay_ms=10,
+                        message_routing_mode=PartitionsRoutingMode.RoundRobinDistribution
                         ):
         """
         Create a new producer on a given topic.
@@ -1465,7 +1471,8 @@ class Client:
         * `block_if_queue_full`: Set whether `send_async` operations should
           block when the outgoing message queue is full.
         * `message_routing_mode`:
-          Set the message routing mode for the partitioned producer.
+          Set the message routing mode for the partitioned producer. Default is `PartitionsRoutingMode.RoundRobinDistribution`,
+          other option is `PartitionsRoutingMode.UseSinglePartition`
         """
         _check_type(str, topic, 'topic')
         _check_type_or_none(str, producer_name, 'producer_name')
@@ -1488,6 +1495,7 @@ class Client:
         conf.batching_max_messages(batching_max_messages)
         conf.batching_max_allowed_size_in_bytes(batching_max_allowed_size_in_bytes)
         conf.batching_max_publish_delay_ms(batching_max_publish_delay_ms)
+        conf.partitions_routing_mode(message_routing_mode)
         if producer_name:
             conf.producer_name(producer_name)
         if initial_sequence_id:
@@ -2163,7 +2171,8 @@ producers and consumers.</p></div>
                         batching_enabled=False,
                         batching_max_messages=1000,
                         batching_max_allowed_size_in_bytes=128*1024,
-                        batching_max_publish_delay_ms=10
+                        batching_max_publish_delay_ms=10,
+                        message_routing_mode=PartitionsRoutingMode.RoundRobinDistribution
                         ):
         """
         Create a new producer on a given topic.
@@ -2198,7 +2207,8 @@ producers and consumers.</p></div>
         * `block_if_queue_full`: Set whether `send_async` operations should
           block when the outgoing message queue is full.
         * `message_routing_mode`:
-          Set the message routing mode for the partitioned producer.
+          Set the message routing mode for the partitioned producer. Default is `PartitionsRoutingMode.RoundRobinDistribution`,
+          other option is `PartitionsRoutingMode.UseSinglePartition`
         """
         _check_type(str, topic, 'topic')
         _check_type_or_none(str, producer_name, 'producer_name')
@@ -2221,6 +2231,7 @@ producers and consumers.</p></div>
         conf.batching_max_messages(batching_max_messages)
         conf.batching_max_allowed_size_in_bytes(batching_max_allowed_size_in_bytes)
         conf.batching_max_publish_delay_ms(batching_max_publish_delay_ms)
+        conf.partitions_routing_mode(message_routing_mode)
         if producer_name:
             conf.producer_name(producer_name)
         if initial_sequence_id:
@@ -2542,7 +2553,7 @@ producers and consumers.</p></div>
             
   <div class="item">
     <div class="name def" id="pulsar.Client.create_producer">
-    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms=10)</p>
+    <p>def <span class="ident">create_producer</span>(</p><p>self, topic, producer_name=None, initial_sequence_id=None, send_timeout_millis=30000, compression_type=_pulsar.CompressionType.NONE, max_pending_messages=1000, block_if_queue_full=False, batching_enabled=False, batching_max_messages=1000, batching_max_allowed_size_in_bytes=131072, batching_max_publish_delay_ms=10, message_routing_mode=_pulsar.PartitionsRoutingMode.RoundRobinDistribution)</p>
     </div>
     
 
@@ -2576,8 +2587,9 @@ producers and consumers.</p></div>
   an acknowledgment from the broker.
 *</code>block_if_queue_full<code>: Set whether</code>send_async<code>operations should
   block when the outgoing message queue is full.
-*</code>message_routing_mode`:
-  Set the message routing mode for the partitioned producer.</p></div>
+*</code>message_routing_mode<code>:
+  Set the message routing mode for the partitioned producer. Default is</code>PartitionsRoutingMode.RoundRobinDistribution<code>,
+  other option is</code>PartitionsRoutingMode.UseSinglePartition`</p></div>
   <div class="source_cont">
   <p class="source_link"><a href="javascript:void(0);" onclick="toggle('source-pulsar.Client.create_producer', this);">Show source &equiv;</a></p>
   <div id="source-pulsar.Client.create_producer" class="source">
@@ -2591,7 +2603,8 @@ producers and consumers.</p></div>
                     batching_enabled=False,
                     batching_max_messages=1000,
                     batching_max_allowed_size_in_bytes=128*1024,
-                    batching_max_publish_delay_ms=10
+                    batching_max_publish_delay_ms=10,
+                    message_routing_mode=PartitionsRoutingMode.RoundRobinDistribution
                     ):
     """
     Create a new producer on a given topic.
@@ -2623,7 +2636,8 @@ producers and consumers.</p></div>
     * `block_if_queue_full`: Set whether `send_async` operations should
       block when the outgoing message queue is full.
     * `message_routing_mode`:
-      Set the message routing mode for the partitioned producer.
+      Set the message routing mode for the partitioned producer. Default is `PartitionsRoutingMode.RoundRobinDistribution`,
+      other option is `PartitionsRoutingMode.UseSinglePartition`
     """
     _check_type(str, topic, 'topic')
     _check_type_or_none(str, producer_name, 'producer_name')
@@ -2645,6 +2659,7 @@ producers and consumers.</p></div>
     conf.batching_max_messages(batching_max_messages)
     conf.batching_max_allowed_size_in_bytes(batching_max_allowed_size_in_bytes)
     conf.batching_max_publish_delay_ms(batching_max_publish_delay_ms)
+    conf.partitions_routing_mode(message_routing_mode)
     if producer_name:
         conf.producer_name(producer_name)
     if initial_sequence_id:
@@ -4265,6 +4280,13 @@ a new message is available.</p>
       </div>
       </div>
 
+    <h2 class="section-title" id="header-submodules">Sub-modules</h2>
+      <div class="item">
+      <p class="name"><a href="functions/index.html">pulsar.functions</a></p>
+      
+  
+
+      </div>
   </section>
 
     </article>
diff --git a/content/docs/latest/reference/Configuration/index.html b/content/docs/latest/reference/Configuration/index.html
index 9175441..60db3b1 100644
--- a/content/docs/latest/reference/Configuration/index.html
+++ b/content/docs/latest/reference/Configuration/index.html
@@ -1607,6 +1607,13 @@ Ideally, ledger dirs and the journal dir are each in a different device, which r
       <td>5</td>
     </tr>
     
+    <tr id="broker-brokerServiceCompactionMonitorIntervalInSeconds">
+      <td>brokerServiceCompactionMonitorIntervalInSeconds</td>
+      <td>Interval between checks to see if topics with compaction policies need to be compacted
+</td>
+      <td>60</td>
+    </tr>
+    
     <tr id="broker-activeConsumerFailoverDelayTimeMillis">
       <td>activeConsumerFailoverDelayTimeMillis</td>
       <td>How long to delay rewinding cursor and dispatching messages when active consumer is changed.
@@ -2122,6 +2129,55 @@ Ideally, ledger dirs and the journal dir are each in a different device, which r
       <td>org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl</td>
     </tr>
     
+    <tr id="broker-managedLedgerOffloadDriver">
+      <td>managedLedgerOffloadDriver</td>
+      <td>Driver to use to offload old data to long term storage (Possible values: S3)
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-managedLedgerOffloadMaxThreads">
+      <td>managedLedgerOffloadMaxThreads</td>
+      <td>Maximum number of thread pool threads for ledger offloading
+</td>
+      <td>2</td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadRegion">
+      <td>s3ManagedLedgerOffloadRegion</td>
+      <td>For Amazon S3 ledger offload, AWS region
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadBucket">
+      <td>s3ManagedLedgerOffloadBucket</td>
+      <td>For Amazon S3 ledger offload, Bucket to place offloaded ledger into
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadServiceEndpoint">
+      <td>s3ManagedLedgerOffloadServiceEndpoint</td>
+      <td>For Amazon S3 ledger offload, Alternative endpoint to connect to (useful for testing)
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadMaxBlockSizeInBytes">
+      <td>s3ManagedLedgerOffloadMaxBlockSizeInBytes</td>
+      <td>For Amazon S3 ledger offload, Max block size in bytes. (64MB by default, 5MB minimum)
+</td>
+      <td>67108864</td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadReadBufferSizeInBytes">
+      <td>s3ManagedLedgerOffloadReadBufferSizeInBytes</td>
+      <td>For Amazon S3 ledger offload, Read buffer size in bytes (1MB by default)
+</td>
+      <td>1048576</td>
+    </tr>
+    
   </tbody>
 </table>
 
diff --git a/content/docs/latest/reference/RestApi/index.html b/content/docs/latest/reference/RestApi/index.html
index 87c1feb..868432b 100644
--- a/content/docs/latest/reference/RestApi/index.html
+++ b/content/docs/latest/reference/RestApi/index.html
@@ -4201,7 +4201,7 @@
           <h5>
             <code class="highlighter-rouge get">GET</code>
           </h5>
-          <p>Get all namespaces that are grouped by given anti-affinity group in a given cluster. api can be only accessed by admin of any of the existing property</p>
+          <p>Get all namespaces that are grouped by given anti-affinity group in a given cluster. api can be only accessed by admin of any of the existing tenant</p>
           
           <h5>URL parameters</h5>
           <table>
@@ -4230,7 +4230,7 @@
               </tr>
               
               <tr>
-                <td><code class="highlighter-rouge">property</code></td>
+                <td><code class="highlighter-rouge">tenant</code></td>
                 <td>query</td>
                 <td>false</td>
                 <td>string</td>
diff --git a/content/download/index.html b/content/download/index.html
index a841b03..872e0e2 100644
--- a/content/download/index.html
+++ b/content/download/index.html
@@ -297,12 +297,12 @@
     <tr>
       <td style="text-align: left">Binary</td>
       <td style="text-align: left"><a href="https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&amp;filename=incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz">pulsar-2.0.0-rc1-incubating-bin.tar.gz</a></td>
-      <td style="text-align: left"><a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.asc">asc</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.md5">md5</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.sha512">sha512</a></td>
+      <td style="text-align: left"><a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.asc">asc</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.sha1">sha1</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-bin.tar.gz.sha512">sha512</a></td>
     </tr>
     <tr>
       <td style="text-align: left">Source</td>
       <td style="text-align: left"><a href="https://www.apache.org/dyn/mirrors/mirrors.cgi?action=download&amp;filename=incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz">pulsar-2.0.0-rc1-incubating-src.tar.gz</a></td>
-      <td style="text-align: left"><a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.asc">asc</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.md5">md5</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.sha512">sha512</a></td>
+      <td style="text-align: left"><a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.asc">asc</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.sha1">sha1</a>, <a href="https://www.apache.org/dist/incubator/pulsar/pulsar-2.0.0-rc1-incubating/apache-pulsar-2.0.0-rc1-incubating-src.tar.gz.sha512">sha512</a></td>
     </tr>
   </tbody>
 </table>
@@ -363,26 +363,26 @@ the same as ours.</p>
   <tbody>
     <tr>
       <td style="text-align: left">1.22.0-incubating</td>
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz">pulsar-1.22.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz.md5">md5</a>, <a href=" [...]
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz">pulsar-1.22.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz.md5">md5</a>, <a href=" [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz">pulsar-1.22.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-bin.tar.gz.sha1">sha1</a>, <a href [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz">pulsar-1.22.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.22.0-incubating/apache-pulsar-1.22.0-incubating-src.tar.gz.sha1">sha1</a>, <a href [...]
       <td style="text-align: left"><a href="https://github.com/apache/incubator-pulsar/releases/tag/v1.22.0-incubating">Release notes v1.22.0-incubating</a></td>
     </tr>
     <tr>
       <td style="text-align: left">1.21.0-incubating</td>
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz">pulsar-1.21.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz.md5">md5</a>, <a href=" [...]
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz">pulsar-1.21.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz.md5">md5</a>, <a href=" [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz">pulsar-1.21.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-bin.tar.gz.sha1">sha1</a>, <a href [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz">pulsar-1.21.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.21.0-incubating/apache-pulsar-1.21.0-incubating-src.tar.gz.sha1">sha1</a>, <a href [...]
       <td style="text-align: left"><a href="https://github.com/apache/incubator-pulsar/releases/tag/v1.21.0-incubating">Release notes v1.21.0-incubating</a></td>
     </tr>
     <tr>
       <td style="text-align: left">1.20.0-incubating</td>
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz">pulsar-1.20.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz.md5">md5</a>, <a href=" [...]
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz">pulsar-1.20.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz.md5">md5</a>, <a href=" [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz">pulsar-1.20.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-bin.tar.gz.sha1">sha1</a>, <a href [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz">pulsar-1.20.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.20.0-incubating/apache-pulsar-1.20.0-incubating-src.tar.gz.sha1">sha1</a>, <a href [...]
       <td style="text-align: left"><a href="https://github.com/apache/incubator-pulsar/releases/tag/v1.20.0-incubating">Release notes v1.20.0-incubating</a></td>
     </tr>
     <tr>
       <td style="text-align: left">1.19.0-incubating</td>
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz">pulsar-1.19.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz.md5">md5</a>, <a href=" [...]
-      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz">pulsar-1.19.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz.md5">md5</a>, <a href=" [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz">pulsar-1.19.0-incubating-bin.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-bin.tar.gz.sha1">sha1</a>, <a href [...]
+      <td style="text-align: left"><a href="http://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz">pulsar-1.19.0-incubating-src.tar.gz</a> - <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz.asc">asc</a>, <a href="https://archive.apache.org/dist/incubator/pulsar/pulsar-1.19.0-incubating/apache-pulsar-1.19.0-incubating-src.tar.gz.sha1">sha1</a>, <a href [...]
       <td style="text-align: left"><a href="https://github.com/apache/incubator-pulsar/releases/tag/v1.19.0-incubating">Release notes v1.19.0-incubating</a></td>
     </tr>
   </tbody>
diff --git a/content/ja/reference/Configuration/index.html b/content/ja/reference/Configuration/index.html
index 85541e0..fef4866 100644
--- a/content/ja/reference/Configuration/index.html
+++ b/content/ja/reference/Configuration/index.html
@@ -1387,6 +1387,13 @@ Ideally, ledger dirs and the journal dir are each in a different device, which r
       <td>5</td>
     </tr>
     
+    <tr id="broker-brokerServiceCompactionMonitorIntervalInSeconds">
+      <td>brokerServiceCompactionMonitorIntervalInSeconds</td>
+      <td>Interval between checks to see if topics with compaction policies need to be compacted
+</td>
+      <td>60</td>
+    </tr>
+    
     <tr id="broker-activeConsumerFailoverDelayTimeMillis">
       <td>activeConsumerFailoverDelayTimeMillis</td>
       <td>How long to delay rewinding cursor and dispatching messages when active consumer is changed.
@@ -1902,6 +1909,55 @@ Ideally, ledger dirs and the journal dir are each in a different device, which r
       <td>org.apache.pulsar.broker.loadbalance.impl.SimpleLoadManagerImpl</td>
     </tr>
     
+    <tr id="broker-managedLedgerOffloadDriver">
+      <td>managedLedgerOffloadDriver</td>
+      <td>Driver to use to offload old data to long term storage (Possible values: S3)
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-managedLedgerOffloadMaxThreads">
+      <td>managedLedgerOffloadMaxThreads</td>
+      <td>Maximum number of thread pool threads for ledger offloading
+</td>
+      <td>2</td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadRegion">
+      <td>s3ManagedLedgerOffloadRegion</td>
+      <td>For Amazon S3 ledger offload, AWS region
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadBucket">
+      <td>s3ManagedLedgerOffloadBucket</td>
+      <td>For Amazon S3 ledger offload, Bucket to place offloaded ledger into
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadServiceEndpoint">
+      <td>s3ManagedLedgerOffloadServiceEndpoint</td>
+      <td>For Amazon S3 ledger offload, Alternative endpoint to connect to (useful for testing)
+</td>
+      <td></td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadMaxBlockSizeInBytes">
+      <td>s3ManagedLedgerOffloadMaxBlockSizeInBytes</td>
+      <td>For Amazon S3 ledger offload, Max block size in bytes. (64MB by default, 5MB minimum)
+</td>
+      <td>67108864</td>
+    </tr>
+    
+    <tr id="broker-s3ManagedLedgerOffloadReadBufferSizeInBytes">
+      <td>s3ManagedLedgerOffloadReadBufferSizeInBytes</td>
+      <td>For Amazon S3 ledger offload, Read buffer size in bytes (1MB by default)
+</td>
+      <td>1048576</td>
+    </tr>
+    
   </tbody>
 </table>
 
diff --git a/content/ja/reference/RestApi/index.html b/content/ja/reference/RestApi/index.html
index 3fc0151..9485acb 100644
--- a/content/ja/reference/RestApi/index.html
+++ b/content/ja/reference/RestApi/index.html
@@ -3987,7 +3987,7 @@
           <h5>
             <code class="highlighter-rouge get">GET</code>
           </h5>
-          <p>Get all namespaces that are grouped by given anti-affinity group in a given cluster. api can be only accessed by admin of any of the existing property</p>
+          <p>Get all namespaces that are grouped by given anti-affinity group in a given cluster. api can be only accessed by admin of any of the existing tenant</p>
           
           <h5>URL parameters</h5>
           <table>
@@ -4016,7 +4016,7 @@
               </tr>
               
               <tr>
-                <td><code class="highlighter-rouge">property</code></td>
+                <td><code class="highlighter-rouge">tenant</code></td>
                 <td>query</td>
                 <td>false</td>
                 <td>string</td>

-- 
To stop receiving notification emails like this one, please contact
mmerli@apache.org.