commit 75465e3584c9e8db2ca132ae5b260f7016298786
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Wed Feb 29 13:13:09 2012 +0100
Make protocol page the new index.html.
---
web/css/stylesheet-ltr.css | 34 +++
web/index.html | 602 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 636 insertions(+), 0 deletions(-)
diff --git a/web/css/stylesheet-ltr.css b/web/css/stylesheet-ltr.css
new file mode 100644
index 0000000..e3c07d5
--- /dev/null
+++ b/web/css/stylesheet-ltr.css
@@ -0,0 +1,34 @@
+body {
+ background-color: white;
+ font-family: Arial, Helvetica, sans-serif;
+ font-size: 1em;
+ font-style: normal;
+ color: #000000;
+ padding-top: 0px;
+ background-color: white;
+ margin: 0px auto 0 auto;
+ width: 85%;
+ padding: 15px 0 10px 10px;
+ text-indent: 0pt;
+ direction: ltr;
+ text-align: left;
+}
+
+h2 {
+ font-size: 1.4em;
+ font-weight: bold;
+}
+
+h3 {
+ font-size: 1.2em;
+ font-weight: bold;
+}
+
+li {
+ margin: .2em .2em .2em 1em;
+}
+
+img {
+ margin: .2em .2em .2em .2em;
+}
+
diff --git a/web/index.html b/web/index.html
new file mode 100755
index 0000000..3199ea5
--- /dev/null
+++ b/web/index.html
@@ -0,0 +1,602 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<html>
+<head>
+<title>Onionoo — a Tor network status protocol</title>
+<meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
+<link href="css/stylesheet-ltr.css" type="text/css" rel="stylesheet">
+</head>
+<body>
+<h3>Onionoo protocol overview</h3>
+<p>The Onionoo service is designed as a RESTful web service.
+Onionoo clients send HTTP GET requests to the Onionoo server which
+responds with JSON-formatted replies.</p>
+<p>Onionoo clients and their developers should follow a few rules:</p>
+<ul>
+<li><b>Compression:</b> Clients should include an <i>"Accept-Encoding:
+gzip"</i> header in their requests and handle gzip-compressed responses.
+Only requests starting at a certain size will be compressed by the
+server.</li>
+<li><b>Caching:</b> Clients should cache all responses for up to five
+minutes.
+A better caching strategy may be employed in the future that will be based
+on the server's information when new data is expected to be
+available.</li>
+<li><b>Protocol changes:</b> There are plenty of reasons why we may have
+to change the protocol described here.
+Clients should be able to handle all valid JSON responses, ignoring
+unknown fields and not breaking horribly in case of missing fields.
+Protocol changes will be announced here by writing deprecated API parts in
+<b><font color="red">red</font></b> and new parts in
+<b><font color="blue">blue</font></b>.
+Deprecated parts will be removed one month after their announcement.
+Let us <a href="mailto:karsten.loesing@gmx.net">know</a> that you're
+developing a client, and we're going to inform you of upcoming protocol
+changes.
+</li>
+</ul>
+<p>The Onionoo API is described by resource types and available methods
+below.</p>
+<br>
+<h3>Summary documents</h3>
+<p>Summary documents contain short summaries of relays with nicknames,
+fingerprints, IP addresses, and running information as well as bridges
+with hashed fingerprints and running information.
+Summary documents contain the following fields:
+<ul>
+<li><b><font color="red">"version":</font></b> Version number of this
+document.
+Deprecated field.
+Deploying a versioning scheme to this service seems like overkill.
+Picking new field names and deprecating fields after one month means a lot
+less maintenance overhead.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"valid_after":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) when the contents of this document were generated.
+Deprecated field.
+This field was a quite broken way to implement caching.
+The current caching approach is to have clients cache documents for five
+minutes.
+A future caching mechanism is going to use HTTP headers.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"fresh_until":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) until when the contents of this document shall be
+considered fresh.
+Deprecated field.
+This field was a quite broken way to implement caching.
+The current caching approach is to have clients cache documents for five
+minutes.
+A future caching mechanism is going to use HTTP headers.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"relays_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained relay network status consensus started being valid.
+Indicates how recent the relay summaries in this document are.
+Required field.</li>
+<li><b>"relays":</b> Array of objects representing relay summaries.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"n":</b> Relay nickname consisting of 1–19 alphanumerical
+characters.
+Optional field.
+Omitted if the relay nickname is <i>"Unnamed"</i>.</li>
+<li><b>"f":</b> Relay fingerprint consisting of 40 upper-case hexadecimal
+characters.
+Required field.</li>
+<li><b>"a":</b> Array of IPv4 or IPv6 addresses where the relay accepts
+onion-routing connections.
+Required field.</li>
+<li><b>"r":</b> Boolean field saying whether this relay was listed as
+running in the last relay network status consensus.
+Required field.</li>
+</ul>
+</li>
+<li><b>"bridges_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained bridge network status was published.
+Indicates how recent the bridge summaries in this document are.
+Required field.</li>
+<li><b>"bridges":</b> Array of objects representing bridge summaries.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"h":</b> SHA-1 hash of the bridge fingerprint consisting of 40
+upper-case hexadecimal characters.
+Required field.</li>
+<li><b>"r":</b> Boolean field saying whether this bridge was listed as
+running in the last bridge network status.
+Required field.</li>
+</ul>
+</ul>
+<p>The following methods are available that all return a single summary
+document.
+The method and its parameters determines which relay and/or bridge
+summaries are included in the response.</p>
+<table border="0" cellpadding="4" cellspacing="0" summary="">
+<colgroup>
+<col width="350">
+<col width="650">
+</colgroup>
+<tr>
+<td><b>GET summary/all</b></td>
+<td>Return summaries of all relays and bridges that are currently running
+or that have been running in the past week.</td>
+</tr>
+<tr>
+<td><b>GET summary/running</b></td>
+<td>Return summaries of all relays and bridges that are currently
+running.</td>
+</tr>
+<tr>
+<td><b>GET summary/relays</b></td>
+<td>Return summaries of all relays that are currently running or that have
+been running in the past week, but don't include any bridges.</td>
+</tr>
+<tr>
+<td><b>GET summary/bridges</b></td>
+<td>Return summaries of all bridges that are currently running or that
+have been running in the past week, but don't include any relays.</td>
+</tr>
+<tr>
+<td><b>GET summary/search/<i>:searchtext</i></b></td>
+<td>Return summaries of all relays and bridges with <i>:searchtext</i>
+matching the beginning of a nickname, <font color="blue">(possibly
+$-prefixed)</font> fingerprint, IP address, or <font
+color="blue">(possibly $-prefixed)</font> hashed fingerprint.
+Added the option to search for $-prefixed (hashed) fingerprints on
+February 25, 2012.
+Searches are case-insensitive.</td>
+</tr>
+<tr>
+<td><b>GET summary/lookup/<i>:fingerprint</i></b></td>
+<td>Return the summary of the relay or bridge with <i>:fingerprint</i>
+matching the fingerprint or hashed fingerprint.</td>
+</tr>
+</table>
+<br>
+<h3>Detail documents</h3>
+<p>Detail documents contain all known details of relays and bridges that
+have been running in the past week.
+Detail documents are based on the network statuses published by the Tor
+directories and the server descriptors published by relays and bridges.
+Detail documents contain the following fields:
+<ul>
+<li><b><font color="red">"version":</font></b> Version number of this
+document.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"valid_after":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) when the contents of this document were generated.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"fresh_until":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) until when the contents of this document shall be
+considered fresh.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"relays_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained relay network status consensus started being valid.
+Indicates how recent the relay details in this document are.
+Required field.</li>
+<li><b>"relays":</b> Array of objects representing relay details.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"nickname":</b> Relay nickname consisting of 1–19
+alphanumerical characters.
+Optional field.
+Omitted if the relay nickname is <i>"Unnamed"</i>.</li>
+<li><b>"fingerprint":</b> Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+Required field.</li>
+<li><b><font color="red">"or_address":</font></b> Array of IPv4 or IPv6
+addresses where the relay accepts onion-routing connections.
+Deprecated field.
+Deprecated, because a relay can have a different onion-routing port for
+each onion-routing IP address.
+Combining address and port in a single string solves this; see
+<i>"or_addresses"</i> below.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"or_port":</font></b> Onion-routing port.
+Deprecated field.
+Deprecated, because a relay can have a different onion-routing port for
+each onion-routing IP address.
+Combining address and port in a single string solves this; see
+<i>"or_addresses"</i> below.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"or_addresses":</b> Array of IPv4 or IPv6 addresses and TCP ports
+or port lists where the relay accepts onion-routing connections.
+Required field.</li>
+<li><b>"exit_addresses":</b> Array of IPv4 or IPv6 addresses and TCP ports
+or port lists that the relay used to exit to the Internet in the past 24
+hours.
+Only those addresses are listed that are different from onion-routing
+addresses.
+Optional field.
+Omitted if array is empty.</li>
+<li><b><font color="red">"dir_port":</font></b> Directory port.
+Deprecated field.
+Deprecated, because it's not clear which IP address the directory port
+belongs to if there are more than one entries in <i>"or_addresses"</i>.
+Replaced by <i>"dir_address"</i>.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"dir_address":</b> IPv4 address and TCP port where the relay
+accepts directory connections.
+Optional field.
+Omitted if the relay does not accept directory connections.</li>
+<li><b>"running":</b> Boolean field saying whether this relay was listed as
+running in the last relay network status consensus.
+Required field.</li>
+<li><b>"flags":</b> Array of relay flags that the directory authorities
+assigned to this relay.
+Optional field.
+Omitted if empty.</li>
+<li><b>"country":</b> Two-letter lower-case country code as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP
+database.</li>
+<li><b><font color="blue">"country_name":</font></b> Country name as found
+in a GeoIP database by resolving the relay's first onion-routing IP
+address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP database.
+Added on February 28, 2012.</li>
+<li><b><font color="blue">"region_name":</font></b> Region name as found
+in a GeoIP database by resolving the relay's first onion-routing IP
+address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP database.
+Added on February 28, 2012.</li>
+<li><b><font color="blue">"city_name":</font></b> City name as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP database.
+Added on February 28, 2012.</li>
+<li><b><font color="blue">"latitude":</font></b> Latitude as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP database.
+Added on February 11, 2012.</li>
+<li><b><font color="blue">"longitude":</font></b> Longitude as found in a
+GeoIP database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the GeoIP database.
+Added on February 11, 2012.</li>
+<li><b><font color="blue">"as_number":</font></b> AS number as found in an
+AS database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the AS database.
+Added on February 28, 2012.</li>
+<li><b><font color="blue">"as_name":</font></b> AS name as found in an AS
+database by resolving the relay's first onion-routing IP address.
+Optional field.
+Omitted if the relay IP address could not be found in the AS database.
+Added on February 28, 2012.</li>
+<li><b><font color="red">"desc_published":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) when the relay last published a descriptor.
+Deprecated field.
+Deprecated, because this information is only useful to calculate the last
+restart time of the relay, together with <i>"uptime"</i>.
+We can as well provide that time directly in <i>"last_restarted"</i>.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"uptime"</font></b> Uptime of the relay when
+publishing its last descriptor.
+Deprecated field.
+Deprecated, because this information is only useful to calculate the last
+restart time of the relay, together with <i>"desc_published"</i>.
+Even worse, it may be mistaken for the current uptime of the relay at the
+time of publishing this detail document.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"last_restarted":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when the
+relay was last (re-)started.
+Required field.</li>
+<li><b>"advertised_bandwidth":</b> Bandwidth in bytes per second that this
+relay is willing and capable to provide.
+Required field.</li>
+<li><b>"exit_policy":</b> Array of exit-policy lines.
+Required field.</li>
+<li><b>"contact":</b> Contact address of the relay operator.
+Omitted if empty.</li>
+<li><b>"platform":</b> Platform string containing operating system and Tor
+version details.
+Optional field.
+Omitted if empty.</li>
+<li><b>"family":</b> Array of fingerprints or nicknames of relays in the
+same family as this relay.
+Optional field.
+Omitted if empty.</li>
+</ul>
+</li>
+<li><b>"bridges_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained bridge network status was published.
+Indicates how recent the bridge details in this document are.
+Required field.</li>
+<li><b>"bridges":</b> Array of objects representing bridge summaries.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"hashed_fingerprint":</b> SHA-1 hash of the bridge fingerprint
+consisting of 40 upper-case hexadecimal characters.
+Required field.</li>
+<li><b><font color="red">"or_port":</font></b> TCP port where the bridge
+accepts onion-routing connections.
+Deprecated field.
+Deprecated, because a bridge can use a different port for each
+onion-routing address.
+Replaced with <i>"or_addresses"</i>.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"or_addresses":</b> Array of sanitized IPv4 or IPv6 addresses and
+TCP ports or port lists where the bridge accepts onion-routing
+connections.
+Sanitized IP addresses are always in <i>10/8</i> or
+<i>[fd9f:2e19:3bcf/48]</i> IP networks and are only useful to learn which
+IP version the bridge uses and to detect whether the bridge changed its
+address.
+Sanitized IP addresses always change on the 1st of every month at 00:00:00
+UTC, regardless of the bridge actually changing its IP address.
+TCP ports are not sanitized.
+Required field.</li>
+<li><b><font color="red">"dir_port":</font></b> TCP port where the bridge
+accepts directory connections.
+Deprecated field.
+Deprecated, because bridges don't act as directory mirrors and only have a
+non-zero directory port if they're misconfigured.
+Even then, the directory port number is not relevant.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"running":</b> Boolean field saying whether this bridge was listed
+as running in the last bridge network status.
+Required field.</li>
+<li><b>"flags":</b> Array of relay flags that the bridge authority
+assigned to this bridge.
+Optional field.
+Omitted if empty.</li>
+<li><b><font color="red">"desc_published":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) when the bridge last published a descriptor.
+Deprecated field.
+Deprecated, because this information is only useful to calculate the last
+restart time of the bridge, together with <i>"uptime"</i>.
+We can as well provide that time directly in <i>"last_restarted"</i>.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"uptime"</font></b> Uptime of the bridge when
+publishing its last descriptor.
+Deprecated field.
+Deprecated, because this information is only useful to calculate the last
+restart time of the bridge, together with <i>"desc_published"</i>.
+Even worse, it may be mistaken for the current uptime of the bridge at the
+time of publishing this detail document.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"last_restarted":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when the
+bridge was last (re-)started.
+Required field.</li>
+<li><b>"advertised_bandwidth":</b> Bandwidth in bytes per second that this
+bridge is willing and capable to provide.
+Required field.</li>
+<li><b><font color="red">"exit_policy":</font></b> Array of exit-policy
+lines.
+Deprecated field.
+Deprecated, because exit policies are not relevant for bridges and only
+indicate a (harmless) misconfiguration.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"platform":</b> Platform string containing operating system and Tor
+version details.
+Omitted if not provided by the bridge.</li>
+<li><b><font color="red">"family":</font></b> Array of hashed fingerprints
+or "Unnamed" nicknames of relays or bridges in the same family as this
+bridge.
+Deprecated field.
+Deprecated, because node families are not relevant for bridges and only
+indicate a (harmless) misconfiguration.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"pool_assignment":</b> Information of the pool that BridgeDB
+assigned this bridge to, including further assignment information if
+available.
+Optional field.</li>
+</ul>
+</li>
+</ul>
+<p>The following methods are available that all return a single details
+document.
+The method and its parameters determines which relay and/or bridge
+details are included in the response.</p>
+<table border="0" cellpadding="4" cellspacing="0" summary="">
+<colgroup>
+<col width="350">
+<col width="650">
+</colgroup>
+<tr>
+<td><b>GET details/all</b></td>
+<td>Return details of all relays and bridges that are currently running
+or that have been running in the past week.</td>
+</tr>
+<tr>
+<td><b>GET details/running</b></td>
+<td>Return details of all relays and bridges that are currently
+running.</td>
+</tr>
+<tr>
+<td><b>GET details/relays</b></td>
+<td>Return details of all relays that are currently running or that have
+been running in the past week, but don't include any bridges.</td>
+</tr>
+<tr>
+<td><b>GET details/bridges</b></td>
+<td>Return details of all bridges that are currently running or that have
+been running in the past week, but don't include any relays.</td>
+</tr>
+<tr>
+<td><b>GET details/search/<i>:searchtext</i></b></td>
+<td>Return details of all relays and bridges with <i>:searchtext</i>
+matching the beginning of a nickname, <font color="blue">(possibly
+$-prefixed)</font> fingerprint, IP address, or <font
+color="blue">(possibly $-prefixed)</font> hashed fingerprint.
+Added the option to search for $-prefixed (hashed) fingerprints on
+February 25, 2012.
+Searches are case-insensitive.</td>
+</tr>
+<tr>
+<td><b>GET details/lookup/<i>:fingerprint</i></b></td>
+<td>Return the details of the relay or bridge with <i>:fingerprint</i>
+matching the fingerprint or hashed fingerprint.</td>
+</tr>
+</table>
+<br>
+<h3>Bandwidth documents</h3>
+<p>Bandwidth documents contain aggregate statistics of a relay's or
+bridge's consumed bandwidth for different time intervals.
+Bandwidth documents are available for all relays and bridges that have
+been running in the past week.
+Bandwidth documents contain the following fields:
+<ul>
+<li><b><font color="red">"version":</font></b> Version number of this
+document.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"valid_after":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) when the contents of this document were generated.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b><font color="red">"fresh_until":</font></b> UTC timestamp
+(YYYY-MM-DD hh:mm:ss) until when the contents of this document shall be
+considered fresh.
+Deprecated field.
+Deprecated for the same reason as stated for summary documents.
+Announced on January 26, will be removed after March 4, 2012.</li>
+<li><b>"relays_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained relay network status consensus started being valid.
+Indicates how recent the relay bandwidth documents in this document are.
+Required field.</li>
+<li><b>"relays":</b> Array of objects representing relay bandwidth
+documents.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"fingerprint":</b> Relay fingerprint consisting of 40 upper-case
+hexadecimal characters.
+Required field.</li>
+<li><b>"write_history":</b> Object containing bandwidth history objects
+for different time periods.
+Required field.
+Keys are string representation of the time period covered by the bandwidth
+history object.
+Keys are fixed strings <i>"3_days"</i>, <i>"1_week"</i>, <i>"1_month"</i>,
+<i>"3_months"</i>, <i>"1_year"</i>, and <i>"5_years"</i>.
+Keys refer to the last known bandwidth history of a relay, not to the time
+when the bandwidth document was published.
+<font color="red">A bandwidth history object is only contained if the time
+period it covers is not already contained in another bandwidth history
+object with shorter time period and higher data resolution.
+(Announced on February 13, redundant bandwidth history objects will be
+removed after March 13, 2012.)</font>
+Each bandwidth history object contains the following key-value pairs:
+<ul>
+<li><b>"first":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) of the first data
+data point in the bandwidth history.
+Required field.</li>
+<li><b>"last":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) of the last data
+data point in the bandwidth history.
+Required field.</li>
+<li><b>"interval":</b> Time interval between two data points in seconds.
+Required field.</li>
+<li><b>"factor":</b> Factor by which subsequent bandwidth values need to
+be multiplied to get a unit of bytes per second.
+The idea is that contained bandwidth values are normalized to a range from
+0 to 999 to reduce document size while still providing sufficient detail
+for both slow and fast relays.
+Required field.</li>
+<li><b>"count":</b> Number of provided data points, included mostly for
+debugging purposes.
+Can also be derived from the number of elements in the subsequent array.
+Optional field.</li>
+<li><b>"values":</b> Array of normalized bandwidth values in bytes per
+second.
+May contain null values if the relay did not provide any bandwidth data or
+only data for less than 20% of a given time period.
+Only includes non-null values for series of at least two subsequent data
+points to enable drawing of line graphs.
+Required field.</li>
+</ul>
+</li>
+<li><b>"read_history":</b> Object containing bandwidth history objects
+for different time periods.
+Required field.
+The specification of bandwidth history objects is similar to those in the
+<i>write_history</i> field.</li>
+</ul>
+</li>
+<li><b>"bridges_published":</b> UTC timestamp (YYYY-MM-DD hh:mm:ss) when
+the last contained bridge network status was published.
+Indicates how recent the bridge bandwidth documents in this document are.
+Required field.</li>
+<li><b>"bridges":</b> Array of objects representing bridge bandwidth
+documents.
+Required field.
+Each array object contains the following key-value pairs:
+<ul>
+<li><b>"fingerprint":</b> SHA-1 hash of the bridge fingerprint consisting
+of 40 upper-case hexadecimal characters.
+Required field.</li>
+<li><b>"write_history":</b> Object containing bandwidth history objects
+for different time periods.
+Required field.
+The specification of bandwidth history objects is similar to those in the
+<i>write_history</i> field of <i>relays</i>.</li>
+<li><b>"read_history":</b> Object containing bandwidth history objects
+for different time periods.
+Required field.
+The specification of bandwidth history objects is similar to those in the
+<i>write_history</i> field of <i>relays</i>.</li>
+</ul>
+</li>
+</ul>
+<p>The following methods are available that all return a single document.
+The method and its parameters determines which relay and/or bridge
+bandwidth documents are included in the response.</p>
+<table border="0" cellpadding="4" cellspacing="0" summary="">
+<colgroup>
+<col width="350">
+<col width="650">
+</colgroup>
+<tr>
+<td><b>GET bandwidth/all</b></td>
+<td>Return bandwidth documents of all relays and bridges that are
+currently running or that have been running in the past week.</td>
+</tr>
+<tr>
+<td><b>GET bandwidth/running</b></td>
+<td>Return bandwidth documents of all relays and bridges that are
+currently running.</td>
+</tr>
+<tr>
+<td><b>GET bandwidth/relays</b></td>
+<td>Return bandwidth documents of all relays that are currently running or
+that have been running in the past week, but don't include any bridges.</td>
+</tr>
+<tr>
+<td><b>GET bandwidth/bridges</b></td>
+<td>Return bandwidth documents of all bridges that are currently running
+or that have been running in the past week, but don't include any
+relays.</td>
+</tr>
+<tr>
+<td><b>GET details/search/<i>:searchtext</i></b></td>
+<td>Return bandwidth documents of all relays and bridges with
+<i>:searchtext</i> matching the beginning of a nickname, <font
+color="blue">(possibly $-prefixed)</font> fingerprint, IP address, or
+<font color="blue">(possibly $-prefixed)</font> hashed fingerprint.
+Added the option to search for $-prefixed (hashed) fingerprints on
+February 25, 2012.
+Searches are case-insensitive.</td>
+</tr>
+<tr>
+<td><b>GET bandwidth/lookup/<i>:fingerprint</i></b></td>
+<td>Return the bandwidth document of the relay or bridge with
+<i>:fingerprint</i> matching the fingerprint or hashed fingerprint.</td>
+</tr>
+</table>
+</body>
+</html>
+