Skip to content

feat: a fourth surface, for Jira Data Center - #451

Open
MrRefactoring wants to merge 1 commit into
feat/organization-apisfrom
feat/data-center
Open

feat: a fourth surface, for Jira Data Center#451
MrRefactoring wants to merge 1 commit into
feat/organization-apisfrom
feat/data-center

Conversation

@MrRefactoring

Copy link
Copy Markdown
Owner

Seventh of eight, splitting #443. Base is feat/organization-apis (#450); the diff here is the increment alone — 846
files.

No issue behind this one. The tracker has none for Data Center — data center, self-hosted and datacenter
return nothing, and #96 and #86 were closed years ago. This is one of the two phases you agreed to take without one.

444 operations, 61 modules

Generated from the Jira Data Center 11.3 LTS specification, usable against Data Center 10.0 and later. Counts
verified against the tree: 61 import * as modules on the client, 444 exported operations.

createServerClient is a surface of its own rather than the Cloud client pointed elsewhere. /rest/api/2 against
/rest/api/3, wiki markup against ADF, name and key against accountId — 206 operations share a name with a
Cloud one and 87 share a model name, and nothing else is common but the transport. Data Center publishes platform,
Agile and session as one document, so there is no separate Agile factory: boards and sprints sit in the client with
issues.

The nine operations that arrived after 10.0 carry an @since note. Jira 9.x is unsupported — Atlassian published no
OpenAPI document for it, and the line reached end of life on 26 June 2026.

The rig

docker/jira-dc/compose.yaml plus scripts/jiraDc.ts bring up a throwaway instance; pnpm coverage:server reports
which endpoints a run actually reached. The container is deliberately not started by the test run — a cold instance
takes minutes to reach RUNNING and its licence is a three-hour timebomb, so one instance serves many iterations.

The Cloud live and audit runs now exclude tests/live/server/**. Without that they would try to reach a container
that is not there — and fail with undefined where fixtures should be, rather than with a connection error, because
this suite has a global setup of its own. That exclusion did not exist on master and is added here.

Two things worth flagging

A test licence nearly got committed. docker/*/timebomb-license.txt is an Atlassian evaluation licence — theirs
to publish, not ours to redistribute. .gitignore covers both rigs' licences now, and I verified nothing of the sort
was ever committed anywhere in this stack or on the source branch.

scripts/lib/dcRig.ts had a docblock claiming two rigs use it. True on the source branch, not true here until the
next pull request. Reworded to describe what the module is parameterised by, which is accurate in both states and
needs no follow-up edit.

Verified

typecheck, lint, test (264 — this surface carries a live suite, not unit tests), build, check:browser
(21 entry points, clean dist, 3303 runtime files), check:consumers, docs:api — all pass locally, no
warnings.

The Data Center live suite is not run here: it needs the Docker rig and a licence, which CI has as its own workflow
(live-tests-dc.yaml, added in this pull request) rather than as part of the pull-request checks.

Four hundred and forty-four operations across sixty-one modules, generated from the Jira Data Center 11.3 LTS
specification and usable against Data Center 10.0 and later.

`createServerClient` is a surface of its own rather than the Cloud client pointed at another host, because the two
APIs differ in more than their address: `/rest/api/2` against `/rest/api/3`, wiki markup against Atlassian Document
Format, `name` and `key` against `accountId`. Of the four hundred and forty-four operations, two hundred and six share
a name with a Cloud one and eighty-seven share a model name; nothing else is common but the transport.

Data Center publishes its platform, Agile and session endpoints as one document, so unlike Cloud there is no separate
Agile factory — boards and sprints sit in the same client as issues.

Every one of those operations is called against a running instance. Atlassian generates this document from Java
annotations rather than writing it, and it is wrong in ways reading cannot reveal, so the suite brings up a throwaway
instance in Docker — `pnpm jira-dc:up` — and walks the whole surface. `pnpm coverage:server` reports which endpoints a
run actually reached, because a domain that quietly stops being exercised otherwise looks exactly like one that
passes.

The nine operations that arrived after 10.0 carry an `@since` note naming the release each can be relied on from. Jira
9.x is not supported: Atlassian never published an OpenAPI document for it, and the line reached end of life on 26
June 2026.

The Cloud live and audit runs exclude this suite. It answers to a container that has to be brought up first and to a
global setup of its own; left in, it would not merely fail but fail with `undefined` where its fixtures should be.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant