New! REST API documentation using SWAGGER on your own instance!
Looking for the Requirement Yogi Cloud API?
We use Swagger and Open API : REST APIs (Cloud)
Experimental API
Our API is subject to changes.
-
When we annotate @Public, we attempt with "best effort" to keep the API backwards-compatible for as long as possible.
-
If we want to deprecate, we will annotate with @Deprecated for a few versions, then remove it in the major version (in "platform.major.micro" versioning scheme, for example in 2.2.0).
-
We may add parameters, not remove them.
-
-
When we annotate @Internal, we don't even try to keep it stable, it usually changes from 1 micro version to another. Those APIs are tightly couples with the Javascript.
-
When we don't annotate, please consider it as @Internal.
This documentation is only designed for programmers. It is provided as is, and programmers are expected to be good enough to solve problems.
Use our Open API / Swagger UIs
Files in the format of Open API v3 (formerly Swagger v2) describe all REST APIs that are accessible for users in an application. The software offers:
-
A UI where you can try out the APIs,
-
A “openapi.json” file which fully describes the documentation of each REST API route.
The URLs for those files will be:
http://your-confluence-url/requirementyogi/swaggerui.action
http://your-confluence-url/rest/reqs/1/openapi
http://your-jira-url/secure/admin/swaggerui!default.jspa
http://your-jira-url/rest/reqs/1/openapi
REST API in Confluence
Base URL
The "base URL" is the address of Confluence. It could be:
-
https://confluence.example.comif there is no port, no context path and it's https. -
http://confluence.example.com:8090/confluenceif there is a port, a context path and http.
Try with {baseUrl}/admin/viewgeneralconfig.action to ensure you have the right one. In the following documentation, we will omit the base URL.
REST Resources in Confluence
|
Verb and URL |
Comments and query string arguments |
|---|---|
|
GET /rest/reqs/1/requirement2/{spaceKey} |
Search for requirements.
|
|
POST /rest/reqs/1/requirement2/{spaceKey} |
Do not use. |
|
PUT /rest/reqs/1/requirement2/{spaceKey} |
Do not use. |
|
GET /rest/reqs/1/requirement2/{spaceKey}/{key} |
Get a requirement.
|
|
POST /rest/reqs/1/requirement2/{spaceKey}/{key} |
Do not use. |
|
PUT /rest/reqs/1/requirement2/{spaceKey}/{key} |
Do not use. |
|
DELETE /rest/reqs/1/requirement2/{spaceKey}/{key} |
Do not use. |
|
GET /rest/reqs/1/requirement3 |
Do not use. |
|
Baselines |
|
|
GET /rest/reqs/1/baseline/{spaceKey} |
Get the list of baselines in this space.
|
|
POST /rest/reqs/1/baseline/{spaceKey}/1/create |
Freeze a baseline. The body must be in JSON: JavaScript
The ceo is the baseline page. It is not the page which contains the original definition of the requirements. It can be any arbitrary page, its title will be synchronized with the name of the baseline, and if there is a Baseline macro on it, this macro will show the count of requirements. The queryString is the list of all requirements which must be copied and archived in this baseline. |
|
POST /rest/reqs/1/baseline/{spaceKey}/1/create-instant |
Create and freeze instantly a baseline. There will be no parent page for this baseline. The body must be JSON: JavaScript
If fromCeoWithChildren is true, the requirements of all the child pages will be baselined too. |
|
DELETE /rest/reqs/1/baseline/{spaceKey}/{baseline} |
Delete a baseline. No JSON body. |
|
PUT /rest/reqs/1/baseline/{spaceKey}/{baseline}/label |
Change the label of a baseline. Use a text/plain body. |
|
GET /rest/reqs/1/baseline/{spaceKey}/{baseline}/pages |
Returns the list of pages which have requirements of this baseline. |
|
POST /rest/reqs/1/sync |
Deprecated. Do not use. |
|
POST /rest/reqs/1/helpers/reindex/{contentId} |
Reindexes a page. It will only mark the requirements are ACTIVE/DELETED and flag them as "Needs excerpt", which means those requirements will appear with a red dot. The next time a user views the page, excerpts will be gathered and saved as the text and properties of requirements, and the red dot will disappear. |
|
GET /rest/reqs/1/integration |
Returns the list of application links and their RY configuration. Permissions: Confluence administrators only.
|
|
POST /rest/reqs/1/integration |
Create an integration. Don't do it. Permissions: Confluence administrators only. |
|
GET /rest/reqs/1/integration/{serviceId} |
Returns the details of the integration: IntegrationDescriptor
JavaScript
Permissions: Confluence administrators only. |
|
PUT /rest/reqs/1/integration/{serviceId} |
Updates the descriptor. Permissions: Confluence administrators only. |
|
GET /rest/reqs/1/integration/{serviceId}/queue/outbound?limit=50 |
Get the list of messages which will be sent to Jira in the next synchronization (every 3 mintues):
|
|
PUT /rest/reqs/1/integration/{serviceId}/queue/outbound/{messageId} |
PUT sends this item to Jira. No body necessary. DELETE removes this message from the list. |
REST API in Jira
|
Verb and URL |
Comments and query string arguments |
|---|---|
|
GET /rest/reqs/1/api |
Displays generic information about this REST resource. Also displays the current user's name.
Anonymous-allowed. |
|
POST /rest/reqs/1/api |
Posts messages from Confluence to Jira. Messages are encoded in JSON: Queue message, APIv4
|
|
PUT /rest/reqs/1/api/{applinkId}/mode |
Changes the API mode. The body must be a string between quotes: AUTO, MANUAL, DISABLED, sent with a JSON content type. |
|
PUT /rest/reqs/1/api/{applinkId}/version |
Changes the API version. The body is an integer, sent with a JSON content type. The API changes the version and tells the user which version was accepted (in case Jira doesn't support that version). |
|
GET /rest/reqs/1/issuelinks |
Not implemented, returns a fixed string. |
|
GET /rest/reqs/1/issuelinks/{issueKey} đź’ˇ |
Returns the links on an issue. A ?relationship= parameter can be specified. |
|
POST /rest/reqs/1/issuelinks/{issueKey} đź’ˇ |
Creates issue links. Body is JSON:
The HTML is updated for this requirement in Jira, which means if another Jira issue has a link to the same requirement, its text will be updated. |
|
PUT /rest/reqs/1/issuelinks/{issueKey} |
Same as POST, but removes all existing links on this issue before. Can be scoped using ?relationship=... |
|
DELETE /rest/reqs/1/issuelinks/{issueKey} |
List of links to delete from this issue:
|
|
PUT /rest/reqs/1/sync?issues=PROJ-2,PROJ-1 |
Ask Jira to resynchronize those issues with Confluence:
All links of all requirements linked with the specified issues are synced. It means:
|
Examples
Add a link in Jira:
curl 'http://j10.3.19.local:2030/j-app/rest/reqs/1/issuelinks/SCRUM-1' \
-X 'POST' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json; charset=UTF-8' \
-b 'JSESSIONID=...' \
--data-raw '[{"applinkId":"b87f691d-b781-3965-becb-fad2b5bc8175","spaceKey":"S3","key":"BR-01","relationship":"implements"}]'
# Response : {...,"status":"ok"}
Remove a link from Jira:
curl 'http://j10.3.19.local:2030/j-app/rest/reqs/1/issuelinks/SCRUM-1' \
-X 'DELETE' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json; charset=UTF-8' \
-b 'JSESSIONID=...' \
--data-raw '[{"applinkId":"b87f691d-b781-3965-becb-fad2b5bc8175","spaceKey":"S3","key":"BR-01","relationship":"implements"}]'
# Response : {...,"status":"ok"}
Overwrite existing links:
curl 'http://j10.3.19.local:2030/j-app/rest/reqs/1/issuelinks/SCRUM-1?relationship=implements' \
-X 'PUT' \
-H 'Connection: keep-alive' \
-H 'Content-Type: application/json; charset=UTF-8' \
-H 'Accept: application/json' \
-b 'JSESSIONID=...;' \
--data-raw '[{"applinkId":"b87f691d-b781-3965-becb-fad2b5bc8175","spaceKey":"S3","key":"BR-01"}]'
# Response : {...,"status":"ok"}
List the links:
curl 'http://j10.3.19.local:2030/j-app/rest/reqs/1/issuelinks/SCRUM-1?relationship=implements'
Note: The “applinkId” UUID can be found when browsing the Jira administration → Application links → Click on the line of Confluence → It’s the ID in the URL.
Note: The “baseline” argument is omitted here for simplicity.