AtlasCamp2014: Introducing the Confluence REST API
GoAtlassian
7,010 views
40 slides
Jun 25, 2014
Slide 1 of 40
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
About This Presentation
Confluence published the first version of its official, supported REST API in February. The new REST API makes it easy to create, retrieve and manipulate Confluence content with either Atlassian Connect or P2 plugins. Steve Lancashire, a senior developer on the API team, will give you a tour of its ...
Confluence published the first version of its official, supported REST API in February. The new REST API makes it easy to create, retrieve and manipulate Confluence content with either Atlassian Connect or P2 plugins. Steve Lancashire, a senior developer on the API team, will give you a tour of its capabilities and key features, like new Content Property persistence, expansions to help you get what you need out of the API in a single request, and potential extensions to the API available with P2 plugins.
Size: 2.9 MB
Language: en
Added: Jun 25, 2014
Slides: 40 pages
Slide Content
June 3-5, 2014 | Berlin, Germany
Steve Lancashire, Senior Developer - Confluence Platform, Atlassian
Introducing the
Confluence REST
API
Confluence Platform
Tweet any questions using #confluenceREST
Confluence Platform Goal
Make Confluence a simple, fast, reliable
product, and platform supporting
content applications, for the next ten
years.
”
“
Confluence Platform
Who are our “customers”?
Other
Atlassian!
Devs
Internal!
Confluence!
Devs
Our
Ecosystem!
(you)
Remote APIs - the past
SOAP and!
Xml RPC
!
Json
RPC
Prototype
REST!
(read only)
Feature specific
REST Resources
Many different APIs
•Developing a feature could end up using all of them!
•RPC and SOAP ignores the architecture of the Web!
•Incompatible representations between APIs!
•No cross version stability for feature specific resources
Confluence REST API
Tweet any questions using #confluenceREST
•Language agnostic!
•Doesn’t ignore the architecture of the web!
•cross version stability guarantees
Benefits of a REST API
Features of our REST API
•Default JSON representation!
•Hypermedia inside entities!
•Embed entities through expansions!
•Common Content model
•Paginated, filterable list of content!
•Content is any page, blogpost,
comment or attachment in
Confluence!
•Initially terse, but accepts nested
expansions!
• lets have a look at it
/rest/api/content
GET
Tooltip:!
The most readily available REST client
is your browser install a JSON
formatting extension, like JSONView
for Chrome
DEMO - list content
https://confluence.atlassian.com/rest/api/content
•Retrieve a piece of content by id!
•has a default set of expansions!
•supports nested, dot separated
expansions!
•example : confluence.atlassian.com/
rest/api/content/12
/api/content/{id}
GET
Tooltip:!
The most readily available REST client
is your browser install a JSON
formatting extension, like JSONView
for Chrome
•Converts content representations
from one representation to another!
•lets have a look at an example using
cURL!
•you can find more about storage
format on confluence.atlassian.com!
!
!
!
…/contentbody/convert/{to}
POST
Tooltip:!
cURL is a simple command line tool,
there are some cUrl examples using
the new REST API on
developer.atlassian.com
•Creates a new piece of content!
•Similar required fields as creating
content in the Confluence Editor!
•create from STORAGE, EDITOR
or WIKI content representations!
•returns the new piece of content
with generated id
/api/content/
POST
Tooltip:!
The REST API Browser on Atlassian
Marketplace provides a useful UI for
exploring the REST API
•Modify and delete existing content!
•Modifying requires an explicit version increment!
•DELETE removes the content from the resource
and moves it to the trash
/api/content/{id}
PUT / DELETE
Content Properties
A key / value store for the REST API
Content Properties
•Key / value store of properties on
content!
•Store up to 32KB of JSON!
•Great for Atlassian Connect
•Collection of properties on a piece of content!
•GET to fetch all properties !
•POST to create a new property!
!
/api/content/{id}/property
GET / POST
/api/content/{id}/property/arbitrary-key
•GET a particular property by specifying the key!
•PUT the value to update!
•DELETE removes the property
/api/content/{id}/property/{key}
GET / PUT / DELETE
{!
!!“key” : “arbitrary-key”, !
!!“value” : { “random-json“: “data” } !
!!...!
}
/api/content/{id}/property/arbitrary-key
DEMO - add a property
chrome://apps/
•spaces, child content, content
history, labels!
•API Reference docs can be found
via developer.atlassian.com!
•or google : confluence rest api docs
Plus lots more
•More small script examples on developer.atlassian.com
More examples
•Can extend the API with
metadata!
•P2 plugins can surface their
feature through the API!
•Implement
ModelMetadataProvider interface
Extending the API
ADVANCED TOPICS
•Capabilities API since Confluence 5.0!
•provides api “feature” discovery!
•confluence-content-api indicates the presence of the api
Migrating to the new API
ADVANCED TOPICS
“application” : “confluence”, !
“capabilities” : {!
!! “confluence-content-api“ : “/rest/api/content”,!
!! !… !
}
/rest/capabilities
So what is next?
CQL
Confluence Query Language for the REST API
•Query language for finding content !
•Similar to JQL / SQL where clause!
•API only, not user facing!
•i.e.: space in (DEV, DOCS) and title ~ “rest api”!
What is CQL?
•Flexible!
•Fast!
•Familiar
CQL Benefits
Functions!
•similar to JQL functions!
•i.e. creator = currentUser()
Extensibility
CQL BENEFITS
Fields!
•plugins can add indexed fields to the CQL grammar!
•i.e. macro = cheese
1.0 - MVP!
•Existing fields in the index!
•Extensible fields and functions!
•Operators : =, !=, ~, !~, <=, >=,
IN, NOT IN, EMPTY
•1.1 Expand the index!
•Indexing service for plugins!
•Additional fields from plugin
data stored in AO!
•Content properties
CQL Roadmap
Questions
Tweet any questions using #confluenceREST