├── api ├── auth │ └── registration │ │ └── index.html ├── config │ └── index.html ├── discovery │ └── index.html ├── groups │ └── index.html ├── lights │ └── index.html └── schedules │ └── index.html ├── css ├── custom.css ├── documentation.css └── vendor │ ├── 960.css │ ├── coderay.css │ ├── pygments.css │ ├── reset.css │ └── uv_active4d.css ├── favicon.ico ├── images ├── active-arrow.png ├── background-v2.png ├── background-white.png ├── bg.png ├── bg_footer_bottom.png ├── bg_footer_top.png ├── blacktocat.png ├── blacktocat.svg ├── crud-sprite.png ├── dropdown_sprites.jpg ├── expand-arrows.png ├── feed-icon-28x28.png ├── footer-logo.png ├── footer-logo.svg ├── footer_logo.png ├── logo.png ├── logo_developer.png ├── nav-rule.png ├── next_step_arrow.gif ├── posts │ ├── create-repo-init.png │ └── default-branch.png ├── qmark.png └── rackspace_logo.png ├── index.html └── js ├── documentation.js └── jquery.js /api/auth/registration/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Application registration 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Application registration

27 | 28 |

Before you can send any API calls to the bridge you’ll need to register a username. Your 29 | bridge will remember your username, and keeps track of when it was last used.

30 | 31 |

Multiple applications can be registered with the same username, as long as their devicetype 32 | is different. It is currently unknown what effect this might have on the bridge.

33 | 34 |

You can deregister a registered application through the configuration.

35 | 36 |

Registering an application

39 | 40 |

The response contains the username assigned. In some cases it might not be the same username as the one that 41 | was sent to the bridge.

42 | 43 |
POST /api
44 | 45 |

Parameters

46 | 47 |
48 |
username
49 |
numbers (0-9) and letters (a-z, A-Z), between 10 and 40 bytes in length (inclusive).
50 |
devicetype
51 |
accepts any string, between 1 and 40 bytes in length (inclusive), used to label the application with a name.
52 |

Input

53 | 54 |
{
 55 |   "username": "burgestrand",
 56 |   "devicetype": "Ruhue API Client"
 57 | }
58 | 59 |

Response

60 | 61 |

Success

62 | 63 |
[
 64 |   {
 65 |     "success": {
 66 |       "username": "burgestrand"
 67 |     }
 68 |   }
 69 | ]
70 | 71 |

Username containing a space

72 | 73 |

In this case, the response contains the username to be used for subsequent API calls, as well as an error.

74 | 75 |
[
 76 |   {
 77 |     "error": {
 78 |       "type": 7,
 79 |       "address": "/username",
 80 |       "description": "invalid value, kim burgestrand, for parameter, username"
 81 |     }
 82 |   },
 83 |   {
 84 |     "success": {
 85 |       "username": "508ed817c37c378e20ab523f25c4b"
 86 |     }
 87 |   }
 88 | ]
89 | 90 | 91 | 92 |
[
 93 |   {
 94 |     "error": {
 95 |       "type": 101,
 96 |       "address": "",
 97 |       "description": "link button not pressed"
 98 |     }
 99 |   }
100 | ]
101 | 102 |

Invalid username and empty devicetype

103 | 104 |
[
105 |   {
106 |     "error": {
107 |       "type": 7,
108 |       "address": "/username",
109 |       "description": "invalid value, burges, for parameter, username"
110 |     }
111 |   },
112 |   {
113 |     "error": {
114 |       "type": 2,
115 |       "address": "/",
116 |       "description": "body contains invalid json"
117 |     }
118 |   }
119 | ]
120 |
121 | 122 | 141 |
142 | 143 | 144 | -------------------------------------------------------------------------------- /api/config/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Bridge configuration 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Bridge configuration

27 | 28 |

You can read and change configuration settings of your bridge, such as it’s name, 29 | wether it uses DHCP or not, proxy information and application whitelist.

30 | 31 |

Reading bridge configuration

36 | 37 |
GET /api/username/config
38 | 39 |

Response

40 | 41 |
{
 42 |   "name": "Lumm",
 43 |   "mac": "00:00:00:00:7b:be",
 44 |   "dhcp": true,
 45 |   "ipaddress": "192.168.0.21",
 46 |   "netmask": "255.255.255.0",
 47 |   "gateway": "192.168.0.1",
 48 |   "proxyaddress": " ",
 49 |   "proxyport": 0,
 50 |   "UTC": "2012-11-06T21:35:35",
 51 |   "whitelist": {
 52 |     "24e04807fe143caeb52b4ccb305635f8": {
 53 |       "last use date": "2012-11-06T20:43:34",
 54 |       "create date": "1970-01-01T00:00:45",
 55 |       "name": "Kim Burgestrand’s iPhone"
 56 |     },
 57 |     "burgestrand": {
 58 |       "last use date": "2012-11-05T20:39:41",
 59 |       "create date": "2012-11-06T21:31:10",
 60 |       "name": "macbook"
 61 |     }
 62 |   },
 63 |   "swversion": "01003542",
 64 |   "swupdate": {
 65 |     "updatestate": 0,
 66 |     "url": "",
 67 |     "text": "",
 68 |     "notify": false
 69 |   },
 70 |   "linkbutton": false,
 71 |   "portalservices": true
 72 | }
73 | 74 |

Updating bridge configuration

75 | 76 |
PUT /api/username/config
77 | 78 |

Parameters

79 | 80 |

All parameters are optional. Only the parameters present will update values on the Hue.

81 | 82 |
83 |
name
84 |
new name of the Hue bridge.
85 |
dhcp
86 |
true if the bridge should use DHCP. if you set this to false you might make your bridge unreachable. 87 | If that happens, there is a “Restore to factory settings” button on the back of the bridge.
88 |
portalservices
89 |
true if remote access through http://meethue.com/ is to be enabled.
90 |
linkbutton
91 |
true to programatically press the link button on the bridge. Allows registering new applications.
92 |

Input

93 | 94 |
{
 95 |   "name": "Lumm"
 96 | }
97 | 98 |

Response

99 | 100 |
[
101 |   {
102 |     "success": {
103 |       "/config/name": "Lumm"
104 |     }
105 |   }
106 | ]
107 | 108 |

Deregistering an application

109 | 110 |

Removes a username from the whitelist of registered applications.

111 | 112 |
DELETE /api/username/config/whitelist/username
113 | 114 |

Response

115 | 116 |
[
117 |   {
118 |     "success": "/config/whitelist/burgestrand deleted"
119 |   }
120 | ]
121 |
122 | 123 | 142 |
143 | 144 | 145 | -------------------------------------------------------------------------------- /api/discovery/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Bridge discovery 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Bridge discovery

27 | 28 |

Hue bridge discovery is done on the local network through SSDP.

29 | 30 |

In summary, you send out an UDP packet to a multicast address (239.255.255.250:1900 for IPv4). The Hue bridge 31 | will respond with information on it’s whereabouts.

32 | 33 |

UDP broadcast

37 | 38 |
M-SEARCH * HTTP/1.1
 39 | HOST: 239.255.255.250:1900
 40 | MAN: ssdp:discover
 41 | MX: 10
 42 | ST: ssdp:all
 43 | 
44 | 45 |

Response

46 | 47 |
HTTP/1.1 200 OK
 48 | CACHE-CONTROL: max-age=100
 49 | EXT:
 50 | LOCATION: http://192.168.0.21:80/description.xml
 51 | SERVER: FreeRTOS/6.0.5, UPnP/1.0, IpBridge/0.1
 52 | ST: upnp:rootdevice
 53 | USN: uuid:2fa00080-d000-11e1-9b23-001f80007bbe::upnp:rootdevice
 54 | 
55 | 56 |

There may be other services on your network that respond to your search query. 57 | You’ll need to issue a GET request to /description.xml, and match against modelName 58 | to find out if it’s a Hue bridge or not.

59 | 60 |

Retrieving bridge description.xml

61 | 62 |
GET /description.xml
63 | 64 |

Response

65 | 66 |
<?xml version="1.0"?>
 67 | <root xmlns="urn:schemas-upnp-org:device-1-0">
 68 |   <specVersion>
 69 |     <major>1</major>
 70 |     <minor>0</minor>
 71 |   </specVersion>
 72 |   <URLBase>http://192.168.0.21:80/</URLBase>
 73 |   <device>
 74 |     <deviceType>urn:schemas-upnp-org:device:Basic:1</deviceType>
 75 |     <friendlyName>Philips hue (192.168.0.21)</friendlyName>
 76 |     <manufacturer>Royal Philips Electronics</manufacturer>
 77 |     <manufacturerURL>http://www.philips.com</manufacturerURL>
 78 |     <modelDescription>Philips hue Personal Wireless Lighting</modelDescription>
 79 |     <modelName>Philips hue bridge 2012</modelName>
 80 |     <modelNumber>1000000000000</modelNumber>
 81 |     <modelURL>http://www.meethue.com</modelURL>
 82 |     <serialNumber>93eadbeef13</serialNumber>
 83 |     <UDN>uuid:01234567-89ab-cdef-0123-456789abcdef</UDN>
 84 |     <serviceList>
 85 |       <service>
 86 |         <serviceType>(null)</serviceType>
 87 |         <serviceId>(null)</serviceId>
 88 |         <controlURL>(null)</controlURL>
 89 |         <eventSubURL>(null)</eventSubURL>
 90 |         <SCPDURL>(null)</SCPDURL>
 91 |       </service>
 92 |     </serviceList>
 93 |     <presentationURL>index.html</presentationURL>
 94 |     <iconList>
 95 |       <icon>
 96 |         <mimetype>image/png</mimetype>
 97 |         <height>48</height>
 98 |         <width>48</width>
 99 |         <depth>24</depth>
100 |         <url>hue_logo_0.png</url>
101 |       </icon>
102 |       <icon>
103 |         <mimetype>image/png</mimetype>
104 |         <height>120</height>
105 |         <width>120</width>
106 |         <depth>24</depth>
107 |         <url>hue_logo_3.png</url>
108 |       </icon>
109 |     </iconList>
110 |   </device>
111 | </root>
112 |
113 | 114 | 133 |
134 | 135 | 136 | -------------------------------------------------------------------------------- /api/groups/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Groups 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Groups

27 | 28 |

Groups allow you to group your lights, useful to control them all at the 29 | same time with just one API call.

30 | 31 |

Note: There exists a special group with a number of 0, which contains all 32 | lights known to the bridge. Issuing operations on group #0 will change all 33 | lights simultaneously.

34 | 35 |

List all groups

40 | 41 |
GET /api/username/groups
42 | 43 |

Response

44 | 45 |

No meaningful response known yet.

46 | 47 |

Show group information

48 | 49 |

Information retrieved is not live-updated from all lights. Values returned are simply 50 | the values that were last assigned.

51 | 52 |
GET /api/username/groups/number
53 | 54 |

Parameters

55 | 56 |
57 |
number
58 |
group number of the group you wish to control, 0 for a group which contains all lights.
59 |

Response

60 | 61 |
GET /api/username/groups/0
62 | 63 |
{
 64 |   "action": {
 65 |     "on": true,
 66 |     "bri": 254,
 67 |     "hue": 13122,
 68 |     "sat": 211,
 69 |     "xy": [
 70 |       0.5119,
 71 |       0.4147
 72 |     ],
 73 |     "ct": 467,
 74 |     "effect": "none",
 75 |     "colormode": "ct"
 76 |   },
 77 |   "lights": [
 78 |     "1",
 79 |     "2",
 80 |     "3"
 81 |   ],
 82 |   "name": "Lightset 0"
 83 | }
84 | 85 |

Controlling all lights in a group

86 | 87 |
PUT /api/username/groups/number/action
88 | 89 |

Parameters

90 | 91 |

See the API for “Changing light color and turning them on/off”.

92 | 93 |

Input

94 | 95 |
{
 96 |   "on": true,
 97 |   "hue": 25000
 98 | }
99 | 100 |

Response

101 | 102 |
[
103 |   {
104 |     "success": {
105 |       "/groups/0/action/on": true
106 |     }
107 |   },
108 |   {
109 |     "success": {
110 |       "/groups/0/action/hue": 13000
111 |     }
112 |   }
113 | ]
114 |
115 | 116 | 135 |
136 | 137 | 138 | -------------------------------------------------------------------------------- /api/lights/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Lights 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Lights

27 | 28 |

Allows you to list and control individual lights. You can only 29 | change the state of one light at a time. For controlling multiple 30 | lights with one API call, see Groups.

31 | 32 |

List all lights and their names

37 | 38 |
GET /api/username/lights
39 | 40 |

Response

41 | 42 |
{
 43 |   "1": {
 44 |     "name": "TV Left"
 45 |   },
 46 |   "2": {
 47 |     "name": "TV Right"
 48 |   }
 49 | }
50 | 51 |

The number before each light is it’s ID. You’ll use it for changing 52 | the state of the light.

53 | 54 |

Show light information

55 | 56 |
GET /api/username/lights/number
57 | 58 |

Parameters

59 | 60 |
61 |
number
62 |
number assigned to the light you wish to control, see List all lights and their names.
63 |

Response

64 | 65 |
{
 66 |   "state": {
 67 |     "on": true,
 68 |     "bri": 202,
 69 |     "hue": 13122,
 70 |     "sat": 211,
 71 |     "xy": [
 72 |       0.5119,
 73 |       0.4147
 74 |     ],
 75 |     "ct": 467,
 76 |     "alert": "none",
 77 |     "effect": "none",
 78 |     "colormode": "ct",
 79 |     "reachable": true
 80 |   },
 81 |   "type": "Extended color light",
 82 |   "name": "TV Left",
 83 |   "modelid": "LCT001",
 84 |   "swversion": "65003148",
 85 |   "pointsymbol": {
 86 |     "1": "none",
 87 |     "2": "none",
 88 |     "3": "none",
 89 |     "4": "none",
 90 |     "5": "none",
 91 |     "6": "none",
 92 |     "7": "none",
 93 |     "8": "none"
 94 |   }
 95 | }
96 | 97 |

Changing light color and turning them on/off

98 | 99 |

There are three modes of color: hue/sat/bri, xy-coordinates, or color temperature. Setting one 100 | of these will change the colormode, but will not update any other values to reflect the change.

101 | 102 |
PUT /api/username/lights/number/state
103 | 104 |

Parameters

105 | 106 |
107 |
on
108 |
true if the light should be on.
109 |
bri
110 |
brightness, in range 0 - 254. 0 is not off.
111 |
hue
112 |
hue, in range 0 - 65535.
113 |
sat
114 |
saturation, in range 0 - 254.
115 |
xy
116 |
color as array of xy-coordinates.
117 |
ct
118 |
white color temperature, 154 (cold) - 500 (warm).
119 |
alert
120 |
121 | select flashes light once, lselect flashes repeatedly for 10 seconds.
122 |
transitiontime
123 |
time for transition in centiseconds.
124 |

Input

125 | 126 |
{
127 |   "on": false
128 | }
129 | 130 |

Response

131 | 132 |
[
133 |   {
134 |     "success": {
135 |       "/lights/1/state/on": false
136 |     }
137 |   }
138 | ]
139 |
140 | 141 | 160 |
161 | 162 | 163 | -------------------------------------------------------------------------------- /api/schedules/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Schedules 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Schedules

27 | 28 |

Schedules allow you to schedule an API call for a given point in 29 | time in the future. You can schedule any Hue bridge API call.

30 | 31 |

List all schedules

38 | 39 |

All you receive from this command is the schedule id and it’s name.

40 | 41 |
GET /api/username/schedules
42 | 43 |

Response

44 | 45 |
{
 46 |   "1": {
 47 |     "name": "Frukost on f 423043           "
 48 |   },
 49 |   "2": {
 50 |     "name": "Frukost on 607775             "
 51 |   }
 52 | }
53 | 54 |

Create a new scheduled operation

55 | 56 |
POST /api/username/schedules
57 | 58 |

Parameters

59 | 60 |
61 |
name (optional)
62 |
a name to give to your schedule. Does not need to be unique. Must be between 63 | 1 and 32 characters. If not specified it defaults to “schedule”.
64 |
description (optional)
65 |
a description to give your schedule. Must be between 1 and 64 characters.
66 |
time
67 |
a time, specified in UTC, formatted as YYYY-MM-DDTHH:MM:SS, when the scheduled 68 | operation should be performed. Once performed, the scheduled operation is removed 69 | from the Hue. Values earlier than the current time will result in an error.
70 |
command
71 |
a command object, describing the request to be performed when the scheduled 72 | operation is invoked. You can invoke pretty much any URL with any method, 73 | as long as all parameters have been defined. 74 | 75 |
76 |
action
77 |
a bridge API resource to which the operation should be invoked on.
78 |
method
79 |
the HTTP method the operation should be invoked with.
80 |
body
81 |
body that the operation should be sent with, {} if it should be empty.
82 |
83 |
84 |

Input

85 | 86 |
{
 87 |   "name": "Good night",
 88 |   "description": "I should really go to bed by now.",
 89 |   "command": {
 90 |     "address": "/api/24e04807fe143caeb52b4ccb305635f8/groups/0/action",
 91 |     "method": "PUT",
 92 |     "body": {
 93 |       "on": false
 94 |     }
 95 |   },
 96 |   "time": "2013-03-02T00:00:00"
 97 | }
98 | 99 |

Response

100 | 101 |

The id given is the id number for the newly created schedule.

102 | 103 |
[
104 |   {
105 |     "success": {
106 |       "id": "1"
107 |     }
108 |   }
109 | ]
110 | 111 |

Show schedule information

112 | 113 |
GET /api/username/schedules/number
114 | 115 |

Parameters

116 | 117 |
118 |
number
119 |
group number you wish to retrieve information from.
120 |

Response

121 | 122 |
{
123 |   "name": "Good night",
124 |   "description": "I should really go to bed by now.",
125 |   "command": {
126 |     "address": "/api/burgestrand/groups/0/action",
127 |     "body": {
128 |       "on": false
129 |     },
130 |     "method": "PUT"
131 |   },
132 |   "time": "2013-03-02T00:00:00"
133 | }
134 | 135 |

Update an existing scheduled operation

136 | 137 |
PUT /api/username/schedules/number
138 | 139 |

Parameters

140 | 141 |

See the parameters for “Create a new scheduled operation”.

142 | 143 |

Input

144 | 145 |
{
146 |   "name": "Hey"
147 | }
148 | 149 |

Response

150 | 151 |
[
152 |   {
153 |     "success": {
154 |       "/schedules/1/name": "Hey"
155 |     }
156 |   }
157 | ]
158 | 159 |

Delete a previously scheduled operation

160 | 161 |
DELETE /api/username/schedules/number
162 | 163 |

Parameters

164 | 165 |
166 |
number
167 |
group number you wish to delete.
168 |

Response

