diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..11069ed
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,201 @@
+                              Apache License
+                        Version 2.0, January 2004
+                     http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+   "License" shall mean the terms and conditions for use, reproduction,
+   and distribution as defined by Sections 1 through 9 of this document.
+
+   "Licensor" shall mean the copyright owner or entity authorized by
+   the copyright owner that is granting the License.
+
+   "Legal Entity" shall mean the union of the acting entity and all
+   other entities that control, are controlled by, or are under common
+   control with that entity. For the purposes of this definition,
+   "control" means (i) the power, direct or indirect, to cause the
+   direction or management of such entity, whether by contract or
+   otherwise, or (ii) ownership of fifty percent (50%) or more of the
+   outstanding shares, or (iii) beneficial ownership of such entity.
+
+   "You" (or "Your") shall mean an individual or Legal Entity
+   exercising permissions granted by this License.
+
+   "Source" form shall mean the preferred form for making modifications,
+   including but not limited to software source code, documentation
+   source, and configuration files.
+
+   "Object" form shall mean any form resulting from mechanical
+   transformation or translation of a Source form, including but
+   not limited to compiled object code, generated documentation,
+   and conversions to other media types.
+
+   "Work" shall mean the work of authorship, whether in Source or
+   Object form, made available under the License, as indicated by a
+   copyright notice that is included in or attached to the work
+   (an example is provided in the Appendix below).
+
+   "Derivative Works" shall mean any work, whether in Source or Object
+   form, that is based on (or derived from) the Work and for which the
+   editorial revisions, annotations, elaborations, or other modifications
+   represent, as a whole, an original work of authorship. For the purposes
+   of this License, Derivative Works shall not include works that remain
+   separable from, or merely link (or bind by name) to the interfaces of,
+   the Work and Derivative Works thereof.
+
+   "Contribution" shall mean any work of authorship, including
+   the original version of the Work and any modifications or additions
+   to that Work or Derivative Works thereof, that is intentionally
+   submitted to Licensor for inclusion in the Work by the copyright owner
+   or by an individual or Legal Entity authorized to submit on behalf of
+   the copyright owner. For the purposes of this definition, "submitted"
+   means any form of electronic, verbal, or written communication sent
+   to the Licensor or its representatives, including but not limited to
+   communication on electronic mailing lists, source code control systems,
+   and issue tracking systems that are managed by, or on behalf of, the
+   Licensor for the purpose of discussing and improving the Work, but
+   excluding communication that is conspicuously marked or otherwise
+   designated in writing by the copyright owner as "Not a Contribution."
+
+   "Contributor" shall mean Licensor and any individual or Legal Entity
+   on behalf of whom a Contribution has been received by Licensor and
+   subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   copyright license to reproduce, prepare Derivative Works of,
+   publicly display, publicly perform, sublicense, and distribute the
+   Work and such Derivative Works in Source or Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of
+   this License, each Contributor hereby grants to You a perpetual,
+   worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+   (except as stated in this section) patent license to make, have made,
+   use, offer to sell, sell, import, and otherwise transfer the Work,
+   where such license applies only to those patent claims licensable
+   by such Contributor that are necessarily infringed by their
+   Contribution(s) alone or by combination of their Contribution(s)
+   with the Work to which such Contribution(s) was submitted. If You
+   institute patent litigation against any entity (including a
+   cross-claim or counterclaim in a lawsuit) alleging that the Work
+   or a Contribution incorporated within the Work constitutes direct
+   or contributory patent infringement, then any patent licenses
+   granted to You under this License for that Work shall terminate
+   as of the date such litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the
+   Work or Derivative Works thereof in any medium, with or without
+   modifications, and in Source or Object form, provided that You
+   meet the following conditions:
+
+   (a) You must give any other recipients of the Work or
+       Derivative Works a copy of this License; and
+
+   (b) You must cause any modified files to carry prominent notices
+       stating that You changed the files; and
+
+   (c) You must retain, in the Source form of any Derivative Works
+       that You distribute, all copyright, patent, trademark, and
+       attribution notices from the Source form of the Work,
+       excluding those notices that do not pertain to any part of
+       the Derivative Works; and
+
+   (d) If the Work includes a "NOTICE" text file as part of its
+       distribution, then any Derivative Works that You distribute must
+       include a readable copy of the attribution notices contained
+       within such NOTICE file, excluding those notices that do not
+       pertain to any part of the Derivative Works, in at least one
+       of the following places: within a NOTICE text file distributed
+       as part of the Derivative Works; within the Source form or
+       documentation, if provided along with the Derivative Works; or,
+       within a display generated by the Derivative Works, if and
+       wherever such third-party notices normally appear. The contents
+       of the NOTICE file are for informational purposes only and
+       do not modify the License. You may add Your own attribution
+       notices within Derivative Works that You distribute, alongside
+       or as an addendum to the NOTICE text from the Work, provided
+       that such additional attribution notices cannot be construed
+       as modifying the License.
+
+   You may add Your own copyright statement to Your modifications and
+   may provide additional or different license terms and conditions
+   for use, reproduction, or distribution of Your modifications, or
+   for any such Derivative Works as a whole, provided Your use,
+   reproduction, and distribution of the Work otherwise complies with
+   the conditions stated in this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise,
+   any Contribution intentionally submitted for inclusion in the Work
+   by You to the Licensor shall be under the terms and conditions of
+   this License, without any additional terms or conditions.
+   Notwithstanding the above, nothing herein shall supersede or modify
+   the terms of any separate license agreement you may have executed
+   with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+   names, trademarks, service marks, or product names of the Licensor,
+   except as required for reasonable and customary use in describing the
+   origin of the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or
+   agreed to in writing, Licensor provides the Work (and each
+   Contributor provides its Contributions) on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+   implied, including, without limitation, any warranties or conditions
+   of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+   PARTICULAR PURPOSE. You are solely responsible for determining the
+   appropriateness of using or redistributing the Work and assume any
+   risks associated with Your exercise of permissions under this License.
+
+8. Limitation of Liability. In no event and under no legal theory,
+   whether in tort (including negligence), contract, or otherwise,
+   unless required by applicable law (such as deliberate and grossly
+   negligent acts) or agreed to in writing, shall any Contributor be
+   liable to You for damages, including any direct, indirect, special,
+   incidental, or consequential damages of any character arising as a
+   result of this License or out of the use or inability to use the
+   Work (including but not limited to damages for loss of goodwill,
+   work stoppage, computer failure or malfunction, or any and all
+   other commercial damages or losses), even if such Contributor
+   has been advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing
+   the Work or Derivative Works thereof, You may choose to offer,
+   and charge a fee for, acceptance of support, warranty, indemnity,
+   or other liability obligations and/or rights consistent with this
+   License. However, in accepting such obligations, You may act only
+   on Your own behalf and on Your sole responsibility, not on behalf
+   of any other Contributor, and only if You agree to indemnify,
+   defend, and hold each Contributor harmless for any liability
+   incurred by, or claims asserted against, such Contributor by reason
+   of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work.
+
+   To apply the Apache License to your work, attach the following
+   boilerplate notice, with the fields enclosed by brackets "[]"
+   replaced with your own identifying information. (Don't include
+   the brackets!)  The text should be enclosed in the appropriate
+   comment syntax for the file format. We also recommend that a
+   file or class name and description of purpose be included on the
+   same "printed page" as the copyright notice for easier
+   identification within third-party archives.
+
+Copyright [yyyy] [name of copyright owner]
+
+Licensed 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.
diff --git a/README.md b/README.md
deleted file mode 100644
index e8532a8..0000000
--- a/README.md
+++ /dev/null
@@ -1,93 +0,0 @@
-Gerrit CI reporting and visualization plugin
-============================================
-
-This plugin allows CI system to report result outcome to Gerrit. The result is visualized on change screen pet patch set. Reporting can be done through SSH command or REST API.
-
-Persistense
------------
-
-CI data is stored in seperate CI database (not review DB used by Gerrit
-itself). The following database dialects are currently supported:
-
-* Derby
-* H2
-* MySQL
-* Oracle
-* PostgreSQL
-
-Schema initialization
----------------------
-
-Database is initialized and the schema is created with init plugin step:
-
-```
-*** SQL Database for CI plugin
-*** 
-
-Database server type           [h2]: ?
-       Supported options are:
-         derby
-         h2
-         mysql
-         oracle
-         postgresql
-Database server type           [h2]: h2
-
-Initialized <gerrit-site>
-```
-
-Schema upgrade
---------------
-
-Schema upgrade takes place in init plugin step:
-
-```
-*** SQL Database for CI plugin
-*** 
-
-Database server type           [h2]: 
-
-Upgrading schema to 2 ...
-Migrating data to schema 2 ...
-```
-
-Example for SSH command
------------------------
-
-```
-ssh gerritd ci verify --verification "'category=gate-horizon-pep8|value=1|url=https://ci.host.com/jobs/pep8/4711|verifier=Jenkins|comment=Non Voting'" a14825a6e9c75b68c6be486ec2b8b6fed43b8858
-```
-
-Example for REST API
---------------------
-
-```
-curl -X POST --digest --user jow:secret --data-binary
-@post-verify.txt --header "Content-Type: application/json;
-charset=UTF-8"
-http://localhost:8080/a/changes/1/revisions/4d5fda7e653534b1709883d96264910fab03ddbb/verify
-
-$ cat post-verify.txt
-{
-  "verifications": {
-    "gate-puma-pep8": {
-      "value": -1,
-      "url": "https://ci.host.com/jobs/pep8/1711",
-      "comment": "Failed",
-      "verifier": "Jenkins"
-    }
-  }
-}
-
-```
-
-TODO
-----
-
-* Documentation
-* UI integration
-
-License
--------
-
-Apache License 2.0
diff --git a/src/main/resources/Documentation/about.md b/src/main/resources/Documentation/about.md
new file mode 100644
index 0000000..9e01ba0
--- /dev/null
+++ b/src/main/resources/Documentation/about.md
@@ -0,0 +1,4 @@
+This plugin allows CI system to report build and test results back to Gerrit.
+The reports are stored per patchset and are saved onto an external database.
+This plugin provides a set of SSH and REST APIs to automate the reporting
+process.   The per patchset results are displayed on the Gerrit UI.
diff --git a/src/main/resources/Documentation/build.md b/src/main/resources/Documentation/build.md
new file mode 100644
index 0000000..c00a9d0
--- /dev/null
+++ b/src/main/resources/Documentation/build.md
@@ -0,0 +1,82 @@
+Build
+=====
+
+This plugin can be built with Buck or Maven.
+
+Buck
+----
+
+Two build modes are supported: Standalone and in Gerrit tree.
+The standalone build mode is recommended, as this mode doesn't require
+the Gerrit tree to exist locally.
+
+
+
+Clone bucklets library:
+
+```
+  git clone https://gerrit.googlesource.com/bucklets
+
+```
+and link it to @PLUGIN@ plugin directory:
+
+```
+  cd @PLUGIN@ && ln -s ../bucklets .
+```
+
+Add link to the .buckversion file:
+
+```
+  cd @PLUGIN@ && ln -s bucklets/buckversion .buckversion
+```
+
+Add link to the .watchmanconfig file:
+```
+  cd @PLUGIN@ && ln -s bucklets/watchmanconfig .watchmanconfig
+```
+
+To build the plugin, issue the following command:
+
+
+```
+  buck build plugin
+```
+
+The output is created in
+
+```
+  buck-out/gen/@PLUGIN@.jar
+```
+
+
+Clone or link this plugin to the plugins directory of Gerrit's source
+tree, and issue the command:
+
+```
+  buck build plugins/@PLUGIN@
+```
+
+The output is created in
+
+```
+  buck-out/gen/plugins/@PLUGIN@/@PLUGIN@.jar
+```
+
+This project can be imported into the Eclipse IDE:
+
+```
+  ./tools/eclipse/project.py
+```
+
+Maven
+-----
+
+Note that the Maven build is provided for compatibility reasons, but
+it is considered to be deprecated and will be removed in a future
+version of this plugin.
+
+To build with Maven, run
+
+```
+mvn clean package
+```
diff --git a/src/main/resources/Documentation/cmd-verify.md b/src/main/resources/Documentation/cmd-verify.md
new file mode 100644
index 0000000..6ed7284
--- /dev/null
+++ b/src/main/resources/Documentation/cmd-verify.md
@@ -0,0 +1,96 @@
+
+@PLUGIN@ verify
+=====================
+
+NAME
+----
+@PLUGIN@ verify - Apply verification to one or more patch sets
+
+SYNOPSIS
+--------
+>     ssh -p <port> <host> @PLUGIN@ verify
+>      [--project <PROJECT> | -p <PROJECT>]
+>      [--branch <BRANCH> | -b <BRANCH>]
+>      [--verification <PARAMETERS> | -v <PARAMETERS>]
+>      {COMMIT | CHANGEID,PATCHSET}...
+
+
+DESCRIPTION
+-----------
+Updates a specified patchset or commit with a verification,
+sending out email notifications and updating the database.
+
+To report the outcome for multiple jobs at once, the verification
+parameter can be used multiple times.
+
+Patch sets may be specified in 'CHANGEID,PATCHSET' format, such as
+'8242,2', or 'COMMIT' format.
+
+If a patch set is specified with the 'COMMIT' format, the complete
+or abbreviated commit SHA-1 may be used.  If the same commit is available
+in multiple projects the `--project` option may be used to limit where
+Gerrit searches for the change to only the contents of the specified project.
+If the same commit is available in multiple branches the `--branch` option
+may be used to limit where Gerrit searches for changes to only the specified
+branch.
+
+
+OPTIONS
+-------
+
+--project
+-p
+> Name of the project the intended changes are contained
+> within.  This option must be supplied before the commit
+> SHA-1 in order to take effect.
+
+--branch
+-b
+> Name of the branch the intended changes are contained
+> within.  This option must be supplied before the commit
+> SHA-1 in order to take effect.
+
+--verification
+-v
+> The key=value pair of [VerifyInput](rest-api-changes.html#verify-input)
+> parameters separated by '|' character.
+ 
+--help
+-h
+> Display usage information.
+
+
+ACCESS
+------
+Any user who has configured an SSH key.
+
+SCRIPTING
+---------
+This command is intended to be used in scripts.
+
+EXAMPLES
+--------
+
+Verified gate-horizon-pep8 test with vote=+1 on the change with commit 14a95001c.
+__Notice__ two levels of quoting are required, one for the local shell, and
+another for the argument parser inside the Gerrit server.
+
+
+>     $ ssh -p 29418 review.example.com @PLUGIN@ verify --verification
+>      "'category=gate-horizon-pep8
+>      |value=1
+>      |url=https://ci.host.com/jobs/pep8/4711
+>      |verifier=Jenkins
+>      |comment=Non Voting'"
+>      14a95001c
+
+
+SEE ALSO
+--------
+
+* [Access Controls](../../../Documentation/access-control.html)
+* [Command Line Tools](../../../Documentation/cmd-index.html)
+
+GERRIT
+------
+Part of [Gerrit Code Review](../../Documentation/index.html)
diff --git a/src/main/resources/Documentation/database.md b/src/main/resources/Documentation/database.md
new file mode 100644
index 0000000..0738345
--- /dev/null
+++ b/src/main/resources/Documentation/database.md
@@ -0,0 +1,124 @@
+<style>
+  table{
+      border-collapse: collapse;
+      border-spacing: 0;
+      border:2px solid #000000;
+  }
+  
+  th{
+      border:2px solid #000000;
+  }
+  
+  td{
+      border:1px solid #000000;
+  }
+</style>
+
+Database
+========
+
+DESCRIPTION
+-----------
+CI data is stored in a [CI database](#supported-dbs) which can be in the Gerrit
+review database or a completely separate database.
+ 
+
+Schema initialization
+---------------------
+
+The database is initialized and the schema is created with during an initial
+site creation.
+
+```
+*** SQL Database for @PLUGIN@
+*** 
+
+Database server type           [h2]: ?
+       Supported options are:
+         derby
+         h2
+         mysql
+         oracle
+         postgresql
+Database server type           [h2]: h2
+
+Initialized <gerrit-site>
+```
+
+Schema upgrade
+--------------
+
+Schema upgrade takes place in init plugin step:
+
+```
+*** SQL Database for @PLUGIN@
+*** 
+
+Database server type           [h2]: 
+
+Upgrading schema to 2 ...
+Migrating data to schema 2 ...
+```
+
+<a id="configure-db">
+Configuration
+-------------
+
+The @PLUGIN@ database can be configured in the [gerrit.config]
+(../../../Documentation/config-gerrit.html#_file_code_etc_gerrit_config_code)
+file
+
+The [database section](#database-params) configures where the @PLUGIN@ stores
+per patchset CI results.
+
+```
+[plugin "@PLUGIN@"]
+  dbType = MYSQL
+  dbUrl = jdbc:mysql://localhost:3306/cidata
+  username = gerrit2
+  password = s3kr3t
+```
+
+### <a id="supported-dbs"> @PLUGIN@ supported databases
+ * H2
+ * Apache Derby
+ * MySQL
+ * Oracle
+ * PostgreSQL
+
+### <a id="database-params"> Database Parameters
+
+|Paramter|    |Description|
+|:-------|:---|:----------|
+|database.dbType|required|Type of database server to connect to (default: H2)|
+|database.username|required|Username to connect to the database server as|
+|database.password|required|Password to authenticate to the database server with|
+|database.url|required|'jdbc:' URL for the database|
+|database.driver|optional|Name of the JDBC driver class to connect to the database with|
+|database.connectionPool|optional|If true, use connection pooling for database connections|
+|database.poolLimit|optional|Maximum number of open database connections|
+|database.poolMinIdle|optional|Minimum number of connections to keep idle in the pool|
+|database.poolMaxIdle|optional|Maximum number of connections to keep idle in the pool|
+|database.poolMaxWait|optional|Maximum amount of time a request processing thread will wait to acquire a database connection from the pool|
+|database.dataSourceInterceptorClass|optional|Class that implements DataSourceInterceptor interface to monitor SQL activity|
+
+* ms, milliseconds
+* s, sec, second, seconds
+* m, min, minute, minutes
+* h, hr, hour, hours
+
+If a unit suffix is not specified, `milliseconds` is assumed.
+
+Default is `30 seconds`.
+
+SEE ALSO
+--------
+
+* [Database Setup](../../../Documentation/database-setup.html)
+* [Automatic Site Initialization](../../../Documentation/config-auto-site-initialization.html)
+* [Database Settings](../../../Documentation/config-gerrit.html#database)
+
+
+GERRIT
+------
+Part of [Gerrit Code Review](../../../Documentation/index.html)
diff --git a/src/main/resources/Documentation/rest-api-changes.md b/src/main/resources/Documentation/rest-api-changes.md
new file mode 100644
index 0000000..5cb8662
--- /dev/null
+++ b/src/main/resources/Documentation/rest-api-changes.md
@@ -0,0 +1,242 @@
+<style>
+  table{
+      border-collapse: collapse;
+      border-spacing: 0;
+      border:2px solid #000000;
+  }
+  
+  th{
+      border:2px solid #000000;
+  }
+  
+  td{
+      border:1px solid #000000;
+  }
+</style>
+
+@PLUGIN@ - /changes/ REST API
+==============================
+
+This page describes the '/changes/' REST endpoints that are added by
+the @PLUGIN@ plugin.
+
+Please also take note of the general information on the
+[REST API](../../../Documentation/rest-api.html).
+
+<a id="plugin-endpoints"> @PLUGIN@ Endpoints
+--------------------------------------------
+
+### <a id="get-verifications"> Get Verifications
+
+__GET__ /changes/{change-id}/revisions/{revision-id}/review
+
+Gets the [verifications](#verification-info) for a change.  Please refer to the
+general [changes rest api](../../../Documentation/rest-api-changes.html#get-review)
+for additional info on this request.
+
+#### Request
+
+```
+  GET /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940/revisions/674ac754f91e64a0efb8087e59a176484bd534d1/review HTTP/1.0
+```
+
+#### Response
+
+```
+  HTTP/1.1 200 OK
+  Content-Disposition: attachment
+  Content-Type: application/json; charset=UTF-8
+
+  )]}'
+  {
+    "id": "myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940",
+    "project": "myProject",
+    "branch": "master",
+    "change_id": "I8473b95934b5732ac55d26311a706c9c2bde9940",
+    "subject": "Implementing Feature X",
+    "status": "NEW",
+    "created": "2013-02-01 09:59:32.126000000",
+    "updated": "2013-02-21 11:16:36.775000000",
+    "mergeable": true,
+    "insertions": 34,
+    "deletions": 45,
+    "_number": 3965,
+    "owner": {
+      "_account_id": 1000096,
+      "name": "John Doe",
+      "email": "john.doe@example.com"
+    },
+    "labels": {
+      "Verified": {
+        "all": [
+          {
+            "value": 0,
+            "_account_id": 1000096,
+            "name": "John Doe",
+            "email": "john.doe@example.com"
+          },
+        ],
+        "values": {
+          "-1": "Fails",
+          " 0": "No score",
+          "+1": "Verified"
+        }
+      },
+      "Code-Review": {
+        "all": [
+          {
+            "value": 1,
+            "_account_id": 1000097,
+            "name": "Jane Roe",
+            "email": "jane.roe@example.com"
+          }
+        ]
+        "values": {
+          "-2": "This shall not be merged",
+          "-1": "I would prefer this is not merged as is",
+          " 0": "No score",
+          "+1": "Looks good to me, but someone else must approve",
+          "+2": "Looks good to me, approved"
+        }
+      }
+    },
+    "permitted_labels": {
+      "Verified": [
+        "-1",
+        " 0",
+        "+1"
+      ],
+      "Code-Review": [
+        "-2",
+        "-1",
+        " 0",
+        "+1",
+        "+2"
+      ]
+    },
+    "removable_reviewers": [
+      {
+        "_account_id": 1000097,
+        "name": "Jane Roe",
+        "email": "jane.roe@example.com"
+      }
+    ],
+    "current_revision": "674ac754f91e64a0efb8087e59a176484bd534d1",
+    "revisions": {
+      "674ac754f91e64a0efb8087e59a176484bd534d1": {
+      "_number": 2,
+      "ref": "refs/changes/65/3965/2",
+      "fetch": {
+        "http": {
+          "url": "http://gerrit/myProject",
+          "ref": "refs/changes/65/3965/2"
+        }
+      },
+      "verifications": {
+        "gate-horizon-pep8": {
+            "comment": "Non Voting",
+            "url": "https://ci.host.com/jobs/pep8/4711",
+            "value": -1
+            "verifier": "Jenkins",
+        }
+      }
+    }
+  }
+```
+
+### <a id="post-verify"> Post Verify
+
+__POST__ /changes/{change-id}/revisions/{revision-id}/verify'
+
+Posts a verification on a patchset revision.
+
+The verification must be provided in the request body as a
+[VerifyInput](#verify-input) entity.
+
+#### Request
+
+```
+  POST /changes/myProject~master~I8473b95934b5732ac55d26311a706c9c2bde9940/revisions/674ac754f91e64a0efb8087e59a176484bd534d1/verify HTTP/1.0
+  Content-Type: application/json;charset=UTF-8
+
+```
+
+#### Example
+
+Verified gate-horizon-pep8 test with vote=+1 on the change with commit 14a95001c.
+_Notice_ two levels of quoting are required, one for the local shell, and
+another for the argument parser inside the Gerrit server.
+
+```
+curl -X POST --digest --user joe:secret --data-binary
+@verification_data.txt --header "Content-Type: application/json; charset=UTF-8" 
+http://localhost:8080/a/changes/1000/revisions/4d5fda7e653534b1709883d96264910fab03ddbb/verify
+
+$ cat verification_data.txt
+{
+  "verifications": {
+    "gate-puma-pep8": {
+      "value": -1,
+      "url": "https://ci.host.com/jobs/pep8/1711",
+      "comment": "Failed",
+      "verifier": "Jenkins"
+    }
+  }
+}
+
+```
+
+<a id="json-entities">JSON Entities
+-----------------------------------
+
+### <a id="verify-input"></a>VerifyInput
+
+The `VerifyInput` entity contains information for adding a verification
+to a revision.
+
+
+|Field Name  |     |Description|
+|:-----------|:----|:----------|
+|category    |required|The name of the category to be added as a verification|
+|value       |required|The value associated with the category|
+|comment     |optional|The comment associated with the category|
+|url         |optional|The url associated with the category|
+|verifier    |optional|The user that verified the revision|
+
+
+
+### <a id="revision-info"></a>RevisionInfo
+
+The `RevisionInfo` entity contains information about a patch set.
+Not all fields are returned by default.  Additional fields can
+be obtained by adding `o` parameters as described in
+[Query Changes](../../../Documentation/rest-api-changes.html#list-changes)
+
+|Field Name    |    |Description |
+|:-------------|:---|:-----------|
+|verifications |optional|The verifications on the patchset as a list of `VerificationInfo` entities|
+
+
+### <a id="verification-info"></a>VerificationInfo
+
+The `VerificationInfo` entity describes a verification on a patch set.
+
+|Field Name |Description|
+|:----------|:----------|
+|comment    |A short comment about about this verification|
+|url        |The URL for this verification|
+|value      |The value for this verification|
+|verifier   |The user that reported this verification|
+
+
+
+SEE ALSO
+--------
+
+* [Change related REST endpoints](../../../Documentation/rest-api-changes.html)
+* [Plugin Development](../../../Documentation/dev-plugins.html)
+* [REST API Development](../../../Documentation/dev-rest-api.html)
+
+GERRIT
+------
+Part of [Gerrit Code Review](../../../Documentation/index.html)
