Jira and Confluence
One Atlassian Cloud site that answers Jira, Jira Software, Jira Service Management and Confluence REST, plus Atlassian's MCP tools.
Vendor reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/ ↗. Machine-readable: compat/jira-confluence.json.
Surfaces
| Kind | Path | Notes |
|---|---|---|
| REST | /rest/api/3 | Jira platform REST, also /rest/api/2 and /rest/api/latest |
| REST | /rest/agile/1.0 | Jira Software boards, sprints and backlogs |
| REST | /rest/servicedeskapi | Jira Service Management |
| REST | /wiki/rest/api | Confluence v1, and Confluence v2 under /wiki/api/v2 |
| MCP | /mcp | Atlassian MCP tools for Jira and Confluence |
API versions: Jira REST v3, v2, latest, Jira Software agile 1.0, Confluence REST v1 and v2
Supported
- Each product's pagination style, including
nextPageTokenon/search/jqland cursor-only Confluence v2 - Each product's error envelope, with 400 for malformed JQL/CQL, 404 for unknown ids and 409 for a stale Confluence page version
- A JQL and CQL subset, including the history predicates
CHANGEDandWAS - The 19 built-in custom-field types the administration API accepts
- OAuth scopes, product access, permission schemes, issue security levels and Confluence page restrictions decide whether a call is allowed
- Blog posts, page and blueprint templates, and content properties
Not supported
- JQL sub-queries (answered 400 with the vendor envelope)
- Sending notifications; notification schemes are served but nothing is sent
- Cascading selects and app-provided custom-field types
- Confluence custom content beyond an empty collection, and space permissions
- Rovo search (
searchAtlassian/fetchAtlassian), Teamwork Graph, Compass, Bitbucket and Jira Service Management MCP tools
Known differences and test guidance
| Scenario | Difference from Jira and Confluence | In your tests |
|---|---|---|
Text search (~, CQL text) | Whole-word matching with simple plural and -ing folding, phrases and wildcards; no relevance ranking, synonyms or language analysis. /search/approximate-count returns the exact count. | Assert that an issue or page is found, not on its order or on fuzzy matches. |
| Authentication | Open mode accepts any credential; strict mode only checks the token came from the bundled IdP. Authorization is still evaluated. | Test what a credential may do, not whether a bad credential is rejected by Atlassian identity. |
| User identifiers | Users carry the Cloud accountId and also the Server/Data Center name and key, accepted wherever a user is named. | Do not assert that name or key are absent; use accountId for Cloud behaviour. |
| Dates | Generated activity is shifted forward so relative-date queries match. | Assert with relative JQL (created >= -7d), not on absolute dates. |
| Rate limits | Nothing throttles until a fault is injected. | Inject throttle or fail_next to test backoff. |
| Page size | maxResults clamps to 100 on Jira and limit to 200 on Confluence v1, as Atlassian does, rather than answering 400. | Follow pagination; do not assume a large page size is honoured. |
Fault injection
| Key | What the client sees |
|---|---|
throttle | 429 with Retry-After, X-RateLimit-* headers and RateLimit-Reason jira-burst-based, in the Jira or Confluence envelope |
fail_next | The next N calls fail as throttle does, then clear |
quota_limit | 429 with RateLimit-Reason jira-quota-global-based |
error_rate | 500 in the product's error envelope for the given fraction of calls |
latency_ms | Fixed added latency on every data-plane request |
Applies to every system
- The hosted data plane is read-only: a write is refused with
403 writes_disabled. A SOQL, GraphQL or searchPOSTis a read and is answered. - Faults are injected through
POST /_admin/faultson a simulator you run yourself;POST /_admin/faults/resetclears them. - Rate limits do not happen on their own unless a page says so. Use fault injection to exercise a client's backoff.
- Distributions come from aggregated metadata sketches of data Eon backs up; no customer records; all Era data is simulated.