Expand the config-contact documentation to describe the data format
Signed-off-by: Shawn O. Pearce <sop@google.com>
This commit is contained in:
		| @@ -86,9 +86,9 @@ Contact Store Protocol | ||||
| To implement a new contact store, the following details are useful. | ||||
|  | ||||
| Gerrit connects to the contact store by sending a standard | ||||
| HTTP POST request to the store URL (the exact URL that is in | ||||
| `contact_store_url` in the `system_config` table), with the | ||||
| following form parameters in the body: | ||||
| `application/x-www-form-urlencoded` within an HTTP POST request sent | ||||
| to the store URL (the exact URL that is in `contact_store_url` in the | ||||
| `system_config` table), with the following form fields in the body: | ||||
|  | ||||
| * APPSEC | ||||
| + | ||||
| @@ -111,15 +111,15 @@ string if the user hasn't chosen a preferred email. | ||||
| * filed | ||||
| + | ||||
| Seconds since the UNIX epoch of when the contact information | ||||
| was filed.  May be omitted or the empty string if the application | ||||
| was filed.  May be omitted or the empty string if Gerrit | ||||
| doesn't think the supplied contact information is valid enough. | ||||
|  | ||||
| * data | ||||
| + | ||||
| Encrypted account data as an armored ASCII blob.  This is usually | ||||
| several KB of text data as a single string, with embedded newlines | ||||
| to break the lines at about 70-75 characters.  Data can be decoded | ||||
| using GnuPG with the correct private key. | ||||
| to break the lines at about 70-75 characters per line.  Data can | ||||
| be decoded using GnuPG with the correct private key. | ||||
|  | ||||
| Upon successful store, the contact store application should respond | ||||
| with HTTP status code `200` and a body consisting only of `OK` | ||||
| @@ -129,3 +129,79 @@ a failure by Gerrit. | ||||
| Using `https://` for the store URL is *highly* encouraged, as it | ||||
| prevents man-in-the-middle attacks from reading the shared secret | ||||
| APPSEC token, or messing with the data field. | ||||
|  | ||||
| Data Format | ||||
| ~~~~~~~~~~~ | ||||
|  | ||||
| Once decrypted the `data` field looks something like the following: | ||||
|  | ||||
| ---- | ||||
| Account-Id: 1001240 | ||||
| Date: 2009-02-23 20:32:32.852 UTC | ||||
| Full-Name: John Doe | ||||
| Preferred-Email: jdoe@example.com | ||||
| Identity: jd15@some-isp.com | ||||
| Identity: jdoe@example.com <https://www.google.com/accounts/o8/id?id=AIt18axxafvda821aQZaHDF1k8akbalk218sak> | ||||
| Identity: jdoe@example.com <http://jdoe.blogger.com/> | ||||
| Address: | ||||
| 	123 Any Street | ||||
| 	Any Town, Somewhere | ||||
| Country: USA | ||||
| Phone-Number: +1 (555) 555-1212 | ||||
| Fax-Number: 555.1200 | ||||
| ---- | ||||
|  | ||||
| The fields are as follows: | ||||
|  | ||||
| * `Account-Id` | ||||
| + | ||||
| Value of the `account_id` field in the metadata database.  This is | ||||
| a unique key for this account, and links all data records to it. | ||||
|  | ||||
| * `Date` | ||||
| + | ||||
| Date and time of when this contact record was submitted by the user. | ||||
| Written in an ISO formatted date/time string (`YYYY-MM-DD hh:mm:ss`), | ||||
| in the UTC timezone. | ||||
|  | ||||
| * `Full-Name` | ||||
| + | ||||
| The `full_name` field of the account record when the user submitted | ||||
| the contact information.  This should be the user's given name and | ||||
| family name. | ||||
|  | ||||
| * `Preferred-Email` | ||||
| + | ||||
| The `preferred_email` field of the account record when the user | ||||
| submitted the contact information.  This should be one of the emails | ||||
| listed in the `Identity` field. | ||||
|  | ||||
| * `Identity` | ||||
| + | ||||
| This field occurs once for each `account_external_id` record | ||||
| in the database for this account.  The email address is listed, | ||||
| and if the user is using OpenID authentication, the OpenID claimed | ||||
| identity follows in brackets (`<...>`).  Identity lines without an | ||||
| OpenID identity are usually created by sending an email containing | ||||
| a unique hyperlink that the user must visit to setup the identity. | ||||
|  | ||||
| * `Address` | ||||
| + | ||||
| Free form text, as entered by the user.  This should describe some | ||||
| location that physical documents could be sent to, but it is not | ||||
| verified, so users can enter pretty much anything here.  Each line | ||||
| is prefixed with a single TAB character, but is otherwise exactly | ||||
| as entered. | ||||
|  | ||||
| * `Country` | ||||
| + | ||||
| Free form text, as entered by the user.  This should be some sort | ||||
| of country name or ISO country abbreviation, but it is not verified, | ||||
| so it can be pretty much anything. | ||||
|  | ||||
| * `Phone-Number`, `Fax-Number` | ||||
| + | ||||
| Free form text, as entered by the user.  The format here can be | ||||
| anything, and as the example shows, may not even be consistent in | ||||
| the same record. | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Shawn O. Pearce
					Shawn O. Pearce