169 | 170 |
[
171 |   {
172 |     "success": "/schedules/6 deleted"
173 |   }
174 | ]
175 |
176 | 177 | 196 |
197 | 198 | 199 | -------------------------------------------------------------------------------- /css/custom.css: -------------------------------------------------------------------------------- 1 | .api-endpoint 2 | { 3 | margin-bottom: 1em; 4 | } 5 | 6 | .api-endpoint .http-verb 7 | { 8 | font-weight: bold; 9 | color: #900; 10 | } 11 | 12 | .api-endpoint .param 13 | { 14 | color: #369; 15 | font-style: normal; 16 | font-weight: bold; 17 | } 18 | 19 | h4 20 | { 21 | margin-top: 1em; 22 | } 23 | -------------------------------------------------------------------------------- /css/documentation.css: -------------------------------------------------------------------------------- 1 | /*------------------------------------------------------------------------------ 2 | Global Documentation Styles 3 | ------------------------------------------------------------------------------*/ 4 | 5 | html { 6 | height:100%; 7 | } 8 | 9 | body { 10 | font: 13px helvetica,arial,freesans,clean,sans-serif; 11 | line-height: 1.4em; 12 | background-color: #fff; 13 | color: #393939; 14 | margin: 0px; 15 | padding: 0px; 16 | height: 100%; 17 | } 18 | 19 | p { 20 | margin: 1em 0; 21 | } 22 | 23 | h1 { 24 | font-size: 20px; 25 | border-bottom: 1px solid #cccccc; 26 | padding: .5em 0; 27 | margin: 2em 0 1em; 28 | } 29 | 30 | h1:first-child { 31 | margin: 0 0 1em; 32 | } 33 | 34 | h2 { 35 | font-size: 16px; 36 | color: #333; 37 | margin: 2em auto 1em; 38 | } 39 | 40 | body.api .content h2 { 41 | background: transparent url(../images/crud-sprite.png) left 2px no-repeat; 42 | padding-left: 22px; 43 | margin-bottom: 0.5em; 44 | margin-top: 1em; 45 | } 46 | 47 | body.api .change h2.title { 48 | background: none; 49 | padding-left: 0; 50 | font-size:24px; 51 | } 52 | 53 | h2 span.step { 54 | color: #666; 55 | } 56 | 57 | h3 { 58 | font-size: 14px; 59 | color: #333; 60 | margin: 1.5em 0 .5em; 61 | } 62 | 63 | h5 { 64 | font-size: 13px; 65 | } 66 | 67 | h6 { 68 | font-size: 13px; 69 | color: #666; 70 | } 71 | 72 | a { 73 | color: #4183C4; 74 | text-decoration: none; 75 | } 76 | 77 | a:hover, 78 | a:active { 79 | text-decoration:underline; 80 | } 81 | 82 | blockquote { 83 | margin:0 -5px; 84 | padding: 0px 20px; 85 | } 86 | 87 | ul, 88 | ol { 89 | margin: 0px; 90 | padding: 0px; 91 | } 92 | 93 | dt { 94 | font-weight: bold; 95 | } 96 | 97 | dd { 98 | padding-left: 1em; 99 | margin-bottom: 1em; 100 | } 101 | 102 | dd + dd { 103 | margin-bottom: 0; 104 | } 105 | 106 | span.attention, 107 | p.attention { 108 | color: #e98400; 109 | font-style: italic; 110 | } 111 | 112 | a img { 113 | border: 0px; 114 | } 115 | 116 | /*------------------------------------------------------------------------------ 117 | Header Styles 118 | ------------------------------------------------------------------------------*/ 119 | 120 | #header-wrapper { 121 | margin-bottom: 0; 122 | clear: both; 123 | height: 91px; 124 | background: white url(../images/background-v2.png) 0 0 repeat-x; 125 | } 126 | 127 | #header { 128 | margin: 0 auto; 129 | width: 920px; 130 | } 131 | 132 | #header a.logo { 133 | float: left; 134 | margin-top: 15px; 135 | display: inline-block; 136 | } 137 | 138 | #header a { 139 | outline: none; 140 | text-decoration: none; 141 | } 142 | 143 | /*------------------------------------------------------------------------------ 144 | Sidebar 145 | ------------------------------------------------------------------------------*/ 146 | 147 | div.sidebar-shell { 148 | position: relative; 149 | float: right; 150 | margin: 35px 0 0; 151 | } 152 | 153 | div.sidebar-module { 154 | padding: 3px; 155 | background: #EEE; 156 | -moz-border-radius: 3px; 157 | -webkit-border-radius: 3px; 158 | border-radius: 3px; 159 | display: block; 160 | width: 332px; 161 | margin-bottom: 20px; 162 | font-size: 12px; 163 | } 164 | 165 | div.sidebar-module > ul { 166 | background: #fafafb; 167 | border: solid #CACACA; 168 | border-width: 1px 1px 0px 1px; 169 | margin: 0px; 170 | } 171 | 172 | div.sidebar-module > p { 173 | background: #fafafb; 174 | border: solid #CACACA; 175 | border-width: 1px; 176 | padding: 8px 10px; 177 | margin: 0px; 178 | display: block; 179 | line-height: 1.4em; 180 | } 181 | 182 | div.sidebar-module li { 183 | list-style-type: none; 184 | } 185 | 186 | div.sidebar-module > ul > li { 187 | border-bottom: 1px solid #CACACA; 188 | text-decoration: none; 189 | } 190 | 191 | div.sidebar-module > ul > li:hover { 192 | text-decoration: none; 193 | } 194 | 195 | 196 | div.sidebar-module > ul h3 { 197 | margin: 0px; 198 | color: #666; 199 | text-shadow: 1px 1px 0px #fff; 200 | border-bottom: 1px solid #CACACA; 201 | font-size: 14px; 202 | background-color: #e1e1e1; 203 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 204 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 205 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 206 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 207 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 208 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 209 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 210 | } 211 | 212 | div.sidebar-module > ul li h3:hover, 213 | div.sidebar-module > ul h3.disable { 214 | background-color: #e1e1e1; 215 | background-image: -moz-linear-gradient(top, #e1e1e1, #d1d1d1); 216 | background-image: -ms-linear-gradient(top, #e1e1e1, #d1d1d1); 217 | background-image: -o-linear-gradient(top, #e1e1e1, #d1d1d1); 218 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e1e1e1), to(#d1d1d1)); 219 | background-image: -webkit-linear-gradient(top, #e1e1e1, #d1d1d1); 220 | background-image: linear-gradient(top, #e1e1e1, #d1d1d1); 221 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e1e1e1', EndColorStr='#d1d1d1'); 222 | } 223 | 224 | 225 | div.sidebar-module > ul h3 a, 226 | div.sidebar-module > ul h3.disable span { 227 | padding: 8px 0px 8px 10px; 228 | color: #666; 229 | display: block; 230 | text-decoration: none; 231 | } 232 | 233 | div.sidebar-module > ul h3.disable span { 234 | padding-left: 20px; 235 | background-image: url(../images/active-arrow.png); 236 | background-position: left center; 237 | background-repeat: no-repeat; 238 | cursor: default; 239 | } 240 | div.sidebar-module > ul h3:hover a { 241 | text-decoration: none; 242 | } 243 | 244 | div.sidebar-module ul ul, 245 | div.sidebar-module .spacer { 246 | display: block; 247 | padding-bottom: 2px; 248 | background-color: #FAFAFB; 249 | } 250 | 251 | div.sidebar-module ul ul li { 252 | border-top: 1px solid #fff; 253 | border-bottom: 1px solid #e9ecee; 254 | font-weight: bold; 255 | color: #666; 256 | } 257 | 258 | div.sidebar-module ul ul li:hover, 259 | div.sidebar-module li.disable { 260 | border-top: 1px solid #fafafb; 261 | border-bottom: 1px solid #e5e8ea; 262 | background-color: #f0f0f3; 263 | } 264 | 265 | div.sidebar-module li.disable { 266 | background-image: url(../images/active-arrow.png); 267 | background-position: left center; 268 | background-repeat: no-repeat; 269 | } 270 | 271 | div.sidebar-module ul ul li a, 272 | div.sidebar-module ul ul li span { 273 | padding: 6px 0px 6px 10px; 274 | display: block; 275 | text-decoration: none; 276 | } 277 | 278 | div.sidebar-module ul ul li span { 279 | padding-left: 20px; 280 | cursor: default; 281 | } 282 | 283 | /* @end */ 284 | 285 | /*****************************************************************************/ 286 | /* 287 | /* Footer 288 | /* 289 | /*****************************************************************************/ 290 | 291 | 292 | 293 | #footer { 294 | position: relative; 295 | bottom:0; 296 | font-size:13px; 297 | color: #636363; 298 | margin: 45px 0 0 0; 299 | } 300 | 301 | #footer a:hover { 302 | text-decoration: underline; 303 | } 304 | 305 | #footer li { 306 | list-style: none; 307 | } 308 | 309 | .footer_inner { 310 | width:960px; 311 | position: relative; 312 | margin: 0 auto; 313 | } 314 | 315 | #footer .upper_footer { 316 | min-height: 160px; 317 | overflow: hidden; 318 | background: url(../images/bg_footer_top.png) #f8f8f8 repeat-x; 319 | } 320 | 321 | #footer #blacktocat { 322 | height:130px; 323 | width:164px; 324 | float:left; 325 | background: url(../images/blacktocat.png) top left no-repeat; 326 | text-indent: -5000px; 327 | margin: 15px 20px 0 0; 328 | } 329 | 330 | #footer #blacktocat_ie { 331 | height:130px; 332 | width:164px; 333 | float:left; 334 | background: url(../images/blacktocat.png) no-repeat; 335 | text-indent: -5000px; 336 | margin: 15px 20px 0 0; 337 | } 338 | 339 | #footer .upper_footer ul.footer_nav { 340 | position: relative; 341 | float: left; 342 | width: 164px; 343 | margin: 20px 10px; 344 | } 345 | 346 | #footer .upper_footer ul.footer_nav h4 { 347 | margin: 0 0 5px 0; 348 | padding-bottom: 5px; 349 | border-bottom: thin solid #e1e1e1; 350 | } 351 | 352 | #footer .lower_footer { 353 | position: relative; 354 | background:url(../images/bg_footer_bottom.png) #fff repeat-x; 355 | overflow: hidden; 356 | clear:both; 357 | } 358 | 359 | #footer .lower_footer .home { 360 | display: block; 361 | position: absolute; 362 | background: url(../images/footer-logo.png) top left no-repeat; 363 | width: 100px; 364 | height: 50px; 365 | text-indent: -5000px; 366 | } 367 | 368 | #footer .lower_footer .home_ie { 369 | display: block; 370 | position: absolute; 371 | background: url(../images/footer-logo.png) top left no-repeat; 372 | width: 100px; 373 | height: 50px; 374 | text-indent: -5000px; 375 | } 376 | 377 | #footer .lower_footer #legal { 378 | float: left; 379 | width: 500px; 380 | height: 50px; 381 | line-height: 8px; 382 | margin: 25px 0 0 17px; 383 | } 384 | 385 | #footer .lower_footer #legal #legal_links { 386 | margin-left: 177px; 387 | } 388 | 389 | #footer .lower_footer div ul { 390 | float: left; 391 | text-indent: none; 392 | display:inline; 393 | margin-top: 15px; 394 | 395 | } 396 | 397 | #footer .lower_footer div ul li { 398 | display:inline; 399 | float: left; 400 | margin: 0 10px 0 0; 401 | } 402 | 403 | #footer .lower_footer div p { 404 | display:inline; 405 | float:left; 406 | clear: both; 407 | margin: 10px 0 0 177px; 408 | } 409 | 410 | #footer .lower_footer .sponsor { 411 | width: 295px; 412 | float: right; 413 | margin-top: 35px; 414 | padding-bottom: 25px; 415 | } 416 | 417 | #footer .lower_footer .sponsor .logo { 418 | float:left; 419 | margin: 0 10px 0 0; 420 | } 421 | 422 | #footer .lower_footer .sponsor a { 423 | color: #000; 424 | } 425 | 426 | /* end */ 427 | 428 | /*------------------------------------------------------------------------------ 429 | Not Footer 430 | ------------------------------------------------------------------------------*/ 431 | #wrapper { 432 | padding: 20px 25px; 433 | overflow:hidden; 434 | height: auto; 435 | width: 920px; 436 | margin: -20px auto 0; 437 | background: url(../images/background-white.png) 0 0 no-repeat; 438 | } 439 | 440 | .content { 441 | width: 560px; 442 | position: relative; 443 | float: left; 444 | color: #393939; 445 | z-index: 2; 446 | } 447 | 448 | .content dl { 449 | margin-left: 10px; 450 | } 451 | 452 | .content dl dl { 453 | margin-top: 1em; 454 | } 455 | 456 | .content dt { 457 | color: #666; 458 | } 459 | 460 | .content ol { 461 | margin-left: 1.5em; 462 | } 463 | 464 | .content ul { 465 | list-style-type: disc; 466 | margin: 1.5em 467 | } 468 | 469 | .content dd ul { 470 | margin-top: 0; 471 | } 472 | 473 | .content li { 474 | line-height: 1.7em; 475 | } 476 | 477 | .content img { 478 | max-width: 100%; 479 | border: 1px solid #dddddd; 480 | -webkit-box-shadow: 1px 1px 3px #ddd; 481 | -moz-box-shadow: 1px 1px 3px #ddd; 482 | box-shadow: 1px 1px 3px #ddd; 483 | } 484 | 485 | 486 | .content .description { 487 | margin-left: 20px; 488 | } 489 | 490 | .content .verseblock-content { 491 | padding: 3px; 492 | } 493 | 494 | .content .verseblock-content, 495 | .content .sectionbody .dlist dt, 496 | .content p > tt, 497 | .content dl code, 498 | .content ul code, 499 | p code { 500 | font: 12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; 501 | color: #52595d; 502 | -webkit-border-radius: 3px; 503 | -moz-border-radius: 3px; 504 | border-radius: 3px; 505 | -moz-background-clip: padding; 506 | -webkit-background-clip: padding-box; 507 | background-clip: padding-box; 508 | border: 1px solid #ccc; 509 | background-color: #f9f9f9; 510 | padding: 0px 3px; 511 | display: inline-block; 512 | } 513 | 514 | .content .sectionbody .dlist dt { 515 | margin-top: 10px; 516 | } 517 | 518 | .content .verseblock-content { 519 | padding: 3px; 520 | } 521 | 522 | .content .intro { 523 | color: #868686; 524 | } 525 | 526 | .change { 527 | padding-bottom: 1em; 528 | } 529 | 530 | .change .meta { 531 | font-size: 16px; 532 | padding-bottom: 1em; 533 | } 534 | 535 | .change .who_when .author { 536 | color: #eee; 537 | } 538 | 539 | .change .who_when .published { 540 | color: #ccc; 541 | } 542 | 543 | /* @end */ 544 | 545 | /*------------------------------------------------------------------------------ 546 | Pre/Code Styles 547 | ------------------------------------------------------------------------------*/ 548 | 549 | code {white-space: nowrap;} 550 | 551 | pre { 552 | border: 1px solid #cacaca; 553 | line-height: 1.2em; 554 | font: 12px Monaco,"Courier New","DejaVu Sans Mono","Bitstream Vera Sans Mono",monospace; 555 | padding: 10px; 556 | overflow:auto; 557 | -webkit-border-radius: 3px; 558 | -moz-border-radius: 3px; 559 | border-radius: 3px; 560 | -moz-background-clip: padding; 561 | -webkit-background-clip: padding-box; 562 | background-clip: padding-box; 563 | background-color: #FAFAFB; 564 | color: #393939; 565 | margin: 0px; 566 | } 567 | 568 | ul + pre { 569 | margin-top: 1em; 570 | } 571 | 572 | pre code {white-space: pre;} 573 | 574 | pre span.comment {color: #aaa;} 575 | 576 | pre.headers { 577 | margin-bottom: 0; 578 | border-bottom-width: 0; 579 | -webkit-border-radius: 3px 3px 0 0; 580 | -moz-border-radius: 3px 3px 0 0; 581 | border-radius: 3px 3px 0 0; 582 | color: #666; 583 | background-color: #f1f1f1; 584 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 585 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 586 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 587 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 588 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 589 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 590 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 591 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 592 | } 593 | 594 | pre.no-response { 595 | -webkit-border-radius: 3px 3px; 596 | -moz-border-radius: 3px 3px; 597 | border-radius: 3px 3px; 598 | border-bottom: 1px solid #CACACA; 599 | } 600 | 601 | pre.headers + pre.highlight { 602 | -webkit-border-radius: 0 0 3px 3px; 603 | -moz-border-radius: 0 0 3px 3px; 604 | border-radius: 0 0 3px 3px; 605 | } 606 | 607 | pre.highlight { 608 | -webkit-border-radius:3px; 609 | -moz-border-radius:3px; 610 | border-radius:3px; 611 | background-color: #FAFAFB; 612 | } 613 | 614 | pre.terminal { 615 | background-color: #444; 616 | color: #fff; 617 | -webkit-border-radius: 3px; 618 | -moz-border-radius: 3px; 619 | border-radius: 3px; 620 | -moz-background-clip: padding; 621 | -webkit-background-clip: padding-box; 622 | background-clip: padding-box; 623 | border: 2px solid #DEDEDE; 624 | position: relative; 625 | padding: 10px; 626 | text-shadow: none; 627 | background-image: none; 628 | filter: none; 629 | } 630 | 631 | pre.terminal em { 632 | color: #f9fe64; 633 | } 634 | 635 | span.codeline { 636 | display: block; 637 | position: relative; 638 | } 639 | 640 | span.codeline:hover { 641 | background-color: #292929; 642 | margin: 0px; 643 | padding-left: 3px; 644 | margin-left: -3px; 645 | -webkit-border-radius: 3px; 646 | -moz-border-radius: 3px; 647 | border-radius: 3px; 648 | color: #666666; 649 | } 650 | 651 | span.codeline span { 652 | display: inline-block; 653 | font-size: 10px; 654 | color: #fff; 655 | padding: 0 0.3em 0.05em; 656 | position: absolute; 657 | right: 0px; 658 | top: 0px; 659 | text-indent: -9999px; 660 | background-image: url(../images/qmark.png); 661 | background-repeat: no-repeat; 662 | background-position: 1px 3px; 663 | max-width: 8px; 664 | min-width: 8px; 665 | -moz-user-select: none; 666 | -khtml-user-select: none; 667 | user-select: none; 668 | cursor: default; 669 | } 670 | 671 | span.codeline span:hover { 672 | display: inline-block; 673 | text-indent: 0px; 674 | -webkit-border-radius: 3px; 675 | -moz-border-radius: 3px; 676 | border-radius: 3px; 677 | background: #000; 678 | border: 1px solid #292929; 679 | max-width: 1000px; 680 | } 681 | 682 | span.codeline:hover em { 683 | color: #666666; 684 | } 685 | 686 | pre.bootcamp { 687 | white-space: normal; 688 | margin-left: -10px; 689 | background-image: none; 690 | } 691 | 692 | span.bash-output { 693 | color: #63e463; 694 | display: block; 695 | position: relative; 696 | -moz-user-select: none; 697 | -khtml-user-select: none; 698 | user-select: none; 699 | } 700 | 701 | /* end */ 702 | 703 | /*------------------------------------------------------------------------------ 704 | More Info Expander 705 | ------------------------------------------------------------------------------*/ 706 | 707 | .more-info { 708 | margin: 10px 0; 709 | position: relative; 710 | } 711 | .more-info > h4 { 712 | background-image: url('../images/dropdown_sprites.jpg'); 713 | background-repeat: no-repeat; 714 | padding: .25em 0 .25em 25px; 715 | cursor: pointer; 716 | color: #4183C4; 717 | font-weight: normal; 718 | } 719 | .more-info h4.compressed { 720 | background-position: 0 0; 721 | } 722 | .more-info:hover h4.compressed { 723 | background-position: 0 -23px; 724 | } 725 | .more-info h4.expanded { 726 | background-position: 0 -46px; 727 | } 728 | .more-info:hover h4.expanded { 729 | background-position: 0 -69px; 730 | } 731 | 732 | .more-info .more-content { 733 | display: none; 734 | -webkit-border-radius: 3px; 735 | -moz-border-radius: 3px; 736 | border-radius: 3px; 737 | background-color: #FFFFFF; 738 | border: 3px solid #DDDDDD; 739 | padding: 1em 2em; 740 | -webkit-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 741 | -moz-box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 742 | box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3); 743 | margin: 15px 0 30px; 744 | } 745 | 746 | .more-info .more-content h4 { 747 | margin-top: 1em; 748 | } 749 | 750 | .more-info .more-content pre { 751 | margin-left: 0px; 752 | } 753 | 754 | /****************************/ 755 | /* List Module */ 756 | /****************************/ 757 | 758 | .list-module h2 { 759 | border: solid #cacaca; 760 | border-width: 1px; 761 | border-radius: 3px 3px 0px 0px; 762 | -moz-border-radius: 3px 3px 0px 0px; 763 | -webkit-border-bottom-right-radius: 0px; 764 | -webkit-border-bottom-left-radius: 0px; 765 | -moz-background-clip: padding; 766 | -webkit-background-clip: padding-box; 767 | background-clip: padding-box; 768 | padding: 6px 10px; 769 | background-color: #f1f1f1; 770 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 771 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 772 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 773 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 774 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 775 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 776 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 777 | color: #666; 778 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 779 | font-size: 16px; 780 | line-height: 22px; 781 | margin: 0px; 782 | } 783 | 784 | .list-module .list-body { 785 | border: solid #cacaca; 786 | border-width: 0px 1px 1px 1px; 787 | border-radius: 0px 0px 3px 3px; 788 | -moz-border-radius: 0px 0px 3px 3px; 789 | -webkit-border-bottom-right-radius: 3px; 790 | -webkit-border-bottom-left-radius: 3px; 791 | -moz-background-clip: padding; 792 | -webkit-background-clip: padding-box; 793 | background-clip: padding-box; 794 | background-color: #fafafb; 795 | color: #666; 796 | text-shadow: 0 1px 0 rgba(255, 255, 255, 0.7); 797 | } 798 | 799 | .list-module .list-body .icon { 800 | display: block; 801 | height: 28px; 802 | width: 28px; 803 | position: absolute; 804 | top: 10px; 805 | left: 10px; 806 | background: transparent url(images/popular_guide_sprites.png) 0 0 no-repeat; 807 | } 808 | 809 | .list-module a { 810 | border-top: 1px solid #fff; 811 | border-bottom: 1px solid #e9ecee; 812 | padding: 6px 10px; 813 | position: relative; 814 | display: block; 815 | } 816 | 817 | .list-module a:hover { 818 | border-top: 1px solid #fafafb; 819 | border-bottom: 1px solid #e5e8ea; 820 | background-color: #f0f0f3; 821 | text-decoration: none; 822 | } 823 | 824 | .list-module a h3 { 825 | color: #4183C4; 826 | } 827 | 828 | .list-module a:hover h3 { 829 | text-decoration: underline; 830 | } 831 | 832 | .list-module ul { 833 | list-style-type: none; 834 | margin: 0px; 835 | } 836 | 837 | .list-module h3 { 838 | margin: 0px; 839 | font-size: 13px; 840 | } 841 | 842 | .list-module .list-body a p { 843 | color: #666; 844 | margin: 0px; 845 | } 846 | 847 | /* @end */ 848 | 849 | /****************************/ 850 | /* Expandable List Module */ 851 | /****************************/ 852 | 853 | div.expandable > ul h3 { 854 | display: table; 855 | width: 100%; 856 | } 857 | 858 | div.expandable > ul h3 > a { 859 | display: table-cell; 860 | background-color: #e1e1e1; 861 | background-image: -moz-linear-gradient(top, #f1f1f1, #e1e1e1); 862 | background-image: -ms-linear-gradient(top, #f1f1f1, #e1e1e1); 863 | background-image: -o-linear-gradient(top, #f1f1f1, #e1e1e1); 864 | background-image: -webkit-gradient(linear, left top, left bottom, from(#f1f1f1), to(#e1e1e1)); 865 | background-image: -webkit-linear-gradient(top, #f1f1f1, #e1e1e1); 866 | background-image: linear-gradient(top, #f1f1f1, #e1e1e1); 867 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#f1f1f1', EndColorStr='#e1e1e1'); 868 | } 869 | 870 | div.expandable > ul h3 > a:hover { 871 | background-color: #e1e1e1; 872 | background-image: -moz-linear-gradient(top, #e1e1e1, #d1d1d1); 873 | background-image: -ms-linear-gradient(top, #e1e1e1, #d1d1d1); 874 | background-image: -o-linear-gradient(top, #e1e1e1, #d1d1d1); 875 | background-image: -webkit-gradient(linear, left top, left bottom, from(#e1e1e1), to(#d1d1d1)); 876 | background-image: -webkit-linear-gradient(top, #e1e1e1, #d1d1d1); 877 | background-image: linear-gradient(top, #e1e1e1, #d1d1d1); 878 | filter: progid:DXImageTransform.Microsoft.gradient(startColorStr='#e1e1e1', EndColorStr='#d1d1d1'); 879 | } 880 | 881 | div.expandable > ul h3 > a.collapsed, 882 | div.expandable > ul h3 > a.expanded { 883 | background-image: url(../images/expand-arrows.png); 884 | background-position: 0px -3px; 885 | background-repeat: no-repeat; 886 | width: 13px; 887 | border-right: 1px solid #cacaca; 888 | padding: 8px 11px; 889 | } 890 | 891 | div.expandable > ul h3 > a.expanded { 892 | background-position: -38px -3px; 893 | } 894 | 895 | div.expandable > ul h3 > a.collapsed:hover { 896 | background-image: url(../images/expand-arrows.png); 897 | background-position: 0px -43px; 898 | background-repeat: no-repeat; 899 | width: 13px; 900 | border-right: 1px solid #cacaca; 901 | padding: 8px 11px; 902 | } 903 | 904 | div.expandable > ul h3 > a.expanded:hover { 905 | background-position: -38px -43px; 906 | } 907 | 908 | /* @end */ 909 | -------------------------------------------------------------------------------- /css/vendor/960.css: -------------------------------------------------------------------------------- 1 | /* 2 | 960 Grid System ~ Core CSS. 3 | Learn more ~ http://960.gs/ 4 | 5 | Licensed under GPL and MIT. 6 | */ 7 | 8 | /* 9 | Forces backgrounds to span full width, 10 | even if there is horizontal scrolling. 11 | Increase this if your layout is wider. 12 | 13 | Note: IE6 works fine without this fix. 14 | */ 15 | 16 | body { 17 | min-width: 960px; 18 | } 19 | 20 | /* `Containers 21 | ----------------------------------------------------------------------------------------------------*/ 22 | 23 | .container_12, 24 | .container_16 { 25 | margin-left: auto; 26 | margin-right: auto; 27 | width: 960px; 28 | } 29 | 30 | /* `Grid >> Global 31 | ----------------------------------------------------------------------------------------------------*/ 32 | 33 | .grid_1, 34 | .grid_2, 35 | .grid_3, 36 | .grid_4, 37 | .grid_5, 38 | .grid_6, 39 | .grid_7, 40 | .grid_8, 41 | .grid_9, 42 | .grid_10, 43 | .grid_11, 44 | .grid_12, 45 | .grid_13, 46 | .grid_14, 47 | .grid_15, 48 | .grid_16 { 49 | display: inline; 50 | float: left; 51 | margin-left: 10px; 52 | margin-right: 10px; 53 | } 54 | 55 | .push_1, .pull_1, 56 | .push_2, .pull_2, 57 | .push_3, .pull_3, 58 | .push_4, .pull_4, 59 | .push_5, .pull_5, 60 | .push_6, .pull_6, 61 | .push_7, .pull_7, 62 | .push_8, .pull_8, 63 | .push_9, .pull_9, 64 | .push_10, .pull_10, 65 | .push_11, .pull_11, 66 | .push_12, .pull_12, 67 | .push_13, .pull_13, 68 | .push_14, .pull_14, 69 | .push_15, .pull_15 { 70 | position: relative; 71 | } 72 | 73 | .container_12 .grid_3, 74 | .container_16 .grid_4 { 75 | width: 220px; 76 | } 77 | 78 | .container_12 .grid_6, 79 | .container_16 .grid_8 { 80 | width: 460px; 81 | } 82 | 83 | .container_12 .grid_9, 84 | .container_16 .grid_12 { 85 | width: 700px; 86 | } 87 | 88 | .container_12 .grid_12, 89 | .container_16 .grid_16 { 90 | width: 940px; 91 | } 92 | 93 | /* `Grid >> Children (Alpha ~ First, Omega ~ Last) 94 | ----------------------------------------------------------------------------------------------------*/ 95 | 96 | .alpha { 97 | margin-left: 0; 98 | } 99 | 100 | .omega { 101 | margin-right: 0; 102 | } 103 | 104 | /* `Grid >> 12 Columns 105 | ----------------------------------------------------------------------------------------------------*/ 106 | 107 | .container_12 .grid_1 { 108 | width: 60px; 109 | } 110 | 111 | .container_12 .grid_2 { 112 | width: 140px; 113 | } 114 | 115 | .container_12 .grid_4 { 116 | width: 300px; 117 | } 118 | 119 | .container_12 .grid_5 { 120 | width: 380px; 121 | } 122 | 123 | .container_12 .grid_7 { 124 | width: 540px; 125 | } 126 | 127 | .container_12 .grid_8 { 128 | width: 620px; 129 | } 130 | 131 | .container_12 .grid_10 { 132 | width: 780px; 133 | } 134 | 135 | .container_12 .grid_11 { 136 | width: 860px; 137 | } 138 | 139 | /* `Grid >> 16 Columns 140 | ----------------------------------------------------------------------------------------------------*/ 141 | 142 | .container_16 .grid_1 { 143 | width: 40px; 144 | } 145 | 146 | .container_16 .grid_2 { 147 | width: 100px; 148 | } 149 | 150 | .container_16 .grid_3 { 151 | width: 160px; 152 | } 153 | 154 | .container_16 .grid_5 { 155 | width: 280px; 156 | } 157 | 158 | .container_16 .grid_6 { 159 | width: 340px; 160 | } 161 | 162 | .container_16 .grid_7 { 163 | width: 400px; 164 | } 165 | 166 | .container_16 .grid_9 { 167 | width: 520px; 168 | } 169 | 170 | .container_16 .grid_10 { 171 | width: 580px; 172 | } 173 | 174 | .container_16 .grid_11 { 175 | width: 640px; 176 | } 177 | 178 | .container_16 .grid_13 { 179 | width: 760px; 180 | } 181 | 182 | .container_16 .grid_14 { 183 | width: 820px; 184 | } 185 | 186 | .container_16 .grid_15 { 187 | width: 880px; 188 | } 189 | 190 | /* `Prefix Extra Space >> Global 191 | ----------------------------------------------------------------------------------------------------*/ 192 | 193 | .container_12 .prefix_3, 194 | .container_16 .prefix_4 { 195 | padding-left: 240px; 196 | } 197 | 198 | .container_12 .prefix_6, 199 | .container_16 .prefix_8 { 200 | padding-left: 480px; 201 | } 202 | 203 | .container_12 .prefix_9, 204 | .container_16 .prefix_12 { 205 | padding-left: 720px; 206 | } 207 | 208 | /* `Prefix Extra Space >> 12 Columns 209 | ----------------------------------------------------------------------------------------------------*/ 210 | 211 | .container_12 .prefix_1 { 212 | padding-left: 80px; 213 | } 214 | 215 | .container_12 .prefix_2 { 216 | padding-left: 160px; 217 | } 218 | 219 | .container_12 .prefix_4 { 220 | padding-left: 320px; 221 | } 222 | 223 | .container_12 .prefix_5 { 224 | padding-left: 400px; 225 | } 226 | 227 | .container_12 .prefix_7 { 228 | padding-left: 560px; 229 | } 230 | 231 | .container_12 .prefix_8 { 232 | padding-left: 640px; 233 | } 234 | 235 | .container_12 .prefix_10 { 236 | padding-left: 800px; 237 | } 238 | 239 | .container_12 .prefix_11 { 240 | padding-left: 880px; 241 | } 242 | 243 | /* `Prefix Extra Space >> 16 Columns 244 | ----------------------------------------------------------------------------------------------------*/ 245 | 246 | .container_16 .prefix_1 { 247 | padding-left: 60px; 248 | } 249 | 250 | .container_16 .prefix_2 { 251 | padding-left: 120px; 252 | } 253 | 254 | .container_16 .prefix_3 { 255 | padding-left: 180px; 256 | } 257 | 258 | .container_16 .prefix_5 { 259 | padding-left: 300px; 260 | } 261 | 262 | .container_16 .prefix_6 { 263 | padding-left: 360px; 264 | } 265 | 266 | .container_16 .prefix_7 { 267 | padding-left: 420px; 268 | } 269 | 270 | .container_16 .prefix_9 { 271 | padding-left: 540px; 272 | } 273 | 274 | .container_16 .prefix_10 { 275 | padding-left: 600px; 276 | } 277 | 278 | .container_16 .prefix_11 { 279 | padding-left: 660px; 280 | } 281 | 282 | .container_16 .prefix_13 { 283 | padding-left: 780px; 284 | } 285 | 286 | .container_16 .prefix_14 { 287 | padding-left: 840px; 288 | } 289 | 290 | .container_16 .prefix_15 { 291 | padding-left: 900px; 292 | } 293 | 294 | /* `Suffix Extra Space >> Global 295 | ----------------------------------------------------------------------------------------------------*/ 296 | 297 | .container_12 .suffix_3, 298 | .container_16 .suffix_4 { 299 | padding-right: 240px; 300 | } 301 | 302 | .container_12 .suffix_6, 303 | .container_16 .suffix_8 { 304 | padding-right: 480px; 305 | } 306 | 307 | .container_12 .suffix_9, 308 | .container_16 .suffix_12 { 309 | padding-right: 720px; 310 | } 311 | 312 | /* `Suffix Extra Space >> 12 Columns 313 | ----------------------------------------------------------------------------------------------------*/ 314 | 315 | .container_12 .suffix_1 { 316 | padding-right: 80px; 317 | } 318 | 319 | .container_12 .suffix_2 { 320 | padding-right: 160px; 321 | } 322 | 323 | .container_12 .suffix_4 { 324 | padding-right: 320px; 325 | } 326 | 327 | .container_12 .suffix_5 { 328 | padding-right: 400px; 329 | } 330 | 331 | .container_12 .suffix_7 { 332 | padding-right: 560px; 333 | } 334 | 335 | .container_12 .suffix_8 { 336 | padding-right: 640px; 337 | } 338 | 339 | .container_12 .suffix_10 { 340 | padding-right: 800px; 341 | } 342 | 343 | .container_12 .suffix_11 { 344 | padding-right: 880px; 345 | } 346 | 347 | /* `Suffix Extra Space >> 16 Columns 348 | ----------------------------------------------------------------------------------------------------*/ 349 | 350 | .container_16 .suffix_1 { 351 | padding-right: 60px; 352 | } 353 | 354 | .container_16 .suffix_2 { 355 | padding-right: 120px; 356 | } 357 | 358 | .container_16 .suffix_3 { 359 | padding-right: 180px; 360 | } 361 | 362 | .container_16 .suffix_5 { 363 | padding-right: 300px; 364 | } 365 | 366 | .container_16 .suffix_6 { 367 | padding-right: 360px; 368 | } 369 | 370 | .container_16 .suffix_7 { 371 | padding-right: 420px; 372 | } 373 | 374 | .container_16 .suffix_9 { 375 | padding-right: 540px; 376 | } 377 | 378 | .container_16 .suffix_10 { 379 | padding-right: 600px; 380 | } 381 | 382 | .container_16 .suffix_11 { 383 | padding-right: 660px; 384 | } 385 | 386 | .container_16 .suffix_13 { 387 | padding-right: 780px; 388 | } 389 | 390 | .container_16 .suffix_14 { 391 | padding-right: 840px; 392 | } 393 | 394 | .container_16 .suffix_15 { 395 | padding-right: 900px; 396 | } 397 | 398 | /* `Push Space >> Global 399 | ----------------------------------------------------------------------------------------------------*/ 400 | 401 | .container_12 .push_3, 402 | .container_16 .push_4 { 403 | left: 240px; 404 | } 405 | 406 | .container_12 .push_6, 407 | .container_16 .push_8 { 408 | left: 480px; 409 | } 410 | 411 | .container_12 .push_9, 412 | .container_16 .push_12 { 413 | left: 720px; 414 | } 415 | 416 | /* `Push Space >> 12 Columns 417 | ----------------------------------------------------------------------------------------------------*/ 418 | 419 | .container_12 .push_1 { 420 | left: 80px; 421 | } 422 | 423 | .container_12 .push_2 { 424 | left: 160px; 425 | } 426 | 427 | .container_12 .push_4 { 428 | left: 320px; 429 | } 430 | 431 | .container_12 .push_5 { 432 | left: 400px; 433 | } 434 | 435 | .container_12 .push_7 { 436 | left: 560px; 437 | } 438 | 439 | .container_12 .push_8 { 440 | left: 640px; 441 | } 442 | 443 | .container_12 .push_10 { 444 | left: 800px; 445 | } 446 | 447 | .container_12 .push_11 { 448 | left: 880px; 449 | } 450 | 451 | /* `Push Space >> 16 Columns 452 | ----------------------------------------------------------------------------------------------------*/ 453 | 454 | .container_16 .push_1 { 455 | left: 60px; 456 | } 457 | 458 | .container_16 .push_2 { 459 | left: 120px; 460 | } 461 | 462 | .container_16 .push_3 { 463 | left: 180px; 464 | } 465 | 466 | .container_16 .push_5 { 467 | left: 300px; 468 | } 469 | 470 | .container_16 .push_6 { 471 | left: 360px; 472 | } 473 | 474 | .container_16 .push_7 { 475 | left: 420px; 476 | } 477 | 478 | .container_16 .push_9 { 479 | left: 540px; 480 | } 481 | 482 | .container_16 .push_10 { 483 | left: 600px; 484 | } 485 | 486 | .container_16 .push_11 { 487 | left: 660px; 488 | } 489 | 490 | .container_16 .push_13 { 491 | left: 780px; 492 | } 493 | 494 | .container_16 .push_14 { 495 | left: 840px; 496 | } 497 | 498 | .container_16 .push_15 { 499 | left: 900px; 500 | } 501 | 502 | /* `Pull Space >> Global 503 | ----------------------------------------------------------------------------------------------------*/ 504 | 505 | .container_12 .pull_3, 506 | .container_16 .pull_4 { 507 | left: -240px; 508 | } 509 | 510 | .container_12 .pull_6, 511 | .container_16 .pull_8 { 512 | left: -480px; 513 | } 514 | 515 | .container_12 .pull_9, 516 | .container_16 .pull_12 { 517 | left: -720px; 518 | } 519 | 520 | /* `Pull Space >> 12 Columns 521 | ----------------------------------------------------------------------------------------------------*/ 522 | 523 | .container_12 .pull_1 { 524 | left: -80px; 525 | } 526 | 527 | .container_12 .pull_2 { 528 | left: -160px; 529 | } 530 | 531 | .container_12 .pull_4 { 532 | left: -320px; 533 | } 534 | 535 | .container_12 .pull_5 { 536 | left: -400px; 537 | } 538 | 539 | .container_12 .pull_7 { 540 | left: -560px; 541 | } 542 | 543 | .container_12 .pull_8 { 544 | left: -640px; 545 | } 546 | 547 | .container_12 .pull_10 { 548 | left: -800px; 549 | } 550 | 551 | .container_12 .pull_11 { 552 | left: -880px; 553 | } 554 | 555 | /* `Pull Space >> 16 Columns 556 | ----------------------------------------------------------------------------------------------------*/ 557 | 558 | .container_16 .pull_1 { 559 | left: -60px; 560 | } 561 | 562 | .container_16 .pull_2 { 563 | left: -120px; 564 | } 565 | 566 | .container_16 .pull_3 { 567 | left: -180px; 568 | } 569 | 570 | .container_16 .pull_5 { 571 | left: -300px; 572 | } 573 | 574 | .container_16 .pull_6 { 575 | left: -360px; 576 | } 577 | 578 | .container_16 .pull_7 { 579 | left: -420px; 580 | } 581 | 582 | .container_16 .pull_9 { 583 | left: -540px; 584 | } 585 | 586 | .container_16 .pull_10 { 587 | left: -600px; 588 | } 589 | 590 | .container_16 .pull_11 { 591 | left: -660px; 592 | } 593 | 594 | .container_16 .pull_13 { 595 | left: -780px; 596 | } 597 | 598 | .container_16 .pull_14 { 599 | left: -840px; 600 | } 601 | 602 | .container_16 .pull_15 { 603 | left: -900px; 604 | } 605 | 606 | /* `Clear Floated Elements 607 | ----------------------------------------------------------------------------------------------------*/ 608 | 609 | /* http://sonspring.com/journal/clearing-floats */ 610 | 611 | .clear { 612 | clear: both; 613 | display: block; 614 | overflow: hidden; 615 | visibility: hidden; 616 | width: 0; 617 | height: 0; 618 | } 619 | 620 | /* http://www.yuiblog.com/blog/2010/09/27/clearfix-reloaded-overflowhidden-demystified */ 621 | 622 | .clearfix:before, 623 | .clearfix:after { 624 | content: '\0020'; 625 | display: block; 626 | overflow: hidden; 627 | visibility: hidden; 628 | width: 0; 629 | height: 0; 630 | } 631 | 632 | .clearfix:after { 633 | clear: both; 634 | } 635 | 636 | /* 637 | The following zoom:1 rule is specifically for IE6 + IE7. 638 | Move to separate stylesheet if invalid CSS is a problem. 639 | */ 640 | 641 | .clearfix { 642 | zoom: 1; 643 | } -------------------------------------------------------------------------------- /css/vendor/coderay.css: -------------------------------------------------------------------------------- 1 | .CodeRay { 2 | background-color: #FFF; 3 | font-family: Monaco, "Courier New", "DejaVu Sans Mono", "Bitstream Vera Sans Mono", monospace; 4 | color: #000; 5 | } 6 | 7 | .CodeRay pre { 8 | margin: 0px; 9 | } 10 | 11 | div.CodeRay { } 12 | span.CodeRay { white-space: pre; border: 0px; padding: 2px } 13 | 14 | table.CodeRay { border-collapse: collapse; width: 100%; padding: 2px } 15 | table.CodeRay td { 16 | padding: 1em 0.5em; 17 | vertical-align: top; 18 | } 19 | 20 | .CodeRay .line-numbers, .CodeRay .no { 21 | background-color: #ECECEC; 22 | color: #AAA; 23 | text-align: right; 24 | } 25 | 26 | .CodeRay .line-numbers a { 27 | color: #AAA; 28 | } 29 | 30 | .CodeRay .line-numbers tt { font-weight: bold } 31 | .CodeRay .line-numbers .highlighted { color: red } 32 | .CodeRay .line { display: block; float: left; width: 100%; } 33 | .CodeRay span.line-numbers { padding: 0px 4px } 34 | .CodeRay .code { width: 100% } 35 | 36 | ol.CodeRay { font-size: 10pt } 37 | ol.CodeRay li { white-space: pre } 38 | 39 | .CodeRay .code pre { overflow: auto } 40 | .CodeRay .debug { color:white ! important; background:blue ! important; } 41 | 42 | .CodeRay .annotation { color:#007 } 43 | .CodeRay .attribute-name { color:#f08 } 44 | .CodeRay .attribute-value { color:#700 } 45 | .CodeRay .binary { color:#509; font-weight:bold } 46 | .CodeRay .comment { color:#998; font-style: italic;} 47 | .CodeRay .char { color:#04D } 48 | .CodeRay .char .content { color:#04D } 49 | .CodeRay .char .delimiter { color:#039 } 50 | .CodeRay .class { color:#458; font-weight:bold } 51 | .CodeRay .complex { color:#A08; font-weight:bold } 52 | .CodeRay .constant { color:teal; } 53 | .CodeRay .color { color:#0A0 } 54 | .CodeRay .class-variable { color:#369 } 55 | .CodeRay .decorator { color:#B0B; } 56 | .CodeRay .definition { color:#099; font-weight:bold } 57 | .CodeRay .directive { color:#088; font-weight:bold } 58 | .CodeRay .delimiter { color:black } 59 | .CodeRay .doc { color:#970 } 60 | .CodeRay .doctype { color:#34b } 61 | .CodeRay .doc-string { color:#D42; font-weight:bold } 62 | .CodeRay .escape { color:#666; font-weight:bold } 63 | .CodeRay .entity { color:#800; font-weight:bold } 64 | .CodeRay .error { color:#F00; background-color:#FAA } 65 | .CodeRay .exception { color:#C00; font-weight:bold } 66 | .CodeRay .filename { color:#099; } 67 | .CodeRay .function { color:#900; font-weight:bold } 68 | .CodeRay .global-variable { color:teal; font-weight:bold } 69 | .CodeRay .hex { color:#058; font-weight:bold } 70 | .CodeRay .integer { color:#099; } 71 | .CodeRay .include { color:#B44; font-weight:bold } 72 | .CodeRay .inline { color: black } 73 | .CodeRay .inline .inline { background: #ccc } 74 | .CodeRay .inline .inline .inline { background: #bbb } 75 | .CodeRay .inline .inline-delimiter { color: #D14; } 76 | .CodeRay .inline-delimiter { color: #D14; } 77 | .CodeRay .important { color:#f00; } 78 | .CodeRay .interpreted { color:#B2B; font-weight:bold } 79 | .CodeRay .instance-variable { color:teal } 80 | .CodeRay .label { color:#970; font-weight:bold } 81 | .CodeRay .local-variable { color:#963 } 82 | .CodeRay .octal { color:#40E; font-weight:bold } 83 | .CodeRay .operator { } 84 | .CodeRay .predefined-constant { font-weight:bold } 85 | .CodeRay .predefined { color:#369; font-weight:bold } 86 | .CodeRay .preprocessor { color:#579; } 87 | .CodeRay .pseudo-class { color:#00C; font-weight:bold } 88 | .CodeRay .predefined-type { color:#074; font-weight:bold } 89 | .CodeRay .reserved, .keyword { color:#000; font-weight:bold } 90 | 91 | .CodeRay .key { color: #808; } 92 | .CodeRay .key .delimiter { color: #606; } 93 | .CodeRay .key .char { color: #80f; } 94 | .CodeRay .value { color: #088; } 95 | 96 | .CodeRay .regexp { background-color:#fff0ff } 97 | .CodeRay .regexp .content { color:#808 } 98 | .CodeRay .regexp .delimiter { color:#404 } 99 | .CodeRay .regexp .modifier { color:#C2C } 100 | .CodeRay .regexp .function { color:#404; font-weight: bold } 101 | 102 | .CodeRay .string { color: #D20; } 103 | .CodeRay .string .string { } 104 | .CodeRay .string .string .string { background-color:#ffd0d0 } 105 | .CodeRay .string .content { color: #D14; } 106 | .CodeRay .string .char { color: #D14; } 107 | .CodeRay .string .delimiter { color: #D14; } 108 | 109 | .CodeRay .shell { color:#D14 } 110 | .CodeRay .shell .content { } 111 | .CodeRay .shell .delimiter { color:#D14 } 112 | 113 | .CodeRay .symbol { color:#990073 } 114 | .CodeRay .symbol .content { color:#A60 } 115 | .CodeRay .symbol .delimiter { color:#630 } 116 | 117 | .CodeRay .tag { color:#070 } 118 | .CodeRay .tag-special { color:#D70; font-weight:bold } 119 | .CodeRay .type { color:#339; font-weight:bold } 120 | .CodeRay .variable { color:#036 } 121 | 122 | .CodeRay .insert { background: #afa; } 123 | .CodeRay .delete { background: #faa; } 124 | .CodeRay .change { color: #aaf; background: #007; } 125 | .CodeRay .head { color: #f8f; background: #505 } 126 | 127 | .CodeRay .insert .insert { color: #080; font-weight:bold } 128 | .CodeRay .delete .delete { color: #800; font-weight:bold } 129 | .CodeRay .change .change { color: #66f; } 130 | .CodeRay .head .head { color: #f4f; } 131 | -------------------------------------------------------------------------------- /css/vendor/pygments.css: -------------------------------------------------------------------------------- 1 | .highlight { background: #ffffff; } 2 | .highlight .c { color: #999988; font-style: italic } /* Comment */ 3 | .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ 4 | .highlight .k { font-weight: bold } /* Keyword */ 5 | .highlight .o { font-weight: bold } /* Operator */ 6 | .highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */ 7 | .highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */ 8 | .highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */ 9 | .highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */ 10 | .highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */ 11 | .highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */ 12 | .highlight .ge { font-style: italic } /* Generic.Emph */ 13 | .highlight .gr { color: #aa0000 } /* Generic.Error */ 14 | .highlight .gh { color: #999999 } /* Generic.Heading */ 15 | .highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */ 16 | .highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */ 17 | .highlight .go { color: #888888 } /* Generic.Output */ 18 | .highlight .gp { color: #555555 } /* Generic.Prompt */ 19 | .highlight .gs { font-weight: bold } /* Generic.Strong */ 20 | .highlight .gu { color: #aaaaaa } /* Generic.Subheading */ 21 | .highlight .gt { color: #aa0000 } /* Generic.Traceback */ 22 | .highlight .kc { font-weight: bold } /* Keyword.Constant */ 23 | .highlight .kd { font-weight: bold } /* Keyword.Declaration */ 24 | .highlight .kp { font-weight: bold } /* Keyword.Pseudo */ 25 | .highlight .kr { font-weight: bold } /* Keyword.Reserved */ 26 | .highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */ 27 | .highlight .m { color: #009999 } /* Literal.Number */ 28 | .highlight .s { color: #d14 } /* Literal.String */ 29 | .highlight .na { color: #008080 } /* Name.Attribute */ 30 | .highlight .nb { color: #0086B3 } /* Name.Builtin */ 31 | .highlight .nc { color: #445588; font-weight: bold } /* Name.Class */ 32 | .highlight .no { color: #008080 } /* Name.Constant */ 33 | .highlight .ni { color: #800080 } /* Name.Entity */ 34 | .highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */ 35 | .highlight .nf { color: #990000; font-weight: bold } /* Name.Function */ 36 | .highlight .nn { color: #555555 } /* Name.Namespace */ 37 | .highlight .nt { color: #000080 } /* Name.Tag */ 38 | .highlight .nv { color: #008080 } /* Name.Variable */ 39 | .highlight .ow { font-weight: bold } /* Operator.Word */ 40 | .highlight .w { color: #bbbbbb } /* Text.Whitespace */ 41 | .highlight .mf { color: #009999 } /* Literal.Number.Float */ 42 | .highlight .mh { color: #009999 } /* Literal.Number.Hex */ 43 | .highlight .mi { color: #009999 } /* Literal.Number.Integer */ 44 | .highlight .mo { color: #009999 } /* Literal.Number.Oct */ 45 | .highlight .sb { color: #d14 } /* Literal.String.Backtick */ 46 | .highlight .sc { color: #d14 } /* Literal.String.Char */ 47 | .highlight .sd { color: #d14 } /* Literal.String.Doc */ 48 | .highlight .s2 { color: #d14 } /* Literal.String.Double */ 49 | .highlight .se { color: #d14 } /* Literal.String.Escape */ 50 | .highlight .sh { color: #d14 } /* Literal.String.Heredoc */ 51 | .highlight .si { color: #d14 } /* Literal.String.Interpol */ 52 | .highlight .sx { color: #d14 } /* Literal.String.Other */ 53 | .highlight .sr { color: #009926 } /* Literal.String.Regex */ 54 | .highlight .s1 { color: #d14 } /* Literal.String.Single */ 55 | .highlight .ss { color: #990073 } /* Literal.String.Symbol */ 56 | .highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */ 57 | .highlight .vc { color: #008080 } /* Name.Variable.Class */ 58 | .highlight .vg { color: #008080 } /* Name.Variable.Global */ 59 | .highlight .vi { color: #008080 } /* Name.Variable.Instance */ 60 | .highlight .il { color: #009999 } /* Literal.Number.Integer.Long */ -------------------------------------------------------------------------------- /css/vendor/reset.css: -------------------------------------------------------------------------------- 1 | /* `XHTML, HTML4, HTML5 Reset 2 | ----------------------------------------------------------------------------------------------------*/ 3 | 4 | a, 5 | abbr, 6 | acronym, 7 | address, 8 | applet, 9 | article, 10 | aside, 11 | audio, 12 | b, 13 | big, 14 | blockquote, 15 | body, 16 | canvas, 17 | caption, 18 | center, 19 | cite, 20 | code, 21 | dd, 22 | del, 23 | details, 24 | dfn, 25 | dialog, 26 | div, 27 | dl, 28 | dt, 29 | em, 30 | embed, 31 | fieldset, 32 | figcaption, 33 | figure, 34 | font, 35 | footer, 36 | form, 37 | h1, 38 | h2, 39 | h3, 40 | h4, 41 | h5, 42 | h6, 43 | header, 44 | hgroup, 45 | hr, 46 | html, 47 | i, 48 | iframe, 49 | img, 50 | ins, 51 | kbd, 52 | label, 53 | legend, 54 | li, 55 | mark, 56 | menu, 57 | meter, 58 | nav, 59 | object, 60 | ol, 61 | output, 62 | p, 63 | pre, 64 | progress, 65 | q, 66 | rp, 67 | rt, 68 | ruby, 69 | s, 70 | samp, 71 | section, 72 | small, 73 | span, 74 | strike, 75 | strong, 76 | sub, 77 | summary, 78 | sup, 79 | table, 80 | tbody, 81 | td, 82 | tfoot, 83 | th, 84 | thead, 85 | time, 86 | tr, 87 | tt, 88 | u, 89 | ul, 90 | var, 91 | video, 92 | xmp { 93 | border: 0; 94 | margin: 0; 95 | padding: 0; 96 | font-size: 100%; 97 | } 98 | 99 | html, 100 | body { 101 | height: 100%; 102 | } 103 | 104 | article, 105 | aside, 106 | details, 107 | figcaption, 108 | figure, 109 | footer, 110 | header, 111 | hgroup, 112 | menu, 113 | nav, 114 | section { 115 | /* 116 | Override the default (display: inline) for 117 | browsers that do not recognize HTML5 tags. 118 | 119 | IE8 (and lower) requires a shiv: 120 | http://ejohn.org/blog/html5-shiv 121 | */ 122 | display: block; 123 | } 124 | 125 | b, 126 | strong { 127 | /* 128 | Makes browsers agree. 129 | IE + Opera = font-weight: bold. 130 | Gecko + WebKit = font-weight: bolder. 131 | */ 132 | font-weight: bold; 133 | } 134 | 135 | img { 136 | color: transparent; 137 | font-size: 0; 138 | vertical-align: middle; 139 | /* 140 | For IE. 141 | http://css-tricks.com/ie-fix-bicubic-scaling-for-images 142 | */ 143 | -ms-interpolation-mode: bicubic; 144 | } 145 | 146 | li { 147 | /* 148 | For IE6 + IE7. 149 | */ 150 | display: list-item; 151 | } 152 | 153 | table { 154 | border-collapse: collapse; 155 | border-spacing: 0; 156 | } 157 | 158 | th, 159 | td, 160 | caption { 161 | font-weight: normal; 162 | vertical-align: top; 163 | text-align: left; 164 | } 165 | 166 | svg { 167 | /* 168 | For IE9. 169 | */ 170 | overflow: hidden; 171 | } -------------------------------------------------------------------------------- /css/vendor/uv_active4d.css: -------------------------------------------------------------------------------- 1 | pre.active4d code { 2 | background:none; 3 | color:#000; 4 | font-size:1.1em 5 | } 6 | 7 | pre.active4d .DiffHeader { 8 | background-color: #656565; 9 | color: #FFFFFF; 10 | } 11 | pre.active4d .Operator { 12 | } 13 | pre.active4d .InheritedClass { 14 | } 15 | pre.active4d .TypeName { 16 | color: #21439C; 17 | } 18 | pre.active4d .Number { 19 | color: #A8017E; 20 | } 21 | pre.active4d .EmbeddedSource { 22 | background-color: #ECF1FF; 23 | } 24 | pre.active4d { 25 | background-color: #FFFFFF; 26 | color: #000000; 27 | } 28 | pre.active4d .DiffInsertedLine { 29 | background-color: #98FF9A; 30 | color: #000000; 31 | } 32 | pre.active4d .LibraryVariable { 33 | color: #A535AE; 34 | } 35 | pre.active4d .Storage { 36 | color: #FF5600; 37 | } 38 | pre.active4d .InterpolatedEntity { 39 | color: #66CCFF; 40 | } 41 | pre.active4d .line-numbers { 42 | background-color: #BAD6FD; 43 | color: #000000; 44 | } 45 | pre.active4d .LocalVariable { 46 | color: #6392FF; 47 | } 48 | pre.active4d .DiffLineRange { 49 | background-color: #1B63FF; 50 | color: #FFFFFF; 51 | } 52 | pre.active4d .BlockComment { 53 | color: #D33435; 54 | } 55 | pre.active4d .TagName { 56 | color: #016CFF; 57 | } 58 | pre.active4d .FunctionArgument { 59 | } 60 | pre.active4d .BuiltInConstant { 61 | color: #A535AE; 62 | } 63 | pre.active4d .LineComment { 64 | color: #D33535; 65 | } 66 | pre.active4d .DiffDeletedLine { 67 | background-color: #FF7880; 68 | color: #000000; 69 | } 70 | pre.active4d .NamedConstant { 71 | color: #B7734C; 72 | } 73 | pre.active4d .CommandMethod { 74 | color: #45AE34; 75 | } 76 | pre.active4d .TableField { 77 | color: #0BB600; 78 | } 79 | pre.active4d .PlainXmlText { 80 | color: #000000; 81 | } 82 | pre.active4d .Invalid { 83 | background-color: #990000; 84 | color: #FFFFFF; 85 | } 86 | pre.active4d .LibraryClassType { 87 | color: #A535AE; 88 | } 89 | pre.active4d .TagAttribute { 90 | color: #963DFF; 91 | } 92 | pre.active4d .Keyword { 93 | color: #006699; 94 | } 95 | pre.active4d .UserDefinedConstant { 96 | } 97 | pre.active4d .String { 98 | color: #666666; 99 | } 100 | pre.active4d .DiffUnchangedLine { 101 | color: #5E5E5E; 102 | } 103 | pre.active4d .TagContainer { 104 | color: #7A7A7A; 105 | } 106 | pre.active4d .FunctionName { 107 | color: #21439C; 108 | } 109 | pre.active4d .Variable { 110 | color: #0053FF; 111 | } 112 | pre.active4d .DateTimeLiteral { 113 | font-weight: bold; 114 | color: #66CCFF; 115 | } -------------------------------------------------------------------------------- /favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/favicon.ico -------------------------------------------------------------------------------- /images/active-arrow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/active-arrow.png -------------------------------------------------------------------------------- /images/background-v2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/background-v2.png -------------------------------------------------------------------------------- /images/background-white.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/background-white.png -------------------------------------------------------------------------------- /images/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/bg.png -------------------------------------------------------------------------------- /images/bg_footer_bottom.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/bg_footer_bottom.png -------------------------------------------------------------------------------- /images/bg_footer_top.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/bg_footer_top.png -------------------------------------------------------------------------------- /images/blacktocat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/blacktocat.png -------------------------------------------------------------------------------- /images/blacktocat.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 6 | 7 | 8 | 9 | 13 | proof:pdf 14 | xmp.did:F87F11740720681180838E4FEC0BBEE0 15 | xmp.iid:F87F11740720681180838E4FEC0BBEE0 16 | uuid:a82416aa-8f86-e849-8a8d-10757c227e64 17 | 18 | xmp.iid:F77F11740720681180838E4FEC0BBEE0 19 | xmp.did:F77F11740720681180838E4FEC0BBEE0 20 | uuid:a82416aa-8f86-e849-8a8d-10757c227e64 21 | proof:pdf 22 | 23 | 24 | 25 | 26 | saved 27 | xmp.iid:F77F11740720681180838E4FEC0BBEE0 28 | 2011-07-15T18:59:45-07:00 29 | Adobe Illustrator CS5 30 | / 31 | 32 | 33 | saved 34 | xmp.iid:F87F11740720681180838E4FEC0BBEE0 35 | 2011-07-15T19:12:41-07:00 36 | Adobe Illustrator CS5 37 | / 38 | 39 | 40 | 41 | 42 | 45 | 2011-07-15T19:12:41-07:00 46 | Adobe Illustrator CS5 47 | 2011-07-15T19:12:41-07:00 48 | 2011-07-15T19:12:41-07:00 49 | 50 | 51 | 52 | 256 53 | 256 54 | JPEG 55 | /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgBAAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7 FXYq7FVOa4ghFZXCex6/diqDk1qHpDG0h8fsjFUM+p37/Z4Rj2FT+NcVUWmvHNWuH37KeP6sKqZi B+0zN8zirvQj8MVd6EfhirhFT7LMvyOKqqzXiGq3D/7I8v14qqpqd+n2gkg+4/hTAqJj1mA7TI0R 8ftD8P6YqjYriGYVicOPY7/diq/FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqh7m/t rfZ2q/ZF3OKpdNqN5Nsv7lPbdvvxVDCNa8m+Jj1LbnCq7FXYq7FXYq7FXYq7FXYq7FXYqt9Na8lq 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 56 | 57 | 58 | 59 | 60 | 62 | Adobe PDF library 9.90 63 | 64 | 66 | image/svg+xml 67 | 68 | 72 | 1 73 | False 74 | False 75 | 76 | 130.000000 77 | 130.000000 78 | Pixels 79 | 80 | 81 | 82 | Cyan 83 | Magenta 84 | Yellow 85 | 86 | 87 | 88 | 89 | 90 | Default Swatch Group 91 | 0 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 121 | 154 | 155 | 156 | 191 | 192 | 193 | 194 | 229 | 230 | 231 | 232 | 233 | 267 | 268 | 269 | 270 | -------------------------------------------------------------------------------- /images/crud-sprite.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/crud-sprite.png -------------------------------------------------------------------------------- /images/dropdown_sprites.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/dropdown_sprites.jpg -------------------------------------------------------------------------------- /images/expand-arrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/expand-arrows.png -------------------------------------------------------------------------------- /images/feed-icon-28x28.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/feed-icon-28x28.png -------------------------------------------------------------------------------- /images/footer-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/footer-logo.png -------------------------------------------------------------------------------- /images/footer-logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | ]> 7 | 9 | 10 | 11 | 12 | 16 | proof:pdf 17 | xmp.did:01801174072068118C14F029FF4E69A3 18 | xmp.iid:01801174072068118C14F029FF4E69A3 19 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 20 | 21 | uuid:76c5eca8-e841-3b48-99db-8cd076c5142a 22 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 23 | uuid:9d2fdc90-b8de-c94c-86b5-364e47b8e5b6 24 | proof:pdf 25 | 26 | 27 | 28 | 29 | saved 30 | xmp.iid:01801174072068118C14F029FF4E69A3 31 | 2011-08-01T16:12:07-07:00 32 | Adobe Illustrator CS5 33 | / 34 | 35 | 36 | 37 | 38 | 41 | 2011-08-01T16:12:06-07:00 42 | Adobe Illustrator CS5 43 | 2011-08-01T16:12:07-07:00 44 | 2011-08-01T16:12:07-07:00 45 | 46 | 47 | 48 | 256 49 | 116 50 | JPEG 51 | /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAdAEAAwER AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE 1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp 0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo +DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FUr1X UZIn9CE8WpV27ivYYqliXt2jchK1fckj7jhQn1hdi6gDkUcGjj3wJROKuxV2KuxVCaqSLCUjY/D/ AMSGKseLMepJwoTbQP8Ad/8AsP8AjbAlNsVdirsVdirsVdirsVdirsVdirHNT/3vm+Y/UMKELirL cCXYq7FXYq7FXYq7FXYq7FXYqxzVEZb6Sv7VCD7EYUIXFU50FGEUrn7LEAfR1/XgSmmKuxV2KuxV Cat/xz5f9j/xIYqx3ChN9A/3f/sP+NsCU2xV2KuxV2KuxV2KuxV2KuxV2Ksc1P8A3vm+Y/UMKELi rLcCXYq7FXYq7FXYq7FXYq7FXYqh7yxiulAb4XX7LjtiqBTQRy+Oaq9wBQ/rxVNIokijEaDiq7AY qpX8rxWkkkZo6gUPXuPHFUk/S2of79/4Vf6YVTHSLu4uPV9Z+XHjx2A618BgVMcVQmrf8c+X/Y/8 SGKsdwoTfQP93/7D/jbAlNsVdirsVdirsVdirsVdirsVdirHNT/3vm+Y/UMKELirLcCXYq7FXYq7 FUJcapaQEqW5uOqrv+PTFUI2vrX4YCR7tT+BxVVi1y3Y0kRo/f7QxVEtqFkBUzLT2Nf1YqojV7d5 kiiBYuwHLoN8VVL3UEtCgZC3OvT2xVC/p6H/AH033jFUdDcrLbCcAhSCafKv9MVSy71eOe3eIRkF h1JHjXFUrwoRmn34tDJVOYenenSv9cUphb6ys0yRCIrzNK1/swKrat/xz5f9j/xIYqx3ChMtHuYY EnaVgo+Gg7nr0GBKs+vRg/BCWHiTT+BxVfDrkDGkiGP3B5D+GKpijq6hkIZT0I6Yq3iqVnXUBI9E 7f5X9mKqltrCzzpEIivLvWvavhiqYYqp3M4ggeUjlx7dO9MVS39P/wDFH/D/APNuKoqw1D62XHp8 OFD1rWv0DFUo1P8A3vm+Y/UMKELiqfT6zaxkqgMpHcbD78CUN+n2r/cin+t/ZiqLtdWtp2CGsbno G6H5HFUbiqVavqDKfq8Rof8AdjD37Yqk+FDYVj0BNMVaxV2Kq1kaXkP+uv68VR+vfbh+TfwwJSrC hP8AT/8AjlL/AKr/AKzgSkGFDsVdiqI07/e2H/WxVOtW/wCOfL/sf+JDAljuFDsVdirsVR2lXpgm EbH91IaH2PjilP8AArE3+23zOFCJ0z/e+H5n9RxVkeBKF1P/AHgm+Q/WMVY5hQmug/bm+S/xwJQu rf8AHQl/2P8AxEYVQmKHYq7FXYqnmkXpmjMMhrJGNj4r/ZgSksshkleQ9WJP34UInTLVbi5o+6IO TDx9sUshVVUBVACjoBsMCpfq1lG8LTqAsibkjuO9cVSPChOdGt7d4PVMYMquRyO/ShH68CVPXvtw /Jv4YqlWFDIdKAOnRA7g8qj/AGRwJWahaWqWcrJEqsAKEDfqMVSHChMtFghlaUSIHoBSor44pTZL O1RgyxKrDoQMCqOrf8c+X/Y/8SGKsdwoRmm2IupG5NRI6cgOprX+mKU4/R1jw4+itPHv9/XAqS6h Z/VZ+I3jbdCf1YUIXFWTWExmtInO7Uo3zG2BLGn+23zOFCJ0z/e+H5n9RxVkeBKF1P8A3gm+Q/WM VY5hQmug/bm+S/xwJQurf8dCX/Y/8RGFUJihkFrpNtCo9RRLJ3Lbj6BgS1e6VBLGTEgjlG68dgfY jFUgIIND1woRFhMYryJuxPE/I7YqoyIUkZD1UkH6MVRekXKQ3JDmiyDjU9Ae2KWQYFQWq3McVs0d aySCir7HqcVY/hQn+jRlbKp/bYsP1fwwJQuvfbh+TfwxVKsKGRaT/wAc+L/Zf8SOBLep/wC8E3yH 6xirHMKE10H7c3yX+OBKcYqhNW/458v+x/4kMVY7hQm2gHecf6v8cCU3xVLNdWsEb+DU+8f2Yqku FCe6Ia2ZHg5H4A4EpG/22+ZwoROmf73w/M/qOKsjwJQup/7wTfIfrGKscwoTXQftzfJf44EoXVv+ OhL/ALH/AIiMKoTFDLcCXYqxrUECXsyjpyJ+/fChDgkEEdRiqa6zZEN9ZjFVP94B2PjgSlWFColx cIvFJXVfAMQMVWFixqxJJ6k4qq2lrJczBF6ftN2AxVk0aLGioooqgAD2GBKUa99uH5N/DFUqwoZF pP8Axz4v9l/xI4Et6n/vBN8h+sYqxzChNdB+3N8l/jgSnGKoTVv+OfL/ALH/AIkMVY7hQmug/bm+ S/xwJTjFUu13/eRP+Mg/4icVSPChPNC/3kf/AIyH/iIwJSWQUkYeBOFCvpppfQn3p94pirJMCULq f+8E3yH6xirHMKE10H7c3yX+OBKF1b/joS/7H/iIwqhMUMtwJdirGb9w95Mw6ciPu2woUVBZgo6k 0xVlUzrHE7tuqgkj2AwJYtK4eRnChAxrxXoMKF9tazXEnCIVPUk9APfFUyi0EVBllqO6qP4nAlM4 YIoU4RKFX9fzxVfiqT699uH5N/DFUqwoZFpP/HPi/wBl/wASOBK7UgTYzfKv3HFWN4UJlocqrcOj GhcfD8x2wJTtmVQSxAA6k4qg9UZW02RlNVIUgjwLDFWPYUJroP25vkv8cCU4xVLddP8AoqDxf+Bx VJMKE80L/eR/+Mh/4iMCUqvozHeTL/lEj5HcYUKUchjkWReqEEfRirJYLu3nQOjjfqpO4+eBKC1W /t/QaBDzdtjToN69cVSXChNdB+3N8l/jgShdW/46Ev8Asf8AiIwqhMUMitdTtp0FWEb90Y0+498C Vl7qsESERMJJTsKbge5OKpASSanrhQidNhMt5GOynm3yXfFU+vUL2kqr1Kmg+W+BLGMKEfpN7Fby OsuyyU+LwI8fvxSncc0Mg+B1b5EHAq/FXYqlGvjeA/638MVSnChkWk/8c+L/AGX/ABI4EoiaMSQv Gf21K/eMVYsylWKsKMDQj3GFDWKrmkkf7TFqdKknFU6uv+OIv/GOP9a4EpHhQmug/bm+S/xwJTjF Uu10f6Kh/wAsfqOKpHhQnmhf7yP/AMZD/wARGBKjrdqarcKNqcZP4HFUpwodirsVdiqa6D9ub5L/ ABwJQurf8dCX/Y/8RGFUJih2KuxV2Kp/pNkYIjI4pLJ28B4YEqt5fw2q/F8Tn7KDrirHppBJKzhA gY14jphQsxV2Koq21K6gIoxdO6NuPo8MVT61uY7mISJ8mHcHwwJQ2p2M116XplRw5V5EjrTwB8MV QP6Cu/54/vb+mKprYwPBapE5BZa1I6bknFVfFUBf6Ulw3qRnhKetehxVLm0a+B2VT7hh/HCqpHod yx/eMqD23OBUzuLQvY/VkbcKqhj/AJJHh8sVS39BXH+/E/H+mKo3TdPktWkLsrcwKUr2+eKo7FUL qNo91AsaEKQwap+RH8cVS79BXH+/E/H+mKpjp1o9rA0bkMSxao+QH8MVRLKrKVYVU7EHFUruNDUs WgfjX9hun34qoLod0Tu6AeNSf4Yqi00aFIXWvOVlIDt0FfAYqh/0DN/v1fuOKozTtPe0ZyzhuYFK e2KqN5pMlxcvMJAoamxB7ADFVOPQ5VkRjIpCkEih7HFVW50SJ2LQt6ZP7JFR9GKoYaFc13kSnjv/ AExVHWmkwQMHY+pIOhOwHyGKo3FWLXMzTTvITXkdvl2woVLGza6m4A8VAqze2Kpwmj2KihUufEsf 4UwJal0azZfgBjPYgk/rxVI5omhleNuqGmFCO0OUrctH+y61p7jAlMNSvjaxqEAMj1pXoAO+KoaG 61ZXjMkXNJCANgOvy6fTiqJ1DUVtQFUcpWFQD0A8TiqB+u6xw9XgfT6/Y2p+vFUbp+ordAow4yru QOhHiMVUr3VXSX0LZeUgNC1K7+AGKqcV3qqTRCdP3cjKpJUbVNOoxVVhv531Jrc8fTBYDbfbFURq Fybe1Z1NHPwp8ziqjpN7JcRusrcpENa0A2PyxVbql9cW0iLEQAwJNRXviqY4q4kAEk0A6nFUol1S 7nlMdmuw6NSpPvvsMVVrG41D6yIbobMCVJAG49xtiqlc6tO83o2a13pypUn5DFVNr7VbYhp1qh7M AB964qjJ9Qrp5uYNmqBQ70NdxiqETUNVMYmCB4/ELUbfLfFUdYagl0pFOMq/aX28RiqFstQuZ0n5 kVSMspApvirel6m8jmGdqs32GP6sVROp3Etvbc4jRuQFaV23xVat/wCnpyXE3xO2wA2qanFUGk+s 3IMkXwp2A4gfRy64qr2GozvP9WuV/edmpQ7eIxVJXUo7Keqkg/MYUInTr0WsxZgSjCjAdfniqcLq tgRX1aexB/pgStl1iyRaqxkbsAD+s4qkU8zTSvK3VzWmFCN0SMtdM/ZFNfmcCUdq1lJcIjxbulfh 8QcVQtvqtxA4hukNBtUijAfxxVawWbWuMm68unairUYqneKpFLSDVz6Q6GtB/lLv+vFVTQkVppZG 3dQKV/yq1P4YqnOKpNbimuP83/EYq3qrme8itVOwIr82/sxVagFlq/EbRuaD5N0+44q3r399F/qn 9eKpziqF1RithKR1oB9BIBxVR0REFqzj7TMeR+XQYqi7slbWZh1CMR92KpdoKLxlf9uoFfbFUxu0 R7aVX+zxP4CtcVSKBj+j7pewaMj6Sf6YUJro/wDvAnzb9eBKChAj1srH9kswIHutTiqnpX2Lr/jE cVU7azaa1kljr6sTAgDuKfrwoV7m+FzpoDf3yOOQ8djvgSoXbN9TtF/Z4sfp5YVTuaVLSz5qvJIw oAG1RUDAqBj1qNpABBRnIBNRU9vDFWtT0x3czwDkW3dO9fEYqlLKymjAgjqDthQ1irsVVre0uLhq RoSO7dFH04qn9lZpaw8Bux3dvE4EqOo3lxbPGyJWH9s+Pt7Yql97c/pCaJIYzUVG/Xf5dhhVW1Kz mhkS6hqeIXkR2KilflgVv9PH0/7r9589sVdplrNNcG8mG25Wvcn+GKqUiXGm3RkReULbDwIPY++K ohdZMssUccfEu6hiTXYnemKqMbqmsyO2yrzJ+QXFVK0tG1CeWR24itSRvuT0wquv9LFtEJUcsK0a vauBVmoz+vHbSdyhDfMGhwoTG01ZbicRCMrWu9a9BXwwJRk0SyxPG3RxTFUlhnudNlaOROUbGtOg PuDiqMttRa8uPS9PjEVPPuTtiqDH1nTLhjx5RNtU9GHbfxxVdc6rNdJ6EMRXnsaHkT7DbFV8tm1t pLhv7x2Vn9txQYqo2upyw24gii5OK0atep8AMKovS7GZZGurjaRq8VPXfqTgVC6V9i6/4xH+OKor QgRFLUU+IfqxVQ1ew9NjcRj4GPxgdie/04qqGza50qEp/eRglR4gk1GKrLfV5IIxDNESyCgNaHbs a4q6zhnvL363KvGNSCPDboBiqc4qsl9Cn73jT/Lp/HFUM36I7+h9HH+GKro/0XUcPRr7ca4qihSm 3TtirsVabjxPKnHvXpiqyH6tv6PD34U/hiqpiqifqfPf0+f+xriqtirm40PKlO9emKqcX1ap9LhX vwp/DFVTFXYq7FXYq7FXYq0/Dj8dOPevTFWk9OnwU4/5NKfhiq5uNDypTvXpiqyP0d/T4+/Gn8MV X4q7FXYq7FXYq40pv071xVwpTbp7Yq03D9qn04q3ir//2Q== 52 | 53 | 54 | 55 | 56 | 58 | Adobe PDF library 9.90 59 | 60 | 62 | image/svg+xml 63 | 64 | 68 | 69 | 100.000000 70 | 44.000000 71 | Pixels 72 | 73 | 1 74 | False 75 | False 76 | 77 | 78 | Cyan 79 | Magenta 80 | Yellow 81 | 82 | 83 | 84 | 85 | 86 | Default Swatch Group 87 | 0 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 | 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 | 119 | 120 | 124 | 127 | 133 | 138 | 143 | 149 | 150 | 151 | 156 | 160 | 164 | 165 | 167 | 168 | 172 | 176 | 179 | 180 | 182 | 186 | 187 | 188 | 198 | 199 | 200 | -------------------------------------------------------------------------------- /images/footer_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/footer_logo.png -------------------------------------------------------------------------------- /images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/logo.png -------------------------------------------------------------------------------- /images/logo_developer.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/logo_developer.png -------------------------------------------------------------------------------- /images/nav-rule.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/nav-rule.png -------------------------------------------------------------------------------- /images/next_step_arrow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/next_step_arrow.gif -------------------------------------------------------------------------------- /images/posts/create-repo-init.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/posts/create-repo-init.png -------------------------------------------------------------------------------- /images/posts/default-branch.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/posts/default-branch.png -------------------------------------------------------------------------------- /images/qmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/qmark.png -------------------------------------------------------------------------------- /images/rackspace_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Burgestrand/hue-api/7b906e7a69a9cc0297a5b74c2a8226d9790b7224/images/rackspace_logo.png -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Unofficial Philips Hue API Reference 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 |

Philips Hue API — Unofficial Reference Documentation

27 | 28 |

Philips Hue API reference documentation, created by reverse-engineering, 29 | sniffing network traffic and a lot of guessing.

30 | 31 |

There is a mailing list, dedicated to discussions and questions about hacking 32 | the Philips Hue and related protocols.

33 | 34 |

This repository was forked from the GitHub API v3 documentation. It’s a 40 | static site built with nanoc, and is published to http://burgestrand.github.com/hue-api 41 | for hosting via GitHub Pages.

42 | 43 |

All submissions are welcome. To submit a change, fork this repo, commit your 44 | changes, and send us a pull request.

45 | 46 |

Typical Hue bridge API workflow

47 | 48 |
    49 |
  1. 50 | Hue bridge discovery via SSDP (a multicast protocol over UDP). 51 | Ruhue has an example of how this discovery can be performed written in Ruby and UDP sockets: Hue.discover.
  2. 52 |
  3. 53 | A one-time application registration to the Hue bridge 54 | over HTTP. You pick your own username, which is used for all subsequent API calls.
  4. 55 |
  5. Finished. You may now place any API calls, using your username, against the Hue bridge.
  6. 56 |

Reading Hue bridge system state

57 | 58 |

You can read the state of the entire system, after authentication, through a single endpoint.

59 | 60 |
GET /api/username
61 | 62 |

Response

63 | 64 |
{
 65 |   "lights": {
 66 |     "1": {
 67 |       "state": {
 68 |         "on": true,
 69 |         "bri": 240,
 70 |         "hue": 15331,
 71 |         "sat": 121,
 72 |         "xy": [
 73 |           0.4448,
 74 |           0.4066
 75 |         ],
 76 |         "ct": 343,
 77 |         "alert": "none",
 78 |         "effect": "none",
 79 |         "colormode": "ct",
 80 |         "reachable": true
 81 |       },
 82 |       "type": "Extended color light",
 83 |       "name": "TV Vänster",
 84 |       "modelid": "LCT001",
 85 |       "swversion": "65003148",
 86 |       "pointsymbol": {
 87 |         "1": "none",
 88 |         "2": "none",
 89 |         "3": "none",
 90 |         "4": "none",
 91 |         "5": "none",
 92 |         "6": "none",
 93 |         "7": "none",
 94 |         "8": "none"
 95 |       }
 96 |     }
 97 |   },
 98 |   "groups": {
 99 | 
100 |   },
101 |   "config": {
102 |     "name": "Lumm",
103 |     "mac": "00:00:00:00:7b:be",
104 |     "dhcp": true,
105 |     "ipaddress": "192.168.0.21",
106 |     "netmask": "255.255.255.0",
107 |     "gateway": "192.168.0.1",
108 |     "proxyaddress": " ",
109 |     "proxyport": 0,
110 |     "UTC": "2012-11-06T21:57:59",
111 |     "whitelist": {
112 |       "24e04807fe143caeb52b4ccb305635f8": {
113 |         "last use date": "2012-11-06T20:43:34",
114 |         "create date": "1970-01-01T00:00:45",
115 |         "name": "Kim Burgestrand’s iPhone"
116 |       }
117 |     },
118 |     "swversion": "01003542",
119 |     "swupdate": {
120 |       "updatestate": 0,
121 |       "url": "",
122 |       "text": "",
123 |       "notify": false
124 |     },
125 |     "linkbutton": false,
126 |     "portalservices": true
127 |   },
128 |   "schedules": {
129 |     "1": {
130 |       "name": "Frukost on 103811             ",
131 |       "description": " ",
132 |       "command": {
133 |         "address": "/api/24e04807fe143caeb52b4ccb305635f8/lights/3/state",
134 |         "body": {
135 |           "bri": 253,
136 |           "transitiontime": 5400,
137 |           "xy": [
138 |             0.52594,
139 |             0.43074
140 |           ],
141 |           "on": true
142 |         },
143 |         "method": "PUT"
144 |       },
145 |       "time": "2012-11-07T04:41:02"
146 |     }
147 |   }
148 | }
149 |
150 | 151 | 170 |
171 | 172 | 173 | -------------------------------------------------------------------------------- /js/documentation.js: -------------------------------------------------------------------------------- 1 | // Init sidebar 2 | $(function() { 3 | var activeItem, 4 | helpList = $('#js-sidebar .js-topic'), 5 | firstOccurance = true 6 | 7 | // hide list items at startup 8 | if($('body.api') && window.location){ 9 | var reg = /\/\/[^\/]+(\/.+)/g, 10 | docUrl = reg.exec(window.location.toString()) 11 | if(docUrl){ 12 | $('#js-sidebar .js-topic a').each(function(){ 13 | var url = $(this).attr('href').toString() 14 | if(url.indexOf(docUrl[1]) >= 0 && url.length == docUrl[1].length){ 15 | $(this).parent('li').addClass('disable') 16 | var parentTopic = $(this).parentsUntil('div.sidebar-module > ul').last() 17 | parentTopic.addClass('js-current') 18 | parentTopic.find('.js-expand-btn').toggleClass('collapsed expanded') 19 | } 20 | }) 21 | } 22 | } 23 | 24 | $('#js-sidebar .js-topic').each(function(){ 25 | if(($(this).find('.disable').length == 0 || firstOccurance == false) && 26 | $(this).hasClass('js-current') != true){ 27 | $(this).find('.js-guides').children().hide() 28 | } else { 29 | activeItem = $(this).index() 30 | firstOccurance = false 31 | } 32 | }) 33 | 34 | // Toggle style list. Expanded items stay 35 | // expanded when new items are clicked. 36 | $('#js-sidebar .js-toggle-list .js-expand-btn').click(function(){ 37 | var clickedTopic = $(this).parents('.js-topic'), 38 | topicGuides = clickedTopic.find('.js-guides li') 39 | $(this).toggleClass('collapsed expanded') 40 | topicGuides.toggle(100) 41 | return false 42 | }) 43 | 44 | // Accordion style list. Expanded items 45 | // collapse when new items are clicked. 46 | $('#js-sidebar .js-accordion-list .js-topic h3 a').click(function(){ 47 | var clickedTopic = $(this).parents('.js-topic'), 48 | topicGuides = clickedTopic.find('.js-guides li') 49 | 50 | if(activeItem != clickedTopic.index()){ 51 | if(helpList.eq(activeItem)){ 52 | helpList.eq(activeItem).find('.js-guides li').toggle(100) 53 | } 54 | activeItem = clickedTopic.index() 55 | topicGuides.toggle(100) 56 | } else { 57 | activeItem = undefined 58 | topicGuides.toggle(100) 59 | } 60 | 61 | return false 62 | }) 63 | 64 | $('.help-search .search-box').focus(function(){ 65 | $(this).css('background-position','0px -25px') 66 | }) 67 | 68 | $('.help-search .search-box').focusout(function(){ 69 | if($(this).val() == ''){ 70 | $(this).css('background-position','0px 0px') 71 | } 72 | }) 73 | 74 | // Dynamic year for footer copyright 75 | var currentYear = (new Date).getFullYear(); 76 | $("#year").text( (new Date).getFullYear() ); 77 | 78 | }); --------------------------------------------------------------------------------