Jira API sandbox

Jira

Point your Jira client (e.g. jira.js Version3Client, python jira) at https://jira.sandboxapis.dev as the host. Paths mirror {site}.atlassian.net: rest/api/3 + rest/agile/1.0; the removed old /search family serves 410 like live Jira, use /rest/api/3/search/jql.

REST · 330 endpointsMCP-ready

Coverage badge

Deep326/328 · 99%

The share of read rows with a final answer — served and verified, a deviation, retired upstream, or a reviewed empty/refusal. Computed in the coverage manifest, copied here.

Live host
jira.sandboxapis.dev
Pinned hosts
10 — generation 1, 2, 3, 5, 6, 8, 9, 10, 11, 12
Serving since
2026-08-04
Lifecycle
Live

Served & verified

246 / 75%

Answering with real universe data, each response checked against Jira's published spec by the conformance suite on this build.

The full read API

328

Every read surface Jira publishes, deferred long tail included, minus the rows excluded by policy (2). Writes are out of scope: this universe is read-only.

Not served yet

82

Each returns an explicit, provider-shaped coverage error naming the gap — never invented data.

01 / The swap

Point your client at a different base URL.

No SDK of ours, no shim, no recorded fixtures. The same client library you already use, one environment variable different.

shell
curl "https://jira.sandboxapis.dev/rest/api/3/myself"

Verified drop-in clients

No client library is version-pinned against Jira yet, so this page claims none. What is asserted is the wire: every response above is validated against Jira's own published spec by the conformance suite. Client pins live in coverage/client-pins.yaml and are added as each SDK joins the suite.

02 / Coverage by family

Every read surface, grouped the way Jira groups it.

All 330 rows the coverage manifest carries for Jira, deferred long tail included and nothing capped. Open a family, or filter by path to find the exact endpoint your client calls.

Status — what a conformance test found

served & verified
answers with real universe data, and this build checked that response against the vendor's spec.
deviation
served and faithful to the real provider, but failing the vendored spec — usually a bug in the spec.
retired
the vendor removed the endpoint; snapshots pinned before that date still serve it.
planned / deferred
not served yet — an explicit coverage error naming the gap, never invented data.
excluded
out of the claim by policy (writes, and surfaces we refuse); not in any denominator on this page.

Mode — what kind of answer a row gets

derive
the response is computed from artifact rows that already exist
generate
canon does not carry this yet; the generator will produce it, then derive
empty
the true answer for this universe is an empty collection — reason + reviewed date required
refuse
mirror the provider's OWN refusal (e.g. its 403 for a non-admin token) — reason + reviewed date required
read-only
a write named in the manifest because clients probe it; the read-only 403 IS its final response, and it never joins the badge denominator
scratch
a write this replica ACCEPTS, into a per-key 24-hour overlay, answering with the provider's own success shape - reason + reviewed date required. The compiled artifact is unchanged and no other caller ever sees the row; a caller WITHOUT a scratch-enabled key gets the read-only refusal on the identical path. Like read-only it never joins the badge denominator (founder ruling 5, 2026-09-17: the published figure has meant READ operations served since A0.1), and unlike read-only it ANSWERS, so the generation report counts it in its own `scratch` column rather than in (excluded). Scratch never creates a pull request, a branch, a commit or a diff - those are canon structure the overlay cannot invent

A row with no mode shown has not been judged yet. Modes are the manifest's own words, from coverage/MODES.yaml; every empty and refuse carries a written reason and a review date before it counts as final.

Badge — where Deep starts

Full
every published read row has a final answer
Deep
60% up to 100%
Partial
25% up to 60%
Preview
under 25%

REST + GraphQL + git rows that are not `excluded`. Write operations are NOT rows (DECISIONS 2026-09-01 decision 9): they are counted in meta.write_operations and never enter this ratio.

330 read surfaces in 57 families

boards25 of 27 served & verified
GET
/rest/agile/1.0/board
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/backlog
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/configuration

SERVED 2026-09-14 (hello-20 wave W-jira): canon.BoardColumn and canon.BoardField landed with features.boards (decisions/2026-09-14-0233-hello-20-boards.md). THERE IS NO board TABLE - a board on this host is already a canonical TEAM (renderer-jira/src/agile.ts mints one per team) and what hello-20 adds is the LAYOUT. A board's columns are the workflow states that team's issues actually passed through, in workflow order, so the four teams' boards genuinely differ from one another. NO WIP LIMIT ANYWHERE: a peak is an observation and a limit is a policy, nobody in this universe ever set one, so canon has no wipLimit field at all, no column carries a min or a max and constraintType is "none". Gated on features.boards (hello-20+) - the BOARD keeps answering on every registered pin and only its configuration takes the gap

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/epic
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/epic/{epicId}/issue
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/epic/none/issue
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/features

SERVED 2026-09-14 (hello-20 wave W-jira): canon.BoardColumn and canon.BoardField landed with features.boards (decisions/2026-09-14-0233-hello-20-boards.md). THERE IS NO board TABLE - a board on this host is already a canonical TEAM (renderer-jira/src/agile.ts mints one per team) and what hello-20 adds is the LAYOUT. A board's columns are the workflow states that team's issues actually passed through, in workflow order, so the four teams' boards genuinely differ from one another. NO WIP LIMIT ANYWHERE: a peak is an observation and a limit is a policy, nobody in this universe ever set one, so canon has no wipLimit field at all, no column carries a min or a max and constraintType is "none". Gated on features.boards (hello-20+) - the BOARD keeps answering on every registered pin and only its configuration takes the gap. A board FEATURE's state is derived from whether this host actually serves the surface behind it - the list is the vendor's own enum and only the state is a judgment, made against a route rather than a preference, and the Jira conformance suite fetches every ENABLED feature's route and fails if one does not answer. Every feature is toggleLocked, because this universe is read-only (invariant #3) and a switch the next request refuses is worse than no switch

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/issue
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/project
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/project/full

the team table the renderer already renders as projects

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/quickfilter

no board in this site has a quick filter - a quick filter is a named JQL clause somebody added to a board, canon carries no per-board clause list and this universe records no such act; Jira's own answer for a board with none is an empty page bean (total 0, values []) at 200. RULED by the founder 2026-09-12; RE-WORDED 2026-09-12 (hello-18 wave W-b, AUTONOMOUS RULING, seed brief F2) and RE-WORDED A SECOND TIME 2026-09-14 (hello-20 wave W-jira), the mode unmoved both times. The first re-word moved the sentence off "this universe accepts no writes", which hello-18's savedFilters domain had made false. The second removes the clause it moved ONTO - "a quick filter is part of a board's CONFIGURATION, and canon models none of it" - because hello-20's boards domain lands the COLUMNS half of exactly that list (decisions/2026-09-14-0233): /rest/agile/1.0/board/{boardId}/configuration now publishes a real column layout and a real estimation field, so "canon models none of a board's configuration" is no longer true. The narrower fact is, and it is all this row ever needed: NO QUICK FILTER EXISTS. Trap 30's exact case - a ruling's supporting clause falsified by an unrelated domain landing

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/reports

RULED 2026-09-14 (hello-20 wave W-jira, AUTONOMOUS): this replica publishes no board report. Jira's board reports are a fixed vendor catalogue of CHART DEFINITIONS - burndown, sprint report, velocity, cumulative flow - rather than facts about this organization, and the vendored description declares each report item as an object with additionalProperties false and NO properties at all, so the only answer this document permits beside the empty list is a list of anonymous empty objects. The board's REPORTS feature is DISABLED at /rest/agile/1.0/board/{boardId}/features for exactly this reason, so the two routes cannot disagree. The data those charts are drawn from IS served: the columns at /rest/agile/1.0/board/{boardId}/configuration, the sprints at /rest/agile/1.0/board/{boardId}/sprint and every issue's state history at /rest/api/3/issue/{issueIdOrKey}/changelog

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/sprint
served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/sprint/{sprintId}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/version

canon releases and milestones, projected onto the project as Jira versions

served & verified
Core
GET
/rest/agile/1.0/board/filter/{filterId}

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. A board in this site IS defined by its filter — the savedFilters pass mints one board filter per team that tracks work — so this route answers with the one board whose filter the caller named, narrowed off renderBoard so the two routes cannot disagree about its name. A filter no board is built on (the personal and organization-wide ones) answers Jira's empty page bean: a true statement about a real filter rather than an absence

served & verified
Core
GET
/rest/software/1.0/board/{boardId}/backlog

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/software/1.0/board/{boardId}/backlog/approximate-count
served & verified
Core
GET
/rest/software/1.0/board/{boardId}/epic/{epicId}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/software/1.0/board/{boardId}/epic/none/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/software/1.0/board/{boardId}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/software/1.0/board/{boardId}/issue/approximate-count
served & verified
Core
GET
/rest/software/1.0/board/{boardId}/sprint/{sprintId}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/agile/1.0/board/{boardId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

planned
Core
GET
/rest/agile/1.0/board/{boardId}/quickfilter/{quickFilterId}

refuse — no board in this site has a quick filter - a quick filter is a named JQL clause somebody added to a board and canon carries no per-board clause list, so no quickFilterId resolves; Jira's own answer is its 404 for the quick filter. RULED by the founder 2026-09-12; RE-WORDED 2026-09-12 (hello-18 wave W-b, AUTONOMOUS RULING) and RE-WORDED A SECOND TIME 2026-09-14 (hello-20 wave W-jira), the mode unmoved both times, for the reason the list half's own entry gives: hello-20's boards domain lands the columns half of the board CONFIGURATION this ruling used to rest on, and the narrower fact - no quick filter exists - is the one that survives it

planned
Core
metadata20 of 20 served & verified
GET
/rest/api/3/issuetype
served & verified
Core
GET
/rest/api/3/issuetype/{id}
served & verified
Core
GET
/rest/api/3/issuetype/{id}/alternatives

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/issuetype/project

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/priority
served & verified
Core
GET
/rest/api/3/priority/{id}
served & verified
Core
GET
/rest/api/3/priority/search

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/resolution
served & verified
Core
GET
/rest/api/3/resolution/{id}
served & verified
Core
GET
/rest/api/3/resolution/search

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/status
served & verified
Core
GET
/rest/api/3/status/{idOrName}
served & verified
Core
GET
/rest/api/3/statuscategory
served & verified
Core
GET
/rest/api/3/statuscategory/{idOrKey}
served & verified
Core
GET
/rest/api/3/statuses

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/statuses/{statusId}/project/{projectId}/issueTypeUsages

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/statuses/{statusId}/projectUsages

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/statuses/{statusId}/workflowUsages

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/statuses/byNames

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/statuses/search

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
field-admin17 of 18 served & verified
GET
/rest/api/3/config/fieldschemes

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/config/fieldschemes/{id}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/config/fieldschemes/{id}/fields

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/config/fieldschemes/{id}/fields/{fieldId}/parameters

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/config/fieldschemes/{id}/projects

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/config/fieldschemes/projects

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context

the two custom fields (customfield_10016 story points, customfield_10020 sprint) and their single global context

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context/{contextId}/option

neither custom field this replica serves is an option field — customfield_10020 is an array of Greenhopper sprint blobs and customfield_10016 is a number — so their one context has no select-list option to list; the registry is fixed at compile time and this universe accepts no writes. RULED by the founder 2026-09-09

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context/defaultValue

neither custom field this replica serves carries a default value — customfield_10020 is an array of Greenhopper sprint blobs and customfield_10016 is a number, the registry is fixed at compile time and this universe accepts no writes — and Jira's own description says so for this route: 'If no defaults are set for a context, nothing is returned'. RULED by the founder 2026-09-09

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context/defaultValues

the same two fields carry no default grouped by context either, so the page that groups them has nothing to group; the registry is fixed at compile time and this universe accepts no writes. RULED by the founder 2026-09-09

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context/issuetypemapping

the two custom fields (customfield_10016 story points, customfield_10020 sprint) and their single global context

served & verified
Long tail
GET
/rest/api/3/field/{fieldId}/context/projectmapping

the two custom fields (customfield_10016 story points, customfield_10020 sprint) and their single global context

served & verified
Long tail
GET
/rest/api/3/fieldconfiguration

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. THE VENDORED $ref IS ATLASSIAN'S OWN BUG AND THIS ROW SERVES THE READ SHAPE INSTEAD: the operation declares PageBeanFieldConfigurationDetails, whose element component has two properties and marks BOTH writeOnly true (it is the body a CREATE takes) and carries no id, while the operation's own 200 EXAMPLE shows {id, name, description, isDefault} - which is FieldConfiguration. Serving the write DTO would publish a configuration a caller cannot then address at /fieldconfiguration/{id}/fields, which is invariant #5 broken by transcription, so conformance validates the values against FieldConfiguration and the envelope by hand

served & verified
Long tail
GET
/rest/api/3/fieldconfiguration/{id}/fields

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/fieldconfigurationscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/fieldconfigurationscheme/mapping

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/fieldconfigurationscheme/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/customFieldOption/{id}

refuse — neither custom field this universe defines (customfield_10016, customfield_10020) is a select field, so no option id can ever resolve — Jira's own 404 is the only possible answer

deferred
Long tail
workflow-admin12 of 18 served & verified
GET
/rest/api/3/workflow/{workflowId}/project/{projectId}/issueTypeUsages

the six-state workflow the renderer already serves, plus the issue_transition canon that walks it

served & verified
Long tail
GET
/rest/api/3/workflow/{workflowId}/projectUsages

the six-state workflow the renderer already serves, plus the issue_transition canon that walks it

served & verified
Long tail
GET
/rest/api/3/workflow/{workflowId}/workflowSchemes

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflow/search

the six-state workflow the renderer already serves, plus the issue_transition canon that walks it

served & verified
Long tail
GET
/rest/api/3/workflows/defaultEditor

SERVED 2026-09-14 (hello-20 wave W-jira) RATHER THAN RULED, and the ruling's own fact is the answer: nobody in olympus-labs changed the workflow editor (batch F1, ruling group R8), so it is the one a Jira Cloud site is created with - NEW, one of the two members the response's own enum has. No UserPreference entity is needed for a preference nobody set

served & verified
Long tail
GET
/rest/api/3/workflows/search

the six-state workflow the renderer already serves, plus the issue_transition canon that walks it

served & verified
Long tail
GET
/rest/api/3/workflowscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflowscheme/{id}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflowscheme/{id}/default

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflowscheme/{id}/issuetype/{issueType}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflowscheme/{id}/workflow

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflowscheme/{workflowSchemeId}/projectUsages

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/workflow/rule/config

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/workflows/capabilities

generate — Atlassian's built-in rule catalogue: the static-vendor class ruled 2026-09-09 (#408) — a canon constant + compile-time table on a later generation

deferred
Long tail
GET
/rest/api/3/workflowscheme/{id}/draft

refuse — RULED 2026-09-14 (hello-20 wave W-jira, AUTONOMOUS - the direct corollary of founder ruling F5 rather than a new claim about this universe): no workflow scheme in this site has a draft. A draft workflow scheme exists only as the copy Jira makes while somebody EDITS an active scheme, and olympus-labs uses Jira's defaults and has edited nothing; three of the four draft operations declare that exact condition in as many words ("the original active workflow scheme does not have a draft"). The scheme ITSELF is served at /rest/api/3/workflowscheme/{id} by the same wave, and this row is parent-guarded on it, so a ruling about a draft is only ever given about a scheme this site really has

deferred
Long tail
GET
/rest/api/3/workflowscheme/{id}/draft/default

refuse — RULED 2026-09-14 (hello-20 wave W-jira, AUTONOMOUS - the direct corollary of founder ruling F5 rather than a new claim about this universe): no workflow scheme in this site has a draft. A draft workflow scheme exists only as the copy Jira makes while somebody EDITS an active scheme, and olympus-labs uses Jira's defaults and has edited nothing; three of the four draft operations declare that exact condition in as many words ("the original active workflow scheme does not have a draft"). The scheme ITSELF is served at /rest/api/3/workflowscheme/{id} by the same wave, and this row is parent-guarded on it, so a ruling about a draft is only ever given about a scheme this site really has

deferred
Long tail
GET
/rest/api/3/workflowscheme/{id}/draft/issuetype/{issueType}

refuse — RULED 2026-09-14 (hello-20 wave W-jira, AUTONOMOUS - the direct corollary of founder ruling F5 rather than a new claim about this universe): no workflow scheme in this site has a draft. A draft workflow scheme exists only as the copy Jira makes while somebody EDITS an active scheme, and olympus-labs uses Jira's defaults and has edited nothing; three of the four draft operations declare that exact condition in as many words ("the original active workflow scheme does not have a draft"). The scheme ITSELF is served at /rest/api/3/workflowscheme/{id} by the same wave, and this row is parent-guarded on it, so a ruling about a draft is only ever given about a scheme this site really has

deferred
Long tail
GET
/rest/api/3/workflowscheme/{id}/draft/workflow

refuse — RULED 2026-09-14 (hello-20 wave W-jira, AUTONOMOUS - the direct corollary of founder ruling F5 rather than a new claim about this universe): no workflow scheme in this site has a draft. A draft workflow scheme exists only as the copy Jira makes while somebody EDITS an active scheme, and olympus-labs uses Jira's defaults and has edited nothing; three of the four draft operations declare that exact condition in as many words ("the original active workflow scheme does not have a draft"). The scheme ITSELF is served at /rest/api/3/workflowscheme/{id} by the same wave, and this row is parent-guarded on it, so a ruling about a draft is only ever given about a scheme this site really has

deferred
Long tail
users17 of 17 served & verified
GET
/rest/api/3/user
served & verified
Core
GET
/rest/api/3/user/assignable/multiProjectSearch

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/assignable/search

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/bulk

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/bulk/migration

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/columns

STALE REASON ("new canon entity UserPreference"): the 10-row `jira.navigator-columns` catalog ships from hello-16 on and app.ts already serves it at /rest/api/3/settings/columns. Nobody in this site has set columns of their own, and real Jira answers this route with the SITE DEFAULT for a user who has configured none — so the list is the true answer rather than an absence, and conformance asserts the two routes agree row for row

served & verified
Core
GET
/rest/api/3/user/email

STALE REASON ("new canon entity PersonCredential"): `person_credential` ships from hello-16 on and carries 22 `kind="email"` rows over 17 people with an `is_primary` flag; the vendored UnrestrictedUserEmail shape is {accountId,email} and both fields map onto person.id and the primary address — the same column GitHub's `shapeEmail` reads, so the two hosts cannot name different addresses for one canonical person

served & verified
Core
GET
/rest/api/3/user/email/bulk

STALE REASON ("new canon entity PersonCredential"): `person_credential` ships from hello-16 on and carries 22 `kind="email"` rows over 17 people. A DELIBERATE DIVERGENCE FROM THE VENDORED COMPONENT, recorded in renderer-jira/src/app.ts: the document declares the same single `UnrestrictedUserEmail` object for the bulk operation as for the single one while typing its own `accountId` parameter as an ARRAY, so the body served is {"emails": [...]}, which real Jira Cloud returns and which validates against the declared component (additionalProperties: true, no required member)

served & verified
Core
GET
/rest/api/3/user/groups
served & verified
Core
GET
/rest/api/3/user/permission/search

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/picker

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/search

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/search/query

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/search/query/key

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/user/viewissue/search

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/users
served & verified
Core
GET
/rest/api/3/users/search

the person table — the same users /rest/api/3/user already renders

served & verified
Core
devinfo6 of 14 served & verified
GET
/rest/builds/0.1/pipelines/{pipelineId}/builds/{buildNumber}

the workflow_run / job / deployment canon

served & verified
Long tail
GET
/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}

the workflow_run / job / deployment canon

served & verified
Long tail
GET
/rest/deployments/0.1/pipelines/{pipelineId}/environments/{environmentId}/deployments/{deploymentSequenceNumber}/gating-status

the deployment's own terminal state in canon — a deployment that ran was allowed through

served & verified
Long tail
GET
/rest/devinfo/0.10/existsByProperties

the git canon — repositories, branches, commits and pull requests

served & verified
Long tail
GET
/rest/devinfo/0.10/repository/{repositoryId}

the git canon — repositories, branches, commits and pull requests

served & verified
Long tail
GET
/rest/operations/1.0/incidents/{incidentId}

THE RENDERER JUDGMENT THE 2026-09-09 REASON LEFT OPEN IS TAKEN: Jira Ops' `IncidentData` projects onto canon.Incident with nothing invented. All ten required members have a source — schemaVersion is the document's own enum, id/summary/description/createdDate come off the row, affectedComponents is the one component it broke, status is derived from resolved_epoch, updateSequenceNumber is lastUpdated in millis, and url points at pd.sandboxapis.dev/incidents/{id}, the PagerDuty resource that serves the same row. `associations` names the tracker issue this host itself answers, which is the four-hop cross-check. Gated on the incident domain (hello-12+)

served & verified
Long tail
GET
/rest/devopscomponents/1.0/devopscomponents/{componentId}

generate — tier and componentType now have a source (canon Service.tier maps to Tier 1..3, and every canon service is componentType Service), but avatarUrl and description still have none: this Jira host serves a project component with only its name and assignee type, never a description, and serves avatars only for users and projects, never for a service, so answering would invent both; re-checked 2026-10-27

deferred
Long tail
GET
/rest/featureflags/0.1/flag/{featureFlagId}

refuse — no feature flag is raised in this Jira site - a Jira feature flag is pushed in by a feature-flag provider's app through the feature-flags store, olympus-labs installs no Connect or Forge app and this universe accepts no writes; no flag id resolves and the store's own answer is the 404 it declares - "No data found for the given Feature Flag ID". RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). GitLab's own feature flags are a DIFFERENT fact on a different host (hello-20's glDelivery domain) and say nothing about what an Atlassian app pushed here. The envelope is this family's own bare array of {message}

deferred
Long tail
GET
/rest/operations/1.0/linkedWorkspaces

refuse — no DevOps or Security workspace is linked to this site - a linked workspace exists only because an Atlassian app connected a provider's workspace to the site, olympus-labs installs no Connect or Forge app (the ruled 2026-09-01 class this host already refuses fourteen rows on) and this universe accepts no writes. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8) AS AN HONEST EMPTY, AND SERVED AS A REFUSAL INSTEAD, on the vendored document rather than on a second opinion: both stores declare minItems 1 on workspaceIds, so an empty list fails the operation's own 200 schema and "there are none" is not a sentence either API can say. The 404 both declare - "No data found for the given workspace ID" - is the answer that is left, and it is the same one their by-id twin gives, in the same bare-array-of-{message} envelope renderer-jira/src/ops.ts has sent on /rest/operations/1.0/incidents/{incidentId} since wave W4. The fact the founder ruled did not move; only the shape it can be said in did

deferred
Long tail
GET
/rest/operations/1.0/post-incident-reviews/{reviewId}

refuse — olympus-labs has written no post-incident review - canon records the INCIDENT (features.incidents, served at /rest/operations/1.0/incidents/{incidentId} and on pd.sandboxapis.dev) and not the retrospective somebody writes afterwards, and a review exists only because a person sat down and wrote one; no review id resolves and the store's own answer is the 404 it declares - "No data found for the given Review ID". RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). The envelope is this family's own bare array of {message}, the shape ops.ts already sends one path segment over

deferred
Long tail
GET
/rest/remotelinks/1.0/remotelink/{remoteLinkId}

refuse — no issue and no version in olympus-labs carries a remote link - a remote link is an application link to an object in another Atlassian product and this site has no linked Confluence, no linked Bitbucket and no app, so no link id resolves and Jira's own 404 is the whole answer. RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/security/1.0/linkedWorkspaces

refuse — no DevOps or Security workspace is linked to this site - a linked workspace exists only because an Atlassian app connected a provider's workspace to the site, olympus-labs installs no Connect or Forge app (the ruled 2026-09-01 class this host already refuses fourteen rows on) and this universe accepts no writes. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8) AS AN HONEST EMPTY, AND SERVED AS A REFUSAL INSTEAD, on the vendored document rather than on a second opinion: both stores declare minItems 1 on workspaceIds, so an empty list fails the operation's own 200 schema and "there are none" is not a sentence either API can say. The 404 both declare - "No data found for the given workspace ID" - is the answer that is left, and it is the same one their by-id twin gives, in the same bare-array-of-{message} envelope renderer-jira/src/ops.ts has sent on /rest/operations/1.0/incidents/{incidentId} since wave W4. The fact the founder ruled did not move; only the shape it can be said in did

deferred
Long tail
GET
/rest/security/1.0/linkedWorkspaces/{workspaceId}

refuse — no DevOps or Security workspace is linked to this site (see /rest/security/1.0/linkedWorkspaces, which answers the honest empty), so no workspace id resolves and the store's own answer is the 404 it declares - "No data found for the given workspace ID". RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). THE ENVELOPE IS THIS FAMILY'S OWN, a bare array of {message} rather than the platform's {errorMessages, errors}: renderer-jira/src/ops.ts has sent exactly that shape on /rest/operations/1.0/incidents/{incidentId} since wave W4

deferred
Long tail
GET
/rest/security/1.0/vulnerability/{vulnerabilityId}

refuse — no security product is enabled on olympus-labs and no vulnerability exists - the founder's ruling of 2026-09-12 on four tier-1 rows, applied to the family on 2026-09-14 (batch F1, ruling group R1). It cannot be built either: renderer-github/src/render-sbom.ts parses the repository's REAL manifests, so the SBOM this fleet publishes names express@4.18.2, github.com/google/uuid v1.3.0 and httpx==0.24.1, and a generated finding over them would be a false claim about a real upstream project. No vulnerability id resolves and the store's own answer is the 404 it declares - "No data found for the given Vulnerability ID". The envelope is this family's own bare array of {message}

deferred
Long tail
issues10 of 13 served & verified
GET
/rest/api/3/events

reader.refCatalog("jira.events") in id order. licence: FACTUAL — the response is {id, name} event-type names ("Issue Created", "Issue Updated" in the vendored description's example), an enumeration of Jira's own notification triggers. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}
served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}/changelog
served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}/comment
served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}/comment/{id}
served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}/editmeta

the field registry in packages/renderer-jira/src/metadata.ts crossed with the issue-type vocabulary

served & verified
Core
GET
/rest/api/3/issue/{issueIdOrKey}/transitions

issue_transition rows plus the six-state workflow vocabulary

served & verified
Core
GET
/rest/api/3/issue/createmeta

the field registry in packages/renderer-jira/src/metadata.ts crossed with the issue-type vocabulary

served & verified
Core
GET
/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes

the field registry in packages/renderer-jira/src/metadata.ts crossed with the issue-type vocabulary

served & verified
Core
GET
/rest/api/3/issue/createmeta/{projectIdOrKey}/issuetypes/{issueTypeId}

the field registry in packages/renderer-jira/src/metadata.ts crossed with the issue-type vocabulary

served & verified
Core
GET
/rest/api/3/issue/limit/report

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

planned
Core
POST
/rest/api/3/issue/{issueIdOrKey}/comment

scratch — ACCEPTED into the per-key 24-hour overlay for a scratch-enabled key: 201 + Jira's own `Comment` object, validated against the vendored platform-v3 description by packages/conformance/src/jira/scratch.test.ts, and the SAME object answers the `GET …/comment/{id}` that follows it because the write renders through the read path. The comment is MERGED into the thread (`GET …/comment`, before the startAt/maxResults slice, so `total` is right), into the inline `fields.comment`, and into the issue's `updated`. The body may be an ADF document (v3) or a plain string (the v2 dialect); it is stored as its TEXT - every text node kept, formatting not modelled - and renders back through the same ADF shaper the artifact's comments use. The AUTHOR is an existing canonical persona chosen deterministically per (key, project) from the project's members, so `author.accountId` resolves at `/rest/api/3/user?accountId=` like every other user object; the response says who you were rendered as in `X-SandboxAPIs-Scratch-As`. The id is minted ABOVE every artifact id (100000 + seq), so it can never collide with a real one. `visibility` and `properties` are REFUSED with a 400 naming the field rather than silently dropped. An empty body is Jira's own 400 (`Comment body can not be empty!`); over 32,767 characters is Jira's own 400 naming the ceiling; past the key's row cap or the per-project cap is Jira's documented 413. `/search/jql`, `/search/approximate-count` and the changelog do NOT merge in this phase and say so with `X-SandboxAPIs-Scratch: unmerged`. Without a scratch-enabled key this path is the read-only 403, byte for byte.

excluded
Core
POST
/rest/api/3/issue/{issueIdOrKey}/transitions

