Putting it all together
Full working example
In this example, let's pull together the various parts you've worked on to showcase the full example. I chose to format mine in Markdown syntax in a text editor.
Here's my example.
surfreport/{beachId}
Returns information about surfing conditions at a specific beach ID, including the surf height, water temperature, wind, and tide. Also provides an overall recommendation about whether to go surfing.
{beachId}
refers to the ID for the beach you want to look up. All Beach ID codes are available from our site.
Endpoint definition
surfreport/{beachId}
HTTP method
GET
Parameters
Parameter | Description | Data Type |
---|---|---|
days | Optional. The number of days to include in the response. Default is 3. | integer |
units | Optional. Whether to return the values in imperial or metric measurements. Imperial will use feet, knots, and fahrenheit. Metric will use centimeters, kilometers per hour, and celsius. | string |
time | Optional. If you include the time, then only the current hour will be returned in the response. | integer. Unix format (ms since 1970) in UTC. |
Sample request
curl --get --include 'https://simple-weather.p.mashape.com/surfreport/123?units=imperial&days=1&time=1433772000' -H 'X-Mashape-Key: EF3g83pKnzmshgoksF83V6JB6QyTp1cGrrdjsnczTkkYgYrp8p' -H 'Accept: application/json'
Sample response
{ "surfreport": [ { "beach": "Santa Cruz", "monday": { "1pm": { "tide": 5, "wind": 15, "watertemp": 80, "surfheight": 5, "recommendation": "Go surfing!" }, "2pm": { "tide": -1, "wind": 1, "watertemp": 50, "surfheight": 3, "recommendation": "Surfing conditions are okay, not great." }, "3pm": { "tide": -1, "wind": 10, "watertemp": 65, "surfheight": 1, "recommendation": "Not a good day for surfing." } } } ] }
The following table describes each item in the response.
Response item | Description |
---|---|
beach | The beach you selected based on the beach ID in the request. The beach name is the official name as described in the National Park Service Geodatabase. |
{day} | The day of the week selected. A maximum of 3 days get returned in the response. |
{time} | The time for the conditions. This item is only included if you include a time parameter in the request. |
{day}/{time}/tide | The level of tide at the beach for a specific day and time. Tide is the distance inland that the water rises to, and can be a positive or negative number. When the tide is out, the number is negative. When the tide is in, the number is positive. The 0 point reflects the line when the tide is neither going in nor out but is in transition between the two states. |
{day}/{time}/wind | The wind speed at the beach, measured in knots per hour or kilometers per hour depending on the units you specify. Wind affects the surf height and general wave conditions. Wind speeds of more than 15 knots per hour make surf conditions undesirable, since the wind creates white caps and choppy waters. |
{day}/{time}/watertemp | The temperature of the water, returned in Fahrenheit or Celsius depending upon the units you specify. Water temperatures below 70 F usually require you to wear a wetsuit. With temperatures below 60, you will need at least a 3mm wetsuit and preferably booties to stay warm. |
{day}/{time}/surfheight | The height of the waves, returned in either feet or centimeters depending on the units you specify. A surf height of 3 feet is the minimum size needed for surfing. If the surf height exceeds 10 feet, it is not safe to surf. |
{day}/{time}/recommendation | An overall recommendation based on a combination of the various factors (wind, watertemp, surfheight). Three responses are possible: (1) "Go surfing!", (2) "Surfing conditions are okay, not great", and (3) "Not a good day for surfing." Each of the three factors is scored with a maximum of 33.33 points, depending on the ideal for each element. The three elements are combined to form a percentage. 0% to 59% yields response 3, 60% - 80% and below yields response 2, and 81% to 100% yields response 3. |
Error and status codes
The following table lists the status and error codes related to this request.
Status code | Meaning |
---|---|
609 | Invalid time parameters. All time parameters must be in Java epoch format. |
4112 | The beach ID was not found in the lookup. |
Code example
Code example
The following code samples shows how to use the surfreport endpoint to get the surf height for a specific beach.
Surf Height
In this example, the ajax
method from jQuery is used because it allows us to load a remote resource asynchronously.
In the request, you submit the authorization through the header rather than directly in the endpoint path. The endpoint limits the days returned to 1 in order to increase the download speed.
For demonstration purposes, the response is assigned to the response
argument of the done
method, and then written out to the surfheight
tag on the page.
We're just getting the surf height, but there's a lot of other data you could choose to display.
Structure and templates
If you have a lot of endpoints to document, you'll probably want to create templates that follow a common structure.
Additionally, if you want to add a lot of styling to each of the elements, you may want to push each of these elements into your template by way of a script. I'll talk more about publishing in the upcoming sections, Publishing API Documentation.