openapi: 3.0.1
info:
title: 'Atlassian wiki/rest/api/relation/'
description: Needs description.
termsOfService: https://atlassian.com/terms/
version: 1.0.0
externalDocs:
description: The online and complete version of the Confluence Cloud REST API docs.
url: https://developer.atlassian.com/cloud/confluence/rest/
servers:
- url: //your-domain.atlassian.net
tags:
- name: Relation
paths:
/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}:
get:
tags:
- Relation
summary: Atlassian Find Target Entities Related To A Source Entity
description: >-
Returns all target entities that have a particular relationship to
the
source entity. Note, relationships are one way.
For
example, the following method finds all content that the current
user
has an 'ignore' relationship with:
`GET
/wiki/rest/api/relation/ignore/from/user/current/to/content`
Note,
'ignore' is an example custom relationship
type.
**[Permissions](https://confluence.atlassian.com/x/_AozKw)
required**:
Permission to view both the target entity and source
entity.
operationId: atlassianFindtargetfromsource
parameters:
- name: relationName
in: path
description: >-
The name of the relationship. This method supports relationships
created via
[Create
relationship](#api-wiki-rest-api-relation-relationname-from-sourcetype-sourcekey-to-targettype-targetkey-put).
Note, this method does not support 'like' or 'favourite'
relationships.
required: true
schema:
type: string
- name: sourceType
in: path
description: The source entity type of the relationship.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: sourceKey
in: path
description: >-
The identifier for the source entity:
- If `sourceType` is `user`, then specify either `current`
(logged-in user), the user key of the user, or
the account ID of the user. Note that the user key has been
deprecated in favor of the account ID for this parameter. See the
[migration
guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/)
for details.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: targetType
in: path
description: The target entity type of the relationship.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: sourceStatus
in: query
description: |-
The status of the source. This parameter is only used when the
`sourceType` is 'content'.
schema:
type: string
- name: targetStatus
in: query
description: |-
The status of the target. This parameter is only used when the
`targetType` is 'content'.
schema:
type: string
- name: sourceVersion
in: query
description: |-
The version of the source. This parameter is only used when the
`sourceType` is 'content' and the `sourceStatus` is 'historical'.
schema:
type: integer
format: int32
- name: targetVersion
in: query
description: |-
The version of the target. This parameter is only used when the
`targetType` is 'content' and the `targetStatus` is 'historical'.
schema:
type: integer
format: int32
- name: expand
in: query
description: |-
A multi-value parameter indicating which properties of the response
object to expand.
- `relationData` returns information about the relationship, such as
who created it and when it was created.
- `source` returns the source entity.
- `target` returns the target entity.
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- relationData
- source
- target
- name: start
in: query
description: The starting index of the returned relationships.
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: |-
The maximum number of relationships to return per page.
Note, this may be restricted by fixed system limits.
schema:
minimum: 0
type: integer
format: int32
default: 25
responses:
'200':
description: Returned if the requested relationships are returned.
content:
application/json:
schema:
$ref: '#/components/schemas/RelationArray'
'400':
description: Returned if the request is invalid.
content: {}
'403':
description: |-
Returned if the user does not have permission to view the
relationships.
content: {}
'404':
description: Returned if the target entity does not exist.
content: {}
security:
- basicAuth: []
- oAuthDefinitions:
- read:confluence-content.summary
x-atlassian-oauth2-scopes:
- scheme: oAuthDefinitions
state: Current
scopes:
- read:confluence-content.summary
- scheme: oAuthDefinitions
state: Beta
scopes:
- read:relation:confluence
- read:content-details:confluence
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-connect-scope: READ
/wiki/rest/api/relation/{relationName}/from/{sourceType}/{sourceKey}/to/{targetType}/{targetKey}:
get:
tags:
- Relation
summary: Atlassian Find Relationship From Source To Target
description: >-
Find whether a particular type of relationship exists from a
source
entity to a target entity. Note, relationships are one
way.
For example, you can use this method to find whether the
current user has
selected a particular page as a favorite (i.e. 'save
for later'):
`GET
/wiki/rest/api/relation/favourite/from/user/current/to/content/123`
**[Permissions](https://confluence.atlassian.com/x/_AozKw)
required**:
Permission to view both the target entity and source
entity.
operationId: atlassianGetrelationship
parameters:
- name: relationName
in: path
description: >-
The name of the relationship. This method supports the 'favourite'
(i.e. 'save for later') relationship as well as any other
relationship
types created via [Create
relationship](#api-wiki-rest-api-relation-relationname-from-sourcetype-sourcekey-to-targettype-targetkey-put).
required: true
schema:
type: string
- name: sourceType
in: path
description: |-
The source entity type of the relationship. This must be 'user', if
the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: sourceKey
in: path
description: >-
- The identifier for the source entity:
- If `sourceType` is `user`, then specify either `current`
(logged-in user), the user key of the user, or
the account ID of the user. Note that the user key has been
deprecated in favor of the account ID for this parameter. See the
[migration
guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/)
for details.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: targetType
in: path
description: |-
The target entity type of the relationship. This must be 'space' or
'content', if the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: targetKey
in: path
description: >-
The identifier for the target entity:
- If `targetType` is `user`, then specify either `current`
(logged-in user), the user key of the user, or
the account ID of the user. Note that the user key has been
deprecated in favor of the account ID for this parameter. See the
[migration
guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/)
for details.
- If `targetType` is 'content', then specify the content ID.
- If `targetType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: sourceStatus
in: query
description: |-
The status of the source. This parameter is only used when the
`sourceType` is 'content'.
schema:
type: string
- name: targetStatus
in: query
description: |-
The status of the target. This parameter is only used when the
`targetType` is 'content'.
schema:
type: string
- name: sourceVersion
in: query
description: |-
The version of the source. This parameter is only used when the
`sourceType` is 'content' and the `sourceStatus` is 'historical'.
schema:
type: integer
format: int32
- name: targetVersion
in: query
description: |-
The version of the target. This parameter is only used when the
`targetType` is 'content' and the `targetStatus` is 'historical'.
schema:
type: integer
format: int32
- name: expand
in: query
description: |-
A multi-value parameter indicating which properties of the response
object to expand.
- `relationData` returns information about the relationship, such as
who created it and when it was created.
- `source` returns the source entity.
- `target` returns the target entity.
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- relationData
- source
- target
responses:
'200':
description: Returned if the relationship exists.
content:
application/json:
schema:
$ref: '#/components/schemas/Relation'
'400':
description: Returned if the request is invalid.
content: {}
'401':
description: |-
Returned if the authentication credentials are incorrect or missing
from the request.
content: {}
'403':
description: |-
Returned if the user does not have permission to view the
relationship.
content: {}
'404':
description: Returned if the relationship does not exist.
content: {}
security:
- basicAuth: []
- oAuthDefinitions:
- read:confluence-content.summary
x-atlassian-oauth2-scopes:
- scheme: oAuthDefinitions
state: Current
scopes:
- read:confluence-content.summary
- scheme: oAuthDefinitions
state: Beta
scopes:
- read:relation:confluence
- read:content-details:confluence
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-connect-scope: READ
put:
tags:
- Relation
summary: Atlassian Create Relationship
description: >-
Creates a relationship between two entities (user, space, content).
The
'favourite' relationship is supported by default, but you can use
this method
to create any type of relationship between two
entities.
For example, the following method creates a 'sibling'
relationship between
two pieces of content:
`GET
/wiki/rest/api/relation/sibling/from/content/123/to/content/456`
**[Permissions](https://confluence.atlassian.com/x/_AozKw)
required**:
Permission to access the Confluence site ('Can use'
global permission).
operationId: atlassianCreaterelationship
parameters:
- name: relationName
in: path
description: |-
The name of the relationship. This method supports the 'favourite'
(i.e. 'save for later') relationship. You can also specify any other
value for this parameter to create a custom relationship type.
required: true
schema:
type: string
- name: sourceType
in: path
description: |-
The source entity type of the relationship. This must be 'user', if
the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: sourceKey
in: path
description: >-
- The identifier for the source entity:
- If `sourceType` is 'user', then specify either 'current'
(logged-in
user) or the user key.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: targetType
in: path
description: |-
The target entity type of the relationship. This must be 'space' or
'content', if the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: targetKey
in: path
description: >-
- The identifier for the target entity:
- If `sourceType` is 'user', then specify either 'current'
(logged-in
user) or the user key.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: sourceStatus
in: query
description: |-
The status of the source. This parameter is only used when the
`sourceType` is 'content'.
schema:
type: string
- name: targetStatus
in: query
description: |-
The status of the target. This parameter is only used when the
`targetType` is 'content'.
schema:
type: string
- name: sourceVersion
in: query
description: |-
The version of the source. This parameter is only used when the
`sourceType` is 'content' and the `sourceStatus` is 'historical'.
schema:
type: integer
format: int32
- name: targetVersion
in: query
description: |-
The version of the target. This parameter is only used when the
`targetType` is 'content' and the `targetStatus` is 'historical'.
schema:
type: integer
format: int32
responses:
'200':
description: Returned if the relationship is created.
content:
application/json:
schema:
$ref: '#/components/schemas/Relation'
'400':
description: Returned if the request is invalid.
content: {}
'401':
description: |-
Returned if the authentication credentials are incorrect or missing
from the request.
content: {}
'403':
description: Returned if the user does not have permission to use Confluence.
content: {}
'404':
description: Returned if the user, space or content could not be found.
content: {}
security:
- basicAuth: []
- oAuthDefinitions:
- write:confluence-content
x-atlassian-oauth2-scopes:
- scheme: oAuthDefinitions
state: Current
scopes:
- write:confluence-content
- scheme: oAuthDefinitions
state: Beta
scopes:
- read:relation:confluence
- read:space:confluence
- read:user:confluence
- read:content:confluence
- write:relation:confluence
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-connect-scope: WRITE
delete:
tags:
- Relation
summary: Atlassian Delete Relationship
description: >-
Deletes a relationship between two entities (user, space,
content).
**[Permissions](https://confluence.atlassian.com/x/_AozKw)
required**:
Permission to access the Confluence site ('Can use'
global permission).
For favourite relationships, the current user can
only delete their own
favourite relationships. A space administrator
can delete favourite
relationships for any user.
operationId: atlassianDeleterelationship
parameters:
- name: relationName
in: path
description: The name of the relationship.
required: true
schema:
type: string
- name: sourceType
in: path
description: |-
The source entity type of the relationship. This must be 'user', if
the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: sourceKey
in: path
description: >-
- The identifier for the source entity:
- If `sourceType` is 'user', then specify either 'current'
(logged-in
user) or the user key.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: targetType
in: path
description: |-
The target entity type of the relationship. This must be 'space' or
'content', if the `relationName` is 'favourite'.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: targetKey
in: path
description: >-
- The identifier for the target entity:
- If `sourceType` is 'user', then specify either 'current'
(logged-in
user) or the user key.
- If `sourceType` is 'content', then specify the content ID.
- If `sourceType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: sourceStatus
in: query
description: |-
The status of the source. This parameter is only used when the
`sourceType` is 'content'.
schema:
type: string
- name: targetStatus
in: query
description: |-
The status of the target. This parameter is only used when the
`targetType` is 'content'.
schema:
type: string
- name: sourceVersion
in: query
description: |-
The version of the source. This parameter is only used when the
`sourceType` is 'content' and the `sourceStatus` is 'historical'.
schema:
type: integer
format: int32
- name: targetVersion
in: query
description: |-
The version of the target. This parameter is only used when the
`targetType` is 'content' and the `targetStatus` is 'historical'.
schema:
type: integer
format: int32
responses:
'204':
description: |-
Returned if the relationship is deleted or the relationship didn't
exist.
content: {}
'400':
description: Returned if the request is invalid.
content: {}
'401':
description: |-
Returned if the authentication credentials are incorrect or missing
from the request.
content: {}
'403':
description: |-
Returned if the user does not have permission to delete the
relationship.
content: {}
'404':
description: Returned if the user, space or content could not be found.
content: {}
security:
- basicAuth: []
- oAuthDefinitions:
- write:confluence-content
x-atlassian-oauth2-scopes:
- scheme: oAuthDefinitions
state: Current
scopes:
- write:confluence-content
- scheme: oAuthDefinitions
state: Beta
scopes:
- write:relation:confluence
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-connect-scope: WRITE
/wiki/rest/api/relation/{relationName}/to/{targetType}/{targetKey}/from/{sourceType}:
get:
tags:
- Relation
summary: Atlassian Find Source Entities Related To A Target Entity
description: >-
Returns all target entities that have a particular relationship to
the
source entity. Note, relationships are one way.
For
example, the following method finds all users that have a
'collaborator'
relationship to a piece of content with an ID of
'1234':
`GET
/wiki/rest/api/relation/collaborator/to/content/1234/from/user`
Note,
'collaborator' is an example custom relationship
type.
**[Permissions](https://confluence.atlassian.com/x/_AozKw)
required**:
Permission to view both the target entity and source
entity.
operationId: atlassianFindsourcesfortarget
parameters:
- name: relationName
in: path
description: >-
The name of the relationship. This method supports relationships
created via
[Create
relationship](#api-wiki-rest-api-relation-relationname-from-sourcetype-sourcekey-to-targettype-targetkey-put).
Note, this method does not support 'like' or 'favourite'
relationships.
required: true
schema:
type: string
- name: sourceType
in: path
description: The source entity type of the relationship.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: targetType
in: path
description: The target entity type of the relationship.
required: true
schema:
type: string
enum:
- user
- content
- space
- name: targetKey
in: path
description: >-
The identifier for the target entity:
- If `targetType` is `user`, then specify either `current`
(logged-in user), the user key of the user, or
the account ID of the user. Note that the user key has been
deprecated in favor of the account ID for this parameter. See the
[migration
guide](https://developer.atlassian.com/cloud/confluence/deprecation-notice-user-privacy-api-migration-guide/)
for details.
- If `targetType` is 'content', then specify the content ID.
- If `targetType` is 'space', then specify the space key.
required: true
schema:
type: string
- name: sourceStatus
in: query
description: |-
The status of the source. This parameter is only used when the
`sourceType` is 'content'.
schema:
type: string
- name: targetStatus
in: query
description: |-
The status of the target. This parameter is only used when the
`targetType` is 'content'.
schema:
type: string
- name: sourceVersion
in: query
description: |-
The version of the source. This parameter is only used when the
`sourceType` is 'content' and the `sourceStatus` is 'historical'.
schema:
type: integer
format: int32
- name: targetVersion
in: query
description: |-
The version of the target. This parameter is only used when the
`targetType` is 'content' and the `targetStatus` is 'historical'.
schema:
type: integer
format: int32
- name: expand
in: query
description: |-
A multi-value parameter indicating which properties of the response
object to expand.
- `relationData` returns information about the relationship, such as
who created it and when it was created.
- `source` returns the source entity.
- `target` returns the target entity.
style: form
explode: false
schema:
type: array
items:
type: string
enum:
- relationData
- source
- target
- name: start
in: query
description: The starting index of the returned relationships.
schema:
minimum: 0
type: integer
format: int32
default: 0
- name: limit
in: query
description: |-
The maximum number of relationships to return per page.
Note, this may be restricted by fixed system limits.
schema:
minimum: 0
type: integer
format: int32
default: 25
responses:
'200':
description: Returned if the requested relationships are returned.
content:
application/json:
schema:
$ref: '#/components/schemas/RelationArray'
'400':
description: Returned if the request is invalid.
content: {}
'403':
description: |-
Returned if the user does not have permission to view the
relationship
content: {}
'404':
description: Returned if the target entity does not exist.
content: {}
security:
- basicAuth: []
- oAuthDefinitions:
- read:confluence-content.summary
x-atlassian-oauth2-scopes:
- scheme: oAuthDefinitions
state: Current
scopes:
- read:confluence-content.summary
- scheme: oAuthDefinitions
state: Beta
scopes:
- read:relation:confluence
- read:content-details:confluence
x-atlassian-data-security-policy:
- app-access-rule-exempt: false
x-atlassian-connect-scope: READ
components:
schemas:
RelationArray:
required:
- _links
- limit
- results
- size
- start
type: object
properties:
results:
type: array
items:
$ref: '#/components/schemas/Relation'
start:
type: integer
format: int32
limit:
type: integer
format: int32
size:
type: integer
format: int32
_links:
$ref: '#/components/schemas/GenericLinks'
Relation:
required:
- _links
- name
type: object
properties:
name:
type: string
relationData:
$ref: '#/components/schemas/RelationData'
source:
oneOf:
- $ref: '#/components/schemas/Content'
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/Space'
target:
oneOf:
- $ref: '#/components/schemas/Content'
- $ref: '#/components/schemas/User'
- $ref: '#/components/schemas/Space'
_expandable:
type: object
properties:
relationData:
type: string
source:
type: string
target:
type: string
_links:
$ref: '#/components/schemas/GenericLinks'
x-atlassian-narrative:
documents:
- title: About
anchor: about
body: >-
This is the reference for the Confluence Cloud REST API. This API is the
primary way to get and
modify data in Confluence Cloud, whether you are developing an app or
any other integration.
Use it to interact with Confluence entities, like pages and blog posts,
spaces, users, groups,
and more.
- title: Authentication and authorization
anchor: auth
body: >-
**Authentication:** If you are building a Cloud app, authentication is
implemented via JWT or OAuth 2.0, depending on what you are building
(see [Security
overview](https://developer.atlassian.com/cloud/confluence/security-overview/)).
Otherwise, if you are authenticating directly against the REST API, the
REST API supports basic auth (see [Basic auth for REST
APIs](https://developer.atlassian.com/cloud/confluence/basic-auth-for-rest-apis/)).
**Authorization:** If you are building a Cloud app, authorization can be
implemented by
[scopes](https://developer.atlassian.com/cloud/confluence/scopes/) or by
[OAuth 2.0 user
impersonation](https://developer.atlassian.com/cloud/confluence/oauth-2-jwt-bearer-tokens-for-apps).
Otherwise, if you are making calls directly against the REST API,
authorization is based on the user used in the authentication process.
See [Security
overview](https://developer.atlassian.com/cloud/confluence/security-overview/)
for more details on authentication and authorization.
- title: Status codes
anchor: status-code
body: >-
The Confluence REST API uses the [standard HTTP status
codes](https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html).
Responses that return an error status code will also return a response
body, similar to the following:
```json
{
"statusCode": 404,
"data": {
"authorized": false,
"valid": false,
"errors": [
{
"message": {
"translation": "This is an example error message.",
"args": []
}
}
],
"successful": false
},
"message": "This is an example error message."
}
```
- title: Using the REST API
anchor: using
body: >-
**Expansion:** The Confluence REST API uses resource expansion: some
parts of a resource are not returned unless explicitly specified. This
simplifies responses and minimizes network traffic.
To expand part of a resource in a request, use the `expand` query
parameter and specify the entities to be expanded. If you need to expand
nested entities, use the `.` dot notation. For example, the following
request will expand information about the requested content's space and
labels:
```
GET /wiki/rest/api/content/{id}?expand=space,metadata.labels
```
**Pagination:** The Confluence REST API uses pagination: a method that
returns a response with multiple objects can only return a limited
number at one time. This limits the size of responses and conserves
server resources.
Use the 'limit' and 'start' query parameters to specify pagination:
- `limit` is the number of objects to return per page. This may be
restricted by system limits.
- `start` is the index of the first item returned in the page of
results. The base index is 0.
For example, the following request will return ten content objects,
starting from the fifth object.
```
GET /wiki/rest/api/content?start=4&limit=10
```
**Special headers:**
- `X-Atlassian-Token: no-check` request header must be specified for
methods
that are protected from Cross Site Request Forgery (XSRF/CSRF) attacks.
This is
stated in the method description, if required. For more information, see
this
[KB
article](https://confluence.atlassian.com/cloudkb/xsrf-check-failed-when-calling-cloud-apis-826874382.html).
- title: Capabilities
anchor: capabilities
body: >-
**Webhooks:** A webhook is a user-defined callback over HTTP. You can
use Confluence webhooks to notify your app or web application when
certain events occur in Confluence. For example, when a page is created
or updated. To learn more, see
[Webhooks](https://developer.atlassian.com/cloud/confluence/modules/webhook/).
**Content properties:** Content properties are a key-value storage
associated with a piece of Confluence content. If you are building an
app, this is one form of persistence that you can use. You can use the
Confluence REST API to get, update, and delete content properties. To
learn more, see [Content properties in the REST
API](https://developer.atlassian.com/cloud/confluence/content-properties/).
**CQL:** The Confluence Query Language (CQL) allows you to perform
complex searches for content using an SQL-like syntax in the `search`
resource. To learn more, see [Advanced searching using
CQL](https://developer.atlassian.com/cloud/confluence/advanced-searching-using-cql/).