scratch — ACCEPTED into the per-key 24-hour overlay for a scratch-enabled key: Jira's bare 204, after which the issue's `status` (and its `statusCategory`), `resolutiondate` and `updated` read from the overlay's latest transition for this key, and `GET …/transitions` offers the moves out of the NEW state - so a client walking the workflow continues from its own last move. The transition must be one the six-state workflow allows from the state this key sees (`issueTransitions`, the same list the GET serves); any other id is Jira's own 400 (`Transition id 'X' is not valid for this issue.`), and a body without `transition.id` is Jira's own 400 (`Missing 'transition' identifier`). `fields` and `update` are REFUSED with Jira's own 400 (`Field 'x' cannot be set. It is not on the appropriate screen, or unknown.`) because every transition here carries no screen (`hasScreen: false`) - a 204 that silently ignored a `resolution` would hand back a transition the caller believes set one (invariant #4). The merged state reaches every surface that reads it: the issue bean, the agile and software issue listings, an epic's `done` flag, a version's unresolved count and the bulk-transition offer. The changelog (inline, dedicated and bulk) and JQL do NOT merge in this phase and say so with `X-SandboxAPIs-Scratch: unmerged`. Past the key's row cap or the per-project cap is Jira's documented 413. Without a scratch-enabled key this path is the read-only 403, byte for byte.

excluded
Core
project-admin8 of 12 served & verified
GET
/rest/api/3/project/type

reader.refCatalog("jira.project-types"); the four keys are the projectTypeKey enum the vendored description declares, so the {projectTypeKey} routes are total over this list. licence: FACTUAL, WITH ONE FIELD OMITTED — key, formattedKey and descriptionI18nKey are functional product identifiers and carry no authorship, but icon is a base64 Adobe-Illustrator SVG, which is Atlassian ARTWORK. ProjectType declares NO required properties in the vendored description, so a response without icon is a legal one and that is what this row will serve. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
GET
/rest/api/3/project/type/{projectTypeKey}

reader.refCatalog("jira.project-types") by key; a fifth spelling is Jira's own 404 rather than a coverage miss. licence: FACTUAL, WITH ONE FIELD OMITTED — key, formattedKey and descriptionI18nKey are functional product identifiers and carry no authorship, but icon is a base64 Adobe-Illustrator SVG, which is Atlassian ARTWORK. ProjectType declares NO required properties in the vendored description, so a response without icon is a legal one and that is what this row will serve. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
GET
/rest/api/3/project/type/{projectTypeKey}/accessible

reader.refCatalog("jira.project-types") by key, the accessible twin of the by-key row and the same object. licence: FACTUAL, WITH ONE FIELD OMITTED — key, formattedKey and descriptionI18nKey are functional product identifiers and carry no authorship, but icon is a base64 Adobe-Illustrator SVG, which is Atlassian ARTWORK. ProjectType declares NO required properties in the vendored description, so a response without icon is a legal one and that is what this row will serve. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
GET
/rest/api/3/project/type/accessible

reader.refCatalog("jira.project-types") - the same four, because this site models neither a licence nor a create permission to narrow them by, and deciding at render time that a type is unavailable would be a fact nothing in canon states. licence: FACTUAL, WITH ONE FIELD OMITTED — key, formattedKey and descriptionI18nKey are functional product identifiers and carry no authorship, but icon is a base64 Adobe-Illustrator SVG, which is Atlassian ARTWORK. ProjectType declares NO required properties in the vendored description, so a response without icon is a legal one and that is what this row will serve. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
GET
/rest/api/3/projectCategory

no project category is defined in this Jira site - olympus-labs runs one project and a category is an administrator grouping over many; Jira creates none with a site and its own answer for a site with none is [] at 200. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/projectvalidate/key

a pure function over the project keys canon already carries

served & verified
Long tail
GET
/rest/api/3/projectvalidate/validProjectKey

a pure function over the project keys canon already carries

served & verified
Long tail
GET
/rest/api/3/projectvalidate/validProjectName

a pure function over the project keys canon already carries

served & verified
Long tail
GET
/rest/api/3/project-template/live-template

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/classification-config

refuse — data classification is an Atlassian Guard / Premium feature this site does not have, and Jira answers 403 to a token without the classification scope

deferred
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/classification-level/default

refuse — data classification is an Atlassian Guard / Premium feature this site does not have, and Jira answers 403 to a token without the classification scope

deferred
Long tail
GET
/rest/api/3/projectCategory/{id}

refuse — no project category is defined in this Jira site - olympus-labs runs one project and a category is an administrator grouping over many, so no category id resolves and Jira's own 404 for a category that is not found is the whole answer. RULED by the founder 2026-09-12

deferred
Long tail
properties5 of 12 served & verified
GET
/rest/api/3/comment/{commentId}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issue/{issueIdOrKey}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuetype/{issueTypeId}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/user/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/comment/{commentId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties

refuse — no entity in this Jira site carries an app property, and NEITHER PARENT THESE FOUR HANG UNDER EXISTS AT ALL: nobody has built a dashboard to hold a dashboard ITEM, and nobody in olympus-labs logs time, so no worklog has ever been created. That is why both halves of both pairs refuse rather than splitting the way wave W4's seven property pairs did: the split rule (decisions/2026-09-12-0348) requires the parent to RESOLVE, an empty key list here would assert that a dashboard item or a worklog exists and holds nothing, and Jira's own answer for the missing parent is its 404. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8)

deferred
Long tail
GET
/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property, and NEITHER PARENT THESE FOUR HANG UNDER EXISTS AT ALL: nobody has built a dashboard to hold a dashboard ITEM, and nobody in olympus-labs logs time, so no worklog has ever been created. That is why both halves of both pairs refuse rather than splitting the way wave W4's seven property pairs did: the split rule (decisions/2026-09-12-0348) requires the parent to RESOLVE, an empty key list here would assert that a dashboard item or a worklog exists and holds nothing, and Jira's own answer for the missing parent is its 404. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8)

deferred
Long tail
GET
/rest/api/3/issuetype/{issueTypeId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/user/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

deferred
Long tail
apps0 of 11 served & verified
GET
/rest/api/3/app/field/{fieldIdOrKey}/context/configuration

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/field/{fieldKey}/option

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/field/{fieldKey}/option/{optionId}

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/field/{fieldKey}/option/suggestions/edit

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/field/{fieldKey}/option/suggestions/search

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/jql/function/computation

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/api/3/uiModifications

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/atlassian-connect/1/addons/{addonKey}/properties

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/atlassian-connect/1/addons/{addonKey}/properties/{propertyKey}

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/forge/1/app/properties

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
GET
/rest/forge/1/app/properties/{propertyKey}

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
screen-admin11 of 11 served & verified
GET
/rest/api/3/field/{fieldId}/screens

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/issuetypescreenscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/issuetypescreenscheme/{issueTypeScreenSchemeId}/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/issuetypescreenscheme/mapping

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/issuetypescreenscheme/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/screens

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/screens/{screenId}/availableFields

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. THE ONE ROUTE IN THE FAMILY THAT IS A SUBTRACTION, and it is what says the screen is a fold rather than a copy of the field registry: the fields that can be ADDED are the registry minus the ones the screen carries, which is the five this host COMPUTES (status, created, updated, resolutiondate, project) - a create screen offering to set an issue's created date is not a thing Jira has ever shown

served & verified
Long tail
GET
/rest/api/3/screens/{screenId}/tabs

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/screens/{screenId}/tabs/{tabId}/fields

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/screens/tabs

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. The operation declares an EXAMPLE and no schema, so the shape is read off the example - a page of {screenId, tabId, tabName} under the same startAt/maxResults/total/isLast envelope every other page here uses

served & verified
Long tail
GET
/rest/api/3/screenscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
versions-components11 of 11 served & verified
GET
/rest/api/3/component

the canon component rows the project's issues already reference

served & verified
Next
GET
/rest/api/3/component/{id}

the canon component rows the project's issues already reference

served & verified
Next
GET
/rest/api/3/component/{id}/relatedIssueCounts

the canon component rows the project's issues already reference

served & verified
Next
GET
/rest/api/3/project/{projectIdOrKey}/component

the canon component rows the project's issues already reference

served & verified
Next
GET
/rest/api/3/project/{projectIdOrKey}/components

the canon component rows the project's issues already reference

served & verified
Next
GET
/rest/api/3/project/{projectIdOrKey}/version

canon releases and milestones, projected onto the project as Jira versions

served & verified
Next
GET
/rest/api/3/project/{projectIdOrKey}/versions

canon releases and milestones, projected onto the project as Jira versions

served & verified
Next
GET
/rest/api/3/version/{id}

canon releases and milestones, projected onto the project as Jira versions

served & verified
Next
GET
/rest/api/3/version/{id}/relatedIssueCounts

canon releases and milestones, projected onto the project as Jira versions

served & verified
Next
GET
/rest/api/3/version/{id}/relatedwork

no issue and no version in olympus-labs carries a remote link - a remote link is an application link to an object in another Atlassian product and this site has no linked Confluence, no linked Bitbucket and no app; Jira's own answer for an issue with none is [] at 200. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/version/{id}/unresolvedIssueCount

canon releases and milestones, projected onto the project as Jira versions

served & verified
Next
filters7 of 8 served & verified
GET
/rest/api/3/filter/{id}

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. The filter object: id, name, owner, the baked jql verbatim, viewUrl, searchUrl, favourite, favouritedCount, sharePermissions from the share scope and Jira's empty FilterSubscriptionsList. description, approximateLastUsed, editPermissions and sharedUsers are OMITTED rather than invented — canon records none of the four and only name is required

served & verified
Next
GET
/rest/api/3/filter/{id}/permission

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. The same array Filter.sharePermissions carries, from saved_filter.share_scope: private is Jira's empty list, org is one loggedin permission (its own word for every logged-in user, where global would include anonymous access this site does not have), team is a project permission naming that team's project

served & verified
Next
GET
/rest/api/3/filter/{id}/permission/{permissionId}

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. The single read off that same list — the conformance entry discovers the id THROUGH the list route and asserts the object comes back identical, so the id the list hands out is the id this route accepts. A private filter has no permission, so every id 404s there, which is the operation's own declared answer

served & verified
Next
GET
/rest/api/3/filter/defaultShareScope

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. PRIVATE, and the artifact says so: every filter a person saved FOR THEMSELVES — kind = mine, the only kind the pass mints per person — carries share_scope = private, and the wider ones are wide because of what they ARE. The conformance entry asserts that link rather than the constant

served & verified
Next
GET
/rest/api/3/filter/favourite

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. The CALLER's stars: saved_filter.favourite records the owner's star (1 when the filter selects work in an active sprint), and Jira documents Filter.favourite as the calling user's, so this list is the filters this replica's viewer owns AND starred. Non-empty at both windows because that viewer owns the organization-wide filter

served & verified
Next
GET
/rest/api/3/filter/my

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. listSavedFilters("jira", caller) — the filters this replica's viewer OWNS, which is what the operation asks for; includeFavourites=true is honoured and adds the ones they starred, all of which they already own

served & verified
Next
GET
/rest/api/3/filter/search

SERVED 2026-09-12 (hello-18 wave W-b): canon.SavedFilter landed with features.savedFilters (decisions/2026-09-12-1139-hello-18-saved-filters.md) — a query whose CLAUSES are canon's and whose TEXT the compiler bakes per host, so saved_filter.query is already JQL on a `jira` row and WIQL on an `ado` one. The paged search over every filter in the site, with filterName, accountId, id and projectId answered from canon and the documented orderBy set. FilterDetails.favourite is FALSE on every row and that is the document's own reading — it is defined as "by any users, NOT including the filter owner", and the only star canon records is the owner's, which favouritedCount (defined as including the owner) carries instead

served & verified
Next
GET
/rest/api/3/filter/{id}/columns

refuse — no filter in this site carries a column configuration of its own - a filter's columns are set by its owner in the issue navigator, canon's saved_filter records a QUERY and not a column set, and this universe accepts no writes; Jira's own answer for a filter with none is the 404 this operation declares in as many words ("Returned if a column configuration is not set for the filter"). THE SIBLING ROUTE GOES THE OTHER WAY AND THE DOCUMENT IS WHY: /rest/api/3/user/columns is a derive row serving the SITE DEFAULT because real Jira falls back to it for a user who configured none, and this operation declares no such fallback. The default columns a filter's results are viewed with are still readable, at /rest/api/3/settings/columns and /rest/api/3/user/columns. RULED 2026-09-12 (hello-18 wave W-b, autonomous)

deferred
Next
security-admin5 of 8 served & verified
GET
/rest/api/3/issuesecurityschemes

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuesecurityschemes/level

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuesecurityschemes/level/member

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuesecurityschemes/project

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuesecurityschemes/search

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/issuesecurityschemes/{id}

refuse — no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; the LIST is an honest empty at 200, so this replica is plainly allowed to read schemes and an id over that empty collection can only be Jira's own 404. RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/issuesecurityschemes/{issueSecuritySchemeId}/members

refuse — no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; the LIST is an honest empty at 200, so this replica is plainly allowed to read schemes and an id over that empty collection can only be Jira's own 404. RULED by the founder 2026-09-12

deferred
Long tail
GET
/rest/api/3/securitylevel/{id}

refuse — no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; the LIST is an honest empty at 200, so this replica is plainly allowed to read schemes and an id over that empty collection can only be Jira's own 404. RULED by the founder 2026-09-12

deferred
Long tail
dashboards3 of 7 served & verified
GET
/rest/api/3/dashboard

nobody in olympus-labs has built a dashboard - a dashboard is a layout somebody arranged for themselves, this universe records no such act and accepts no writes, and the gadget catalogue a dashboard is built out of is Connect/Forge app modules on a site that installs none (the ruled 2026-09-01 class this host already refuses fourteen rows on); Jira's own answer for a site with none is an empty page at 200. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8) - the identical ruling sentry's dashboard rows took on 2026-09-12

served & verified
Long tail
GET
/rest/api/3/dashboard/gadgets

nobody in olympus-labs has built a dashboard - a dashboard is a layout somebody arranged for themselves, this universe records no such act and accepts no writes, and the gadget catalogue a dashboard is built out of is Connect/Forge app modules on a site that installs none (the ruled 2026-09-01 class this host already refuses fourteen rows on); Jira's own answer for a site with none is an empty page at 200. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8) - the identical ruling sentry's dashboard rows took on 2026-09-12

served & verified
Long tail
GET
/rest/api/3/dashboard/search

nobody in olympus-labs has built a dashboard - a dashboard is a layout somebody arranged for themselves, this universe records no such act and accepts no writes, and the gadget catalogue a dashboard is built out of is Connect/Forge app modules on a site that installs none (the ruled 2026-09-01 class this host already refuses fourteen rows on); Jira's own answer for a site with none is an empty page at 200. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8) - the identical ruling sentry's dashboard rows took on 2026-09-12

served & verified
Long tail
GET
/rest/api/3/dashboard/{dashboardId}/gadget

refuse — nobody in olympus-labs has built a dashboard - a dashboard is a layout somebody arranged for themselves and this universe records no such act, so no dashboard id resolves and Jira's own answer is the 404 these operations declare. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). The LIST half is the honest empty at /rest/api/3/dashboard

deferred
Long tail
GET
/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties

refuse — no entity in this Jira site carries an app property, and NEITHER PARENT THESE FOUR HANG UNDER EXISTS AT ALL: nobody has built a dashboard to hold a dashboard ITEM, and nobody in olympus-labs logs time, so no worklog has ever been created. That is why both halves of both pairs refuse rather than splitting the way wave W4's seven property pairs did: the split rule (decisions/2026-09-12-0348) requires the parent to RESOLVE, an empty key list here would assert that a dashboard item or a worklog exists and holds nothing, and Jira's own answer for the missing parent is its 404. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8)

deferred
Long tail
GET
/rest/api/3/dashboard/{dashboardId}/items/{itemId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property, and NEITHER PARENT THESE FOUR HANG UNDER EXISTS AT ALL: nobody has built a dashboard to hold a dashboard ITEM, and nobody in olympus-labs logs time, so no worklog has ever been created. That is why both halves of both pairs refuse rather than splitting the way wave W4's seven property pairs did: the split rule (decisions/2026-09-12-0348) requires the parent to RESOLVE, an empty key list here would assert that a dashboard item or a worklog exists and holds nothing, and Jira's own answer for the missing parent is its 404. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8)

deferred
Long tail
GET
/rest/api/3/dashboard/{id}

refuse — nobody in olympus-labs has built a dashboard - a dashboard is a layout somebody arranged for themselves and this universe records no such act, so no dashboard id resolves and Jira's own answer is the 404 these operations declare. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). The LIST half is the honest empty at /rest/api/3/dashboard

deferred
Long tail
permission-admin6 of 7 served & verified
GET
/rest/api/3/permissionscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/permissionscheme/{schemeId}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/permissionscheme/{schemeId}/permission

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/permissionscheme/{schemeId}/permission/{permissionId}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/project/{projectKeyOrId}/permissionscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/project/{projectKeyOrId}/securitylevel

no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; Jira creates no issue security scheme with a site and its own answer for a site with none is {"issueSecuritySchemes": []} at 200 (an empty page bean on the paged siblings). RULED by the founder 2026-09-12

served & verified
Long tail
GET
/rest/api/3/project/{projectKeyOrId}/issuesecuritylevelscheme

refuse — no issue security scheme exists in this Jira site - canon models no issue-level security and every issue in the one project is visible to every member; the LIST is an honest empty at 200, so this replica is plainly allowed to read schemes and an id over that empty collection can only be Jira's own 404. RULED by the founder 2026-09-12

deferred
Long tail
projects7 of 7 served & verified
GET
/rest/api/3/project
served & verified
Core
GET
/rest/api/3/project/{projectId}/hierarchy

the status/type/priority/resolution vocabulary the renderer already serves green

served & verified
Core
GET
/rest/api/3/project/{projectIdOrKey}
served & verified
Core
GET
/rest/api/3/project/{projectIdOrKey}/statuses
served & verified
Core
GET
/rest/api/3/project/{projectKeyOrId}/notificationscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. THE CLIQUE'S ONE TIER-1 ROW: a project's notification scheme is the site default, because F5 says there is one of each kind and it binds everything

served & verified
Core
GET
/rest/api/3/project/recent

the projects the authenticated persona belongs to, ordered by their newest issue activity

served & verified
Core
GET
/rest/api/3/project/search
served & verified
Core
admin1 of 6 served & verified
GET
/rest/api/3/configuration

the global-settings flags follow what this universe actually serves (voting, watching, attachments, sub-tasks, time tracking)

served & verified
Long tail
GET
/rest/api/3/application-properties

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/application-properties/advanced-settings

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/instance/license

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/license/approximateLicenseCount

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/license/approximateLicenseCount/product/{applicationKey}

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
attachments6 of 6 served & verified
GET
/rest/api/3/attachment/{id}

SERVED 2026-09-12 (hello-18 wave W-b): the Attachment widening landed with features.attachmentParents (decisions/2026-09-12-1148-hello-18-attachment-parents.md) — six ALTERs appending issue/issue_comment/pull/alert/namespace/person to the hello-15 attachment table, so a file now hangs off the engineering records this host publishes. attachmentsForIssue() and attachmentsForIssueComment() — the files on a Jira ISSUE and on its comments, and only those: the support desk's 35+ files stay unreachable here because listAttachments() is scoped away from the engineering parents and these accessors are scoped away from the desk's. id, filename, author, created, size, mimeType and a content url that resolves; thumbnail only on an image, omitted rather than nulled so no published url dangles

served & verified
Next
GET
/rest/api/3/attachment/{id}/expand/human

no attachment in this universe is an ARCHIVE - the operation itself declares the empty answer ("if an empty list is returned in the response, the attachment is empty, corrupt, or not an archive") and every canon.AttachmentKind is text a theme can WRITE: a YAML snippet, an SVG, a CSV, a log excerpt, a stack trace and a HAR summary, not one of them a ZIP. So the empty entry list is Jira's own true answer here, carrying the AttachmentMetadata this host publishes beside it. RULED 2026-09-12 (hello-18 wave W-b, autonomous), on the operation's own declared semantics

served & verified
Next
GET
/rest/api/3/attachment/{id}/expand/raw

no attachment in this universe is an ARCHIVE - the operation itself declares the empty answer ("if an empty list is returned in the response, the attachment is empty, corrupt, or not an archive") and every canon.AttachmentKind is text a theme can WRITE: a YAML snippet, an SVG, a CSV, a log excerpt, a stack trace and a HAR summary, not one of them a ZIP. So the empty entry list is Jira's own true answer here, carrying the contents and nothing else, which is the documented difference from the human form. RULED 2026-09-12 (hello-18 wave W-b, autonomous), on the operation's own declared semantics

served & verified
Next
GET
/rest/api/3/attachment/content/{id}

