Publishing via the API
announcement
tutorial
by Larry FoxFor the last week publishing in the Siteleaf interface has been powered by our API. This has been a requested feature by some of our users and ourselves. Its behavior is bit different than some of our other API endpoints, so let’s go over it.
Just want to use the Siteleaf gem? Skip to the bottom!
To initiate a publish, make an authenticated POST
request to the /sites/:id/publish
endpoint.
$ curl -u "$API_KEY:$API_SECRET" -X POST \
http://api.siteleaf.com/v1/sites/$SITE_ID/publish
{"job_id":"e79af12c79ccd8866902d3dd"}
This triggers a publish and immediately returns a job ID (or returns an already running job ID if one exists). You can stop here if you’d like and Siteleaf will happily chug away in the background.
But the fun doesn’t stop there. You can optionally check in on publish progress using your job_id
from above by making an authenticated GET
request to the new /jobs/:id
endpoint.
$ curl -u "$API_KEY:$API_SECRET" \
http://api.siteleaf.com/api/v1/jobs/e79af12c79ccd8866902d3dd
event:publish
data:{"status":"working","message":"Checking... /home","updated_at":"1435159120"}
[etc…]
event:publish
data:{"status":"complete","message":"Published","updated_at":"1435159121"}
This endpoint, unlike our others, consistently returns Server Sent Events (SSE) instead of JSON documents (including errors). The data
field is JSON encoded however. SSE is supported in all modern browsers and there are client libraries in a number of programming languages.
Additionally, job ID’s are kept for at least 30 minutes after completion so you can check in on a publish immediately or wait a bit.
Can’t wait to see what uses you come up with!
Publishing from the gem
First install the latest gem (0.9.23
as of writing)
$ gem install siteleaf
And then…
$ siteleaf publish
Fetching inventory...
Compiling...
[etc…]
Published
=> Publish completed.
Or if you don’t care about progress, you can use either of the following:
$ siteleaf publish -q
$ siteleaf publish --quiet
=> Publish queued.
🎉🎉