SERVED 2026-09-12 (hello-18 wave W-b): the Attachment widening landed with features.attachmentParents (decisions/2026-09-12-1148-hello-18-attachment-parents.md) — six ALTERs appending issue/issue_comment/pull/alert/namespace/person to the hello-15 attachment table, so a file now hangs off the engineering records this host publishes. The bytes themselves: attachment.body, whose size_bytes and sha256 the compiler measured off exactly these bytes and which the conformance entry re-hashes. redirect=false serves them at 200; the default is Jira's 303 to /secure/attachment/{id}/{filename} — Jira's own non-REST download path, the /secure/useravatar precedent, so no endpoint is invented inside /rest/api/ (invariant #2) and the Location resolves (invariant #5)

served & verified
Next
GET
/rest/api/3/attachment/meta

SERVED 2026-09-12 (hello-18 wave W-b): the Attachment widening landed with features.attachmentParents (decisions/2026-09-12-1148-hello-18-attachment-parents.md) — six ALTERs appending issue/issue_comment/pull/alert/namespace/person to the hello-15 attachment table, so a file now hangs off the engineering records this host publishes. A SETTING rather than a file, which is why this is the one row of the family that is NOT gated on the generation: enabled reads hasAttachmentParents() — the same fact /rest/api/3/configuration's attachmentsEnabled now reads, so the two routes cannot disagree — and is honestly false on every pin. uploadLimit is Jira Cloud's own fixed 10 MB, the same class of provider constant as the status ids this renderer already carries

served & verified
Next
GET
/rest/api/3/attachment/thumbnail/{id}

SERVED 2026-09-12 (hello-18 wave W-b): the Attachment widening landed with features.attachmentParents (decisions/2026-09-12-1148-hello-18-attachment-parents.md) — six ALTERs appending issue/issue_comment/pull/alert/namespace/person to the hello-15 attachment table, so a file now hangs off the engineering records this host publishes. The image itself: screenshot-svg is the one kind carrying width/height, and an SVG is a vector document, so serving it as its own thumbnail scales to whatever the client renders at and invents no pixel. A file that is NOT an image answers Jira's declared 404 for "the requested thumbnail cannot be downloaded" even with fallbackToDefault=true, because Jira's default thumbnail is Atlassian ARTWORK and this replica reproduces none of it (the same licence finding the system-avatar rows made)

served & verified
Next
avatars3 of 6 served & verified
GET
/rest/api/3/avatar/{type}/system

reader.refCatalog("jira.system-avatars") filtered by type, with the four urls composed onto /secure/useravatar?avatarId=&avatarType= (the operation's own example path, which this host already serves) and answered with identiconPng - this universe's own bytes, never Atlassian's artwork. licence: NO GRANT NEEDED — Avatar requires only id in the vendored description and urls are RELATIVE paths on this host, so the BYTES behind them are this universe's own: PersonAvatar has been canon since hello-13 and identiconPng already rasterises byte-identical avatars for GitHub, GitLab, Jira and ADO (packages/conformance/src/parity/avatar-parity.test.ts). Atlassian's artwork is never reproduced. Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/avatars

STALE REASON: the 2026-09-09 ruling deferred this row on "answered with this host's own identicons on hello-16 (refCatalogs, in flight)" and hello-16 landed it — the 32-row `jira.system-avatars` catalog ships from hello-16 on and app.ts already serves the same rows at /rest/api/3/avatar/{type}/system. `system[]` comes off the catalog and `custom[]` is honestly empty: a custom avatar exists only because somebody uploaded a picture and this universe accepts no writes

served & verified
Long tail
GET
/rest/api/3/universal_avatar/type/{type}/owner/{entityId}

STALE REASON: the 2026-09-09 ruling deferred this row on "answered with this host's own identicons on hello-16 (refCatalogs, in flight)" and hello-16 landed it — the 32-row `jira.system-avatars` catalog ships from hello-16 on and app.ts already serves the same rows at /rest/api/3/avatar/{type}/system. `system[]` comes off the catalog and `custom[]` is honestly empty: a custom avatar exists only because somebody uploaded a picture and this universe accepts no writes

served & verified
Long tail
GET
/rest/api/3/universal_avatar/view/type/{type}

refuse — these routes return PNG bytes rather than JSON, and the artifact carries no image data for a person or a project

deferred
Long tail
GET
/rest/api/3/universal_avatar/view/type/{type}/avatar/{id}

refuse — these routes return PNG bytes rather than JSON, and the artifact carries no image data for a person or a project

deferred
Long tail
GET
/rest/api/3/universal_avatar/view/type/{type}/owner/{entityId}

refuse — these routes return PNG bytes rather than JSON, and the artifact carries no image data for a person or a project

deferred
Long tail
fields6 of 6 served & verified
GET
/rest/api/3/field
served & verified
Core
GET
/rest/api/3/field/{fieldId}/association/project

the field registry in packages/renderer-jira/src/metadata.ts — every field is on every project here

served & verified
Core
GET
/rest/api/3/field/{fieldId}/contexts

the field registry in packages/renderer-jira/src/metadata.ts

served & verified
Core
GET
/rest/api/3/field/search

the field registry in packages/renderer-jira/src/metadata.ts

served & verified
Core
GET
/rest/api/3/field/search/trashed

no field has ever been deleted in this universe — the field registry is fixed at compile time and this universe accepts no writes — so the field trash is truthfully an empty page

served & verified
Core
GET
/rest/api/3/projects/fields

the field registry in packages/renderer-jira/src/metadata.ts

served & verified
Core
project-roles6 of 6 served & verified
GET
/rest/api/3/project/{projectIdOrKey}/role

SERVED 2026-09-10 (hello-16): the role-name → project-role-URL map, over reader.listMembershipRoles() in catalog order. Canon's five MembershipRoleKeys map to Jira's project-role vocabulary in one place (renderer-jira/src/roles.ts). A pre-hello-16 pin answers the named access generation gap (noRoles)

served & verified
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/role/{id}

SERVED 2026-09-10 (hello-16): one ProjectRole with THIS project's actors — reader.listMemberships("team", team) filtered to the role and to state=active, because an invitation is not yet an actor. A Jira project is a canonical team here, so the project roster genuinely differs from the site one

served & verified
Long tail
GET
/rest/api/3/project/{projectIdOrKey}/roledetails

SERVED 2026-09-10 (hello-16): ProjectRoleDetails over reader.listMembershipRoles() — the catalog without its actors, which is what this operation is for. `currentMember=true` is honoured against reader.listMemberships("team", team) rather than dropped; `admin` is the role's own team:admin rung

served & verified
Long tail
GET
/rest/api/3/role

SERVED 2026-09-10 (hello-16): the site-wide role catalog — reader.listMembershipRoles(), each with its DEFAULT actors, which Jira defines as the site-wide assignment a new project starts from and canon holds as reader.listMemberships("org", org). A pre-hello-16 pin answers the named access generation gap (noRoles)

served & verified
Long tail
GET
/rest/api/3/role/{id}

SERVED 2026-09-10 (hello-16): the single read off that same catalog, addressed by the id /rest/api/3/role publishes

served & verified
Long tail
GET
/rest/api/3/role/{id}/actors

SERVED 2026-09-10 (hello-16): the same ProjectRole document /rest/api/3/role/{id} serves — both carry the role's default actors from reader.listMemberships("org", org), which is what the vendored description says each of them is for

served & verified
Long tail
epics5 of 5 served & verified
GET
/rest/agile/1.0/epic/{epicIdOrKey}
served & verified
Core
GET
/rest/agile/1.0/epic/{epicIdOrKey}/issue
served & verified
Core
GET
/rest/agile/1.0/epic/none/issue
served & verified
Core
GET
/rest/software/1.0/epic/{epicIdOrKey}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/software/1.0/epic/none/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
issue-links4 of 5 served & verified
GET
/rest/api/3/issue/{issueIdOrKey}/remotelink

no issue and no version in olympus-labs carries a remote link - a remote link is an application link to an object in another Atlassian product and this site has no linked Confluence, no linked Bitbucket and no app; Jira's own answer for an issue with none is [] at 200. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/issueLink/{linkId}

SERVED 2026-09-12 (hello-17): one link with BOTH ends named, from canon's issue_link — the entity the 2026-09-01 classification called "the A7 wave's" and hello-17's features.issueLinks delivered. One row per adjacent pair inside one (epic, sprint) group, `blocks` when the earlier issue closed strictly before the later one opened and `relates` otherwise (decisions/2026-09-11-0200-hello-17-review-policy-social-graph-and-issue-links.md). inwardIssue IS THE SOURCE: the vendored IssueLink labels inwardIssue with the type's `inward` string and outwardIssue with its `outward`, and a link renders on one issue by dropping that end — substituting the description's own getIssueLink example (type Duplicate, inwardIssue PR-3, outwardIssue PR-2) that reads "PR-3 Duplicates PR-2" and "PR-2 Duplicated by PR-3", which is the only assignment of the two that says one thing. So the prerequisite is inwardIssue and its successor outwardIssue. Each end carries the four `Fields` this replica can answer from canon (summary, status, priority, issuetype), byte-identical to what /rest/api/3/issue/{key} prints for the same issue. Older artifacts answer the noIssueLinks generation-gap 404 naming generation hello-17 — never Jira's entity 404, which would be an answer about the id where the truth is that the universe has no links to have ids

served & verified
Next
GET
/rest/api/3/issueLinkType

SERVED 2026-09-12 (hello-17): {issueLinkTypes: [...]}, the two relationships this site defines, id-ordered. TWO AND NOT FOUR: canon's kind vocabulary is closed at blocks|relates|duplicates|parent and this universe writes rows for the first two only — canon marks no duplicate anywhere, and no `issue_link` row says `parent`: until hello-23 canon's parentage ran issue -> EPIC only, which is not an issue, and hello-23's issue-to-issue parentage is a table of its own (`issue_parent`) rather than link rows, with Jira left unchanged by founder ruling F2b (re-worded 2026-10-27, decisions/2026-10-27-2222). A catalogue advertising a type nothing can be is invariant #5 from the other end (the TYPE_DEFS rule renderer-ado takes), so it publishes exactly the kinds canon produces and grows on its own the day canon produces a third. THE VOCABULARY IS JIRA CLOUD'S SHIPPED DEFAULTS, NOT THE DOCUMENT'S EXAMPLE: IssueLinkType declares four strings and no enum, and the description's only concrete vocabulary is an illustrative example on getIssueLinkTypes ({id 1010, inward "Blocked by", name "Blocks", outward "Blocks"}) that no Jira Cloud site actually serves — every Cloud site is created with "blocks"/"is blocked by" and "relates to"/"relates to", which is what a client's UI and a human's JQL meet, so that is what an exact mirror serves. The divergence is recorded in packages/renderer-jira/src/issue-links.ts and in the decision entry. `[]` is not the answer on an older artifact: it would say this SITE defines no link types, a claim about the host (the noRefCatalogs precedent), so those answer the named generation gap

served & verified
Next
GET
/rest/api/3/issueLinkType/{issueLinkTypeId}

SERVED 2026-09-12 (hello-17): the same catalogue row by id, byte-identical to the one the list publishes — conformance asserts both types both ways. An id the catalogue does not carry is Jira's own 404 and not a coverage miss: the catalogue resolved and this id is not in it. Older artifacts answer the noIssueLinks generation gap, like the list

served & verified
Next
GET
/rest/api/3/issue/{issueIdOrKey}/remotelink/{linkId}

refuse — no issue and no version in olympus-labs carries a remote link - a remote link is an application link to an object in another Atlassian product and this site has no linked Confluence, no linked Bitbucket and no app, so no link id resolves and Jira's own 404 is the whole answer. RULED by the founder 2026-09-12

deferred
Next
plans0 of 5 served & verified
GET
/rest/api/3/plans/plan

refuse — Advanced Roadmaps is a Jira Premium feature this site does not have; all five operations declare a 403 described as "Returned if the site has no premium edition of Jira or if the user does not have the Administer Jira global permission" - the ruled ground verbatim - so Jira answers 403, not 404, to plans reads on a site without the edition (founder ruling 2026-09-03 on proposal 1 of coverage/reviews/2026-09-03-jira-refuse-shapes.md)

deferred
Long tail
GET
/rest/api/3/plans/plan/{planId}

refuse — Advanced Roadmaps is a Jira Premium feature this site does not have; all five operations declare a 403 described as "Returned if the site has no premium edition of Jira or if the user does not have the Administer Jira global permission" - the ruled ground verbatim - so Jira answers 403, not 404, to plans reads on a site without the edition (founder ruling 2026-09-03 on proposal 1 of coverage/reviews/2026-09-03-jira-refuse-shapes.md)

deferred
Long tail
GET
/rest/api/3/plans/plan/{planId}/team

refuse — Advanced Roadmaps is a Jira Premium feature this site does not have; all five operations declare a 403 described as "Returned if the site has no premium edition of Jira or if the user does not have the Administer Jira global permission" - the ruled ground verbatim - so Jira answers 403, not 404, to plans reads on a site without the edition (founder ruling 2026-09-03 on proposal 1 of coverage/reviews/2026-09-03-jira-refuse-shapes.md)

deferred
Long tail
GET
/rest/api/3/plans/plan/{planId}/team/atlassian/{atlassianTeamId}

refuse — Advanced Roadmaps is a Jira Premium feature this site does not have; all five operations declare a 403 described as "Returned if the site has no premium edition of Jira or if the user does not have the Administer Jira global permission" - the ruled ground verbatim - so Jira answers 403, not 404, to plans reads on a site without the edition (founder ruling 2026-09-03 on proposal 1 of coverage/reviews/2026-09-03-jira-refuse-shapes.md)

deferred
Long tail
GET
/rest/api/3/plans/plan/{planId}/team/planonly/{planOnlyTeamId}

refuse — Advanced Roadmaps is a Jira Premium feature this site does not have; all five operations declare a 403 described as "Returned if the site has no premium edition of Jira or if the user does not have the Administer Jira global permission" - the ruled ground verbatim - so Jira answers 403, not 404, to plans reads on a site without the edition (founder ruling 2026-09-03 on proposal 1 of coverage/reviews/2026-09-03-jira-refuse-shapes.md)

deferred
Long tail
sprints4 of 5 served & verified
GET
/rest/agile/1.0/sprint/{sprintId}
served & verified
Core
GET
/rest/agile/1.0/sprint/{sprintId}/issue
served & verified
Core
GET
/rest/agile/1.0/sprint/{sprintId}/properties

no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found", and its answer for an entity that carries none is the empty `{"keys": []}` this operation declares. RULED by the founder 2026-09-12

served & verified
Core
GET
/rest/software/1.0/sprint/{sprintId}/issue

the same board/sprint/epic listings agile/1.0 already serves green

served & verified
Core
GET
/rest/agile/1.0/sprint/{sprintId}/properties/{propertyKey}

refuse — no entity in this Jira site carries an app property - entity properties are written only by Connect/Forge apps through the API and olympus-labs installs none, and this universe accepts no writes; Jira's own answer for a property key that is not set is 404 "The property key was not found". RULED by the founder 2026-09-12

planned
Core
groups4 of 4 served & verified
GET
/rest/api/3/group
served & verified
Core
GET
/rest/api/3/group/bulk

the group table the renderer already renders (site group + one per team)

served & verified
Core
GET
/rest/api/3/group/member
served & verified
Core
GET
/rest/api/3/groups/picker
served & verified
Core
metadata-admin4 of 4 served & verified
GET
/rest/api/3/priorityscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/priorityscheme/{schemeId}/priorities

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/priorityscheme/{schemeId}/projects

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/priorityscheme/priorities/available

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. AN EMPTY PAGE THAT IS A DERIVATION RATHER THAN A RULING, which is why the mode is derive and not empty: the priorities AVAILABLE FOR ADDING are the catalogue /rest/api/3/priority publishes minus the ones this scheme already binds, the default scheme binds all five, and the day canon binds four this route answers with the fifth

served & verified
Long tail
worklogs3 of 4 served & verified
GET
/rest/api/3/issue/{issueIdOrKey}/worklog

nobody in olympus-labs logs time - the generator writes an estimate on an issue (issue.estimate) and never a worklog, so no work log has ever been created, updated or deleted in this universe; Jira's own answer for an issue with none is {"worklogs": [], "total": 0} at 200 and for the updated/deleted feeds an empty values list with the window's until time. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/worklog/deleted

nobody in olympus-labs logs time - the generator writes an estimate on an issue (issue.estimate) and never a worklog, so no work log has ever been created, updated or deleted in this universe; Jira's own answer for an issue with none is {"worklogs": [], "total": 0} at 200 and for the updated/deleted feeds an empty values list with the window's until time. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/worklog/updated

nobody in olympus-labs logs time - the generator writes an estimate on an issue (issue.estimate) and never a worklog, so no work log has ever been created, updated or deleted in this universe; Jira's own answer for an issue with none is {"worklogs": [], "total": 0} at 200 and for the updated/deleted feeds an empty values list with the window's until time. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/issue/{issueIdOrKey}/worklog/{id}

refuse — nobody in olympus-labs logs time - the generator writes an estimate on an issue (issue.estimate) and never a worklog, so no work log has ever been created and no worklog id resolves; Jira's own 404 for a worklog that is not found is the whole answer. RULED by the founder 2026-09-12

deferred
Next
bulk-ops2 of 3 served & verified
GET
/rest/api/3/bulk/issues/fields

the field registry in packages/renderer-jira/src/metadata.ts

served & verified
Long tail
GET
/rest/api/3/bulk/issues/transition

issue_transition rows plus the six-state workflow vocabulary

served & verified
Long tail
GET
/rest/api/3/bulk/queue/{taskId}

refuse — this universe accepts no writes, so no asynchronous job was ever queued and no task id can resolve — Jira's own 404 for an unknown task is the whole answer

deferred
Long tail
myself2 of 3 served & verified
GET
/rest/api/3/mypreferences/locale

the person table — the same users /rest/api/3/user already renders

served & verified
Core
GET
/rest/api/3/myself
served & verified
Core
GET
/rest/api/3/mypreferences

refuse — no person in olympus-labs has set a Jira user preference - canon records no per-user Jira setting and this universe accepts no writes; the key parameter is required and Jira's own answer for a key the caller has not set is 404 "The preference with the given key does not exist" (/mypreferences/locale stays served: it is the site locale, not a preference). RULED by the founder 2026-09-12

planned
Core
notification-admin3 of 3 served & verified
GET
/rest/api/3/notificationscheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/notificationscheme/{id}

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/notificationscheme/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
search2 of 3 served & verified
GET
/rest/api/3/issue/picker

the issue table through the covered JQL engine

served & verified
Core
GET
/rest/api/3/search/jql
served & verified
Core
GET
/rest/api/3/search

refuse — Atlassian removed GET /rest/api/3/search (CHANGE-2046) and the renderer already answers 410 Gone — the provider's own refusal, mirrored

planned
Core
time-tracking3 of 3 served & verified
GET
/rest/api/3/configuration/timetracking

time tracking is not in use in this Jira site - no worklog exists and issue.estimate is a story-point estimate rather than a time estimate; Jira's own answer when no time tracking provider is selected is 204 No Content with an empty body. RULED by the founder 2026-09-12

served & verified
Next
GET
/rest/api/3/configuration/timetracking/list

SERVED 2026-09-14 (hello-20 wave W-jira) RATHER THAN RULED, and the ruling's own fact is why: nobody in olympus-labs configured time tracking, so the providers this site has are the ones Jira ships. The document's own sentence is the whole answer - "By default, Jira only has one time tracking provider: JIRA provided time tracking" - so the empty list this row was proposed for (batch F1, ruling group R8, "nobody logged time") would have been a false claim about the PRODUCT rather than about this organization. A vendor constant of exactly the class /rest/api/3/priority and /rest/api/3/resolution are already derive rows on this host. The sibling /rest/api/3/configuration/timetracking still answers the 204 the operation declares for "time tracking is disabled", because a provider being AVAILABLE and a provider being SELECTED are different facts

served & verified
Next
GET
/rest/api/3/configuration/timetracking/options

SERVED 2026-09-14 (hello-20 wave W-jira) RATHER THAN RULED (batch F1, ruling group R8, "nobody logged time"): these are the SHARED time-tracking settings, which exist whether or not the feature is turned on, and TimeTrackingConfiguration requires all four of them - so an empty answer is not available and the honest one is the value a site nobody configured has: an eight-hour day, a five-day week, the pretty format and the minute as the unit a bare number is read in. A vendor constant of the class /rest/api/3/priority is already served from. The sibling /rest/api/3/configuration/timetracking still answers 204 "time tracking is disabled", and conformance asserts that it does

served & verified
Next
type-admin3 of 3 served & verified
GET
/rest/api/3/issuetypescheme

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
GET
/rest/api/3/issuetypescheme/mapping

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover. THE ONE FOLD OVER THIS ORGANIZATION'S OWN ROWS in the whole domain: the scheme offers the issue kinds its issues actually are, read from issue.kind. A scheme offering a type no issue in this universe is would be a configuration for something that does not exist

served & verified
Long tail
GET
/rest/api/3/issuetypescheme/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
agile-issues2 of 2 served & verified
GET
/rest/agile/1.0/issue/{issueIdOrKey}
served & verified
Core
GET
/rest/agile/1.0/issue/{issueIdOrKey}/estimation
served & verified
Core
issue-extras2 of 2 served & verified
GET
/rest/api/3/issue/{issueIdOrKey}/votes

SERVED 2026-09-14 (hello-20 wave W-jira) AND IT COST NO CANON AT ALL - the row moves from generate to derive with no IssueWatch entity anywhere, which decisions/2026-09-14-0315-hello-20-watch-graph.md calls "the Jira pair that needed no canon at all". An issue's WATCHERS are its own participants (Jira adds you to that list when you report an issue, are assigned it or comment on it), which is reader.issueWatchers() - a fold over issue, issue_assignee and issue_comment; an issue's VOTES are the thumbs-up reactions content_reaction has carried since hello-16, already reachable through reactionsFor("issue", id) with no new accessor. Storing either would be storing a join. DELIBERATELY UNGATED: both read tables every registered pin already carries, so a hello-20 gate here would withhold a true answer from all of them

served & verified
Next
GET
/rest/api/3/issue/{issueIdOrKey}/watchers

SERVED 2026-09-14 (hello-20 wave W-jira) AND IT COST NO CANON AT ALL - the row moves from generate to derive with no IssueWatch entity anywhere, which decisions/2026-09-14-0315-hello-20-watch-graph.md calls "the Jira pair that needed no canon at all". An issue's WATCHERS are its own participants (Jira adds you to that list when you report an issue, are assigned it or comment on it), which is reader.issueWatchers() - a fold over issue, issue_assignee and issue_comment; an issue's VOTES are the thumbs-up reactions content_reaction has carried since hello-16, already reachable through reactionsFor("issue", id) with no new accessor. Storing either would be storing a join. DELIBERATELY UNGATED: both read tables every registered pin already carries, so a hello-20 gate here would withhold a true answer from all of them

served & verified
Next
jql2 of 2 served & verified
GET
/rest/api/3/jql/autocompletedata
served & verified
Core
GET
/rest/api/3/jql/autocompletedata/suggestions

the covered JQL grammar and its values

served & verified
Core
permissions2 of 2 served & verified
GET
/rest/api/3/mypermissions
served & verified
Core
GET
/rest/api/3/permissions

the permission vocabulary /rest/api/3/mypermissions already answers

served & verified
Core
platform/app data policies0 of 2 served & verified
GET
/rest/api/3/data-policy

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/data-policy/project

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
platform/application roles0 of 2 served & verified
GET
/rest/api/3/applicationrole

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
GET
/rest/api/3/applicationrole/{key}

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
webhooks-config0 of 2 served & verified
GET
/rest/api/3/webhook

refuse — Jira restricts the webhook registry to the Connect or OAuth 2.0 app that registered the webhooks - the operation returns only the CALLING APP's webhooks - and this replica is called with no app context, so Jira's own 403 for a non-app caller is the whole answer. RULED by the founder 2026-09-12

deferred
Next
GET
/rest/api/3/webhook/failed

refuse — Jira restricts the webhook registry to the Connect or OAuth 2.0 app that registered the webhooks - the operation returns only the CALLING APP's webhooks - and this replica is called with no app context, so Jira's own 403 for a non-app caller is the whole answer. RULED by the founder 2026-09-12

deferred
Next
platform/announcement banner0 of 1 served & verified
GET
/rest/api/3/announcementBanner

refuse — the sandbox token is a project-member token, not a Jira site admin — /rest/api/3/mypermissions already answers ADMINISTER havePermission=false, and real Jira Cloud answers 403 to this route for such a token

deferred
Long tail
platform/audit records1 of 1 served & verified
GET
/rest/api/3/auditing/record

SERVED 2026-09-14 (hello-20 wave W-jira). A WIDENING, AND THE TWO THINGS THE OLD REASON SAID WERE MISSING ARE BOTH PRESENT NOW: features.auditActor appends the git-host members to AuditTargetKind and writes admin_audit_event rows whose actor is a PERSON on the engineering roster - 91 of them at 90 d - into the table hello-15 created (decisions/2026-09-14-0144-hello-20-audit-actor.md). Every instant and every actor is read off a row that already existed: the organization's own creation, a team's earliest membership, a repository's first commit author, a membership's own addedBy, a protected ref's container, a credential's owner. THE RENDERER READS listPersonAuditEvents() AND NEVER THE BARE listAuditEvents(), which defaults to the support desk's register - a Jira host calling the bare one would publish a Zendesk instance's account audit log on an Atlassian surface. Gated on features.auditActor (hello-20+)

served & verified
Long tail
platform/classification levels0 of 1 served & verified
GET
/rest/api/3/classification-levels

refuse — data classification is an Atlassian Guard / Premium feature this site does not have, and Jira answers 403 to a token without the classification scope

deferred
Long tail
platform/dynamic modules0 of 1 served & verified
GET
/rest/atlassian-connect/1/app/module/dynamic

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
platform/group and user picker1 of 1 served & verified
GET
/rest/api/3/groupuserpicker

the person table — the same users /rest/api/3/user already renders

served & verified
Long tail
platform/issue navigator settings1 of 1 served & verified
GET
/rest/api/3/settings/columns

reader.refCatalog("jira.navigator-columns"); every value is a field /rest/api/3/field already serves. licence: FACTUAL — the response is {label, value} over field ids this host already serves ("issuekey", "summary" in the vendored description's example). Older pins answer the refCatalogs generation-gap 404 rather than an empty catalogue, which on these rows would be a false claim about the HOST. SERVED 2026-09-09 (hello-16)

served & verified
Long tail
platform/issue redaction0 of 1 served & verified
GET
/rest/api/3/redact/status/{jobId}

refuse — this universe accepts no writes, so no asynchronous job was ever queued and no task id can resolve — Jira's own 404 for an unknown task is the whole answer

deferred
Long tail
platform/labels1 of 1 served & verified
GET
/rest/api/3/label

the label table

served & verified
Long tail
platform/migration of connect modules to forge0 of 1 served & verified
GET
/rest/atlassian-connect/1/migration/{connectKey}/{jiraIssueFieldsKey}/task

refuse — this universe accepts no writes, so no asynchronous job was ever queued and no task id can resolve — Jira's own 404 for an unknown task is the whole answer

deferred
Long tail
platform/project email0 of 1 served & verified
GET
/rest/api/3/project/{projectId}/email

refuse — no project in olympus-labs has a sender email address configured - a project's sender address is set by an administrator in the project's own settings, this universe records no such act and accepts no writes; Jira's own answer for a project with none is the 404 this operation declares in as many words ("the project or project's sender email address is not found"). RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8). PARENT-GUARDED on the project through Atlassian's THIRD spelling of that path parameter ({projectId}), so a ruling about an address is only ever given about a project this site has

deferred
Long tail
platform/project features1 of 1 served & verified
GET
/rest/api/3/project/{projectIdOrKey}/features

no project in this site carries a project FEATURE - project features are the per-project toggles a TEAM-MANAGED (next-gen) project has, and every project this host serves is company-managed: /rest/api/3/project/{projectIdOrKey} already publishes style "classic" and simplified false, so an ENABLED feature here would contradict what the project object says about itself one route over. Jira's own answer for a project with none is an empty features list at 200. RULED BY THE FOUNDER 2026-09-14 (batch F1, ruling group R8)

served & verified
Long tail
platform/service registry0 of 1 served & verified
GET
/rest/atlassian-connect/1/service-registry

refuse — no Connect or Forge app is installed on this site; these routes are addressed to an installed app's own scope and Jira answers 401/404 to a caller that is not that app

deferred
Long tail
platform/tasks0 of 1 served & verified
GET
/rest/api/3/task/{taskId}

refuse — this universe accepts no writes, so no asynchronous job was ever queued and no task id can resolve — Jira's own 404 for an unknown task is the whole answer

deferred
Long tail
platform/workflow scheme project associations1 of 1 served & verified
GET
/rest/api/3/workflowscheme/project

SERVED 2026-09-14 (hello-20 wave W-jira): canon.Scheme, canon.SchemeBinding and canon.ScreenField landed with features.jiraSchemes (decisions/2026-09-14-0218-hello-20-jira-schemes.md) - ten default configuration objects, every name ATLASSIAN'S own product label carried in canon rather than in a theme pack, and what each binds is what this host already answers: the workflow from /rest/api/3/workflow/search, the field registry from /rest/api/3/field, the permission vocabulary from /rest/api/3/permissions, the priority ladder from /rest/api/3/priority, the issue types from /rest/api/3/issuetype and the roles from /rest/api/3/role. FOUNDER RULING F5 (2026-09-14): "olympus-labs uses Jira's defaults - one scheme of each kind, the site default, binding everything". A DEFAULT SCHEME BINDS NOTHING PER ISSUE TYPE, which is the finding a re-derivation is most likely to get wrong: /workflowscheme/{id}/workflow answers issueTypes [] with defaultMapping true, and the two scheme families that name a catch-all spell its issue type the literal "default". Gated on features.jiraSchemes (hello-20+); every artifact before it answers the named scheme generation gap, which is what the 127 pins frozen before hello-20 serve, and what the live host served until the cutover

served & verified
Long tail
server-info1 of 1 served & verified
GET
/rest/api/3/serverInfo
served & verified
Core

03 / What's simulated

One data set, rendered in Jira's dialect.

Every Jira call resolves against the same simulated data set every other provider serves. Counted from the jira-v3-g12 artifact (universe generation 12):

What another provider has to agree with, and the test that makes it

Each line below is one assertion in the conformance suite named beside it — run on every build, over one artifact, through the real renderers. Nothing is claimed here that no expect checks.

05 / Pinned snapshots

Universes that never change, on their own hostnames.

Each pin regenerates byte-identically on every request, so a test written against one never drifts. Generations are DIFFERENT universes, not versions of one — never swap a suffix expecting the same data.

PinHostUniverse generationJira API versionRepository files
jira-v3jira-v3.snap.sandboxapis.devgeneration 1v3not in this generation
jira-v3-g10jira-v3-g10.snap.sandboxapis.devgeneration 10v3served
jira-v3-g11jira-v3-g11.snap.sandboxapis.devgeneration 11v3served
jira-v3-g12jira-v3-g12.snap.sandboxapis.devgeneration 12v3served
jira-v3-g2jira-v3-g2.snap.sandboxapis.devgeneration 2v3served
jira-v3-g3jira-v3-g3.snap.sandboxapis.devgeneration 3v3served
jira-v3-g5jira-v3-g5.snap.sandboxapis.devgeneration 5v3served
jira-v3-g6jira-v3-g6.snap.sandboxapis.devgeneration 6v3served
jira-v3-g8jira-v3-g8.snap.sandboxapis.devgeneration 8v3served
jira-v3-g9jira-v3-g9.snap.sandboxapis.devgeneration 9v3served

Need an endpoint that is not served yet?

Every row Jira's manifest carries is on this page, so “not here” is an answer rather than a gap in the rendering. Tell us which path and which client, and it moves up the queue — the order is set by what people ask for.

Request coverage