API
REST API reference
What the web app can do, the REST API can do too: issues, projects, releases, time, documentation, webhooks and a workspace’s settings. For AI agents, the MCP server is usually the better way. AI & MCP: the better way for AI agents →
Basics
- Address
- Every workspace has its own:
https://<workspace>.it4s.at/api/v1/… - Authentication
- A personal access token in the header
Authorization: Bearer it4s_pat_…(My Profile › API Tokens). The token has your account’s permissions, read-only if you like. - Errors
- Problem JSON (RFC 9457) with
status,code,detailand, for input errors,errorsper field. - Lists
limit(up to 200) andcursor; the answer hasitems,totalandnextCursor.- Specification
- OpenAPI 3.1 at
/api/v1/openapi.json, to click through at/api/docs– also in the demo workspace.
Try it without an account
The public demo workspace answers without signing in, read-only:
curl -s "https://demo.it4s.at/api/v1/issues?project=WEB&status=open"
All 251 endpoints
By area. The short descriptions come from the OpenAPI spec. Endpoints marked “no token” work without signing in.
Issues 17
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issues | Search issues |
| POST | /api/v1/issues | Create an issue (any type) |
| POST | /api/v1/issues/bulk-delete | Soft delete up to 50 issues; per-key results |
| POST | /api/v1/issues/bulk-update | Update up to 50 issues; per-key results |
| GET | /api/v1/issues/quick-search | Quick search |
| GET | /api/v1/issues/tree/projects | Projects above the issue tree |
| GET | /api/v1/issues/{key} | |
| PATCH | /api/v1/issues/{key} | Update fields (partial). Send If-Match with the ETag to avoid overwriting someone else’s change. |
| DELETE | /api/v1/issues/{key} | Soft delete (restore with POST /issues/{key}/restore) |
| GET | /api/v1/issues/{key}/activity | History, newest first |
| POST | /api/v1/issues/{key}/move | Rank (and status) change: after = the issue above, before = the issue below |
| POST | /api/v1/issues/{key}/restore | Undo a delete |
| POST | /api/v1/issues/{key}/transition | |
| GET | /api/v1/issues/{key}/watchers | Watchers, and whether you watch the issue |
| PUT | /api/v1/issues/{key}/watchers/me | Watch the issue (emails on new comments) |
| DELETE | /api/v1/issues/{key}/watchers/me | Stop watching the issue |
| PUT | /api/v1/issues/{key}/watchers/{userId} | Add someone to the watch list (members, admins, customers) |
Comments 8
| Method | Path | Description |
|---|---|---|
| PATCH | /api/v1/comments/{id} | |
| DELETE | /api/v1/comments/{id} | Soft delete |
| PUT | /api/v1/comments/{id}/answered | Mark a question answered, or open it again |
| PUT | /api/v1/comments/{id}/category | Set the category of a comment, or null for none (IT4S-463; project members and admins, and the author) |
| PUT | /api/v1/comments/{id}/decision | Mark a comment as a decision, or remove the mark (IT4S-429; project members and admins) |
| POST | /api/v1/comments/{id}/restore | |
| GET | /api/v1/issues/{key}/comments | |
| POST | /api/v1/issues/{key}/comments | Markdown body; @name mentions |
Projects 16
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/projects | |
| POST | /api/v1/projects | |
| GET | /api/v1/projects/{key} | |
| PATCH | /api/v1/projects/{key} | |
| POST | /api/v1/projects/{key}/archive | Archive an inactive project (project admins): read-only, out of the lists and the project limit |
| GET | /api/v1/projects/{key}/avatar | The project avatar as WebP, 128 px or `size=small` 32 px; cache it, the URL carries the version |
| PUT | /api/v1/projects/{key}/avatar | Upload the project avatar (project admins; multipart/form-data, field "file"; PNG, JPEG, SVG or WebP, max 1 MB) |
| DELETE | /api/v1/projects/{key}/avatar | |
| POST | /api/v1/projects/{key}/delete | Schedule an inactive project for removal with all its content (project admins, browser session only) |
| POST | /api/v1/projects/{key}/keep | Take back the deletion of a project; it stays inactive |
| GET | /api/v1/projects/{key}/members | |
| POST | /api/v1/projects/{key}/members | Add a member or change the role |
| DELETE | /api/v1/projects/{key}/members/{userId} | |
| POST | /api/v1/projects/{key}/sample-issues | Fill an empty project with sample issues (project admins) |
| DELETE | /api/v1/projects/{key}/sample-issues | Move the sample issues to the trash and remove the sample release (project admins) |
| POST | /api/v1/projects/{key}/unarchive | Take a project out of the archive; it stays inactive and counts towards the project limit |
Releases 13
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/projects/{key}/releases | |
| POST | /api/v1/projects/{key}/releases | |
| GET | /api/v1/releases | |
| GET | /api/v1/releases/{id} | |
| PATCH | /api/v1/releases/{id} | Update a release. Releasing with open issues answers 409 unless moveOpenIssuesTo is given (a release id, or null to keep them). |
| DELETE | /api/v1/releases/{id} | |
| GET | /api/v1/releases/{id}/blockers | Open issues of the release that wait for another open issue of the project (blocks links), with their blockers |
| GET | /api/v1/releases/{id}/candidates | Open stories, tasks and bugs that could go into the release (without release by default; `source=backlog` or `other` unreleased releases), with the issue list filters |
| GET | /api/v1/releases/{id}/issues | The issues of the release (sub-tasks follow their parent), by rank, with summed estimates |
| PATCH | /api/v1/releases/{id}/issues | Move issues into or out of an unreleased release (project admins). Epics move their open children, issues their open sub-tasks; all keys are checked first, a bad one changes nothing |
| POST | /api/v1/releases/{id}/notes-ai | Release notes written by the workspace AI, streamed as text |
| GET | /api/v1/releases/{id}/notes-draft | A first version of the release notes from the done issues, grouped by type |
| POST | /api/v1/releases/{id}/suggest | AI proposal for the scope of an unreleased release (project admins, AI active): candidates best first with a one-line reason; assigns nothing |
Board 1
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/board | Board columns with ranked issues |
Worklogs 6
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issues/{key}/worklogs | Newest first |
| POST | /api/v1/issues/{key}/worklogs | Log work for yourself |
| GET | /api/v1/worklogs | Worklogs across your projects |
| GET | /api/v1/worklogs/{id} | |
| PATCH | /api/v1/worklogs/{id} | Own worklogs; project admins change all |
| DELETE | /api/v1/worklogs/{id} | Puts the time back on the remaining estimate |
Reports 2
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/reports/estimates | Estimates of a scope (Estimate Report) |
| GET | /api/v1/reports/time | Logged time per issue and user |
Documentation 15
| Method | Path | Description |
|---|---|---|
| PATCH | /api/v1/doc-comments/{id} | |
| DELETE | /api/v1/doc-comments/{id} | |
| GET | /api/v1/docs | Full-text search over titles and content (every word as a prefix) |
| GET | /api/v1/docs/{ref} | |
| PATCH | /api/v1/docs/{ref} | Change title or content, move (parent, position) or set the release of a top page; If-Match: W/"version" optional |
| DELETE | /api/v1/docs/{ref} | Move the page and its subpages to the trash |
| GET | /api/v1/docs/{ref}/activity | History, newest first |
| GET | /api/v1/docs/{ref}/attachments | The files of the page |
| POST | /api/v1/docs/{ref}/attachments | Upload a file for the page (members; multipart/form-data, field "file") |
| GET | /api/v1/docs/{ref}/comments | |
| POST | /api/v1/docs/{ref}/comments | |
| POST | /api/v1/docs/{ref}/restore | |
| GET | /api/v1/issues/{key}/docs | Documentation pages that mention the issue by key (none for customers) |
| GET | /api/v1/projects/{key}/docs | Pages of a project (tree data: parent and position); `release` = name, id, or `none` for pages without a release |
| POST | /api/v1/projects/{key}/docs |
Attachments 10
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/attachments/{id} | Metadata with a signed download URL (15 minutes) |
| DELETE | /api/v1/attachments/{id} | Soft delete |
| GET | /api/v1/attachments/{id}/content | File bytes. Works with your session/token or with the signed URL from the metadata. |
| POST | /api/v1/attachments/{id}/restore | |
| GET | /api/v1/issues/{key}/attachments | |
| POST | /api/v1/issues/{key}/attachments | Upload a file (multipart/form-data, field "file"; optional field "commentId") |
| POST | /api/v1/projects/{key}/attachments | Upload a file for the project description, or with field "internal"=true for its internal note (project admins; multipart/form-data, field "file") |
| POST | /api/v1/projects/{key}/draft-attachments | Upload a file for an issue that is being created (IT4S-274; multipart/form-data, field "file"). Pass its id in "attachments" when creating the issue; only you see it until then, unused files are removed after 24 hours. |
| POST | /api/v1/releases/{id}/attachments | Upload a file for the release notes (project admins; multipart/form-data, field "file") |
| PUT | /api/v1/uploads/{token} | Upload a file to a one-time link (MCP create_upload_link): the raw file as the body, e.g. curl --data-binary @file |
Links 4
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issues/{key}/links | |
| POST | /api/v1/issues/{key}/links | |
| DELETE | /api/v1/issues/{key}/links | Remove the link of this type to `target`, in either direction |
| DELETE | /api/v1/links/{id} |
Tags 4
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/tags | |
| POST | /api/v1/tags | |
| PATCH | /api/v1/tags/{id} | |
| DELETE | /api/v1/tags/{id} |
Components 5
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/components/{id} | |
| PATCH | /api/v1/components/{id} | Change or archive a component (project admins); archived components stay on their issues and releases |
| GET | /api/v1/projects/{key}/components | The components of a project in their order; archived ones with archived=true |
| POST | /api/v1/projects/{key}/components | Add a component (project admins) |
| PUT | /api/v1/projects/{key}/components/order | Order the components (project admins): their ids, first to last |
Users 14
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/users | All users with details (admins); people by default, `kind=agent` for the agent personas, `kind=all` for both |
| GET | /api/v1/invitations | Open invitations (pending and expired) and the users against the plan (admins) |
| POST | /api/v1/invitations | Invite people by email: a link valid 7 days each; members are skipped (admins) |
| DELETE | /api/v1/invitations/{id} | Revoke an invitation (admins) |
| POST | /api/v1/invitations/{id}/resend | Send a new link, valid 7 days; the old one stops working (admins) |
| GET | /api/v1/users | Look up active users (assignee pickers, mentions); `agents=true` adds the agent personas of those people after them |
| POST | /api/v1/users | |
| GET | /api/v1/users/{id} | |
| PATCH | /api/v1/users/{id} | |
| DELETE | /api/v1/users/{id} | Delete an inactive user for good; their issues keep them as "Deleted user …" (admins) |
| GET | /api/v1/users/{id}/avatar | A user's picture as WebP, 128 px or `size=small` 32 px; cache it, the URL carries the version |
| GET | /api/v1/users/{id}/invitation | The latest invitation: pending, expired or accepted (admins) |
| POST | /api/v1/users/{id}/invitation | Invite a user: emails a one-time link to set the password (also returned, for when no email is set up) |
| POST | /api/v1/users/{id}/reset-2fa | Turn off two-factor sign-in for a user (lost phone) |
Me 19
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/me | Current user, scopes and projects |
| PATCH | /api/v1/me | Change your name and email notification choices |
| PUT | /api/v1/me/avatar | Upload your picture (multipart/form-data, field "file"; PNG, JPEG, WebP or GIF, max 5 MB) |
| DELETE | /api/v1/me/avatar | Remove your picture; the Google picture or initials show again |
| POST | /api/v1/me/delete | Delete your account (not while you own a workspace or are its last admin) |
| GET | /api/v1/me/drafts | Your unsaved drafts, newest first; optionally of one target |
| PUT | /api/v1/me/drafts/{targetType}/{targetId}/{field} | Keep a draft (the newer of the stored and the sent one wins) |
| DELETE | /api/v1/me/drafts/{targetType}/{targetId}/{field} | Remove a draft (after Save or Discard) |
| GET | /api/v1/me/export | Your account data as JSON: profile, workspaces, sessions, tokens, connected apps, accepted terms |
| GET | /api/v1/me/get-started | The first steps of a workspace and which are done (admins) |
| POST | /api/v1/me/password | |
| PATCH | /api/v1/me/prefs | Merge UI preferences |
| POST | /api/v1/me/totp/disable | |
| POST | /api/v1/me/totp/enable | |
| POST | /api/v1/me/totp/setup | |
| POST | /api/v1/me/whats-new/seen | You have seen the notes up to this version (hides the notice on all devices) |
| GET | /api/v1/me/workspaces | Your workspaces, for the switcher |
| POST | /api/v1/me/workspaces/{id}/open | A one-time link that signs you in on another of your workspaces (TEN-18) |
| GET | /api/v1/whats-new | Release notes of the running version and the versions before it, newest first; `unseen` since the version you saw last |
Settings 34
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/overview | The Administration hub: a short status per admin page and the items that need an admin |
| GET | /api/v1/admin/usage | The plan and what the workspace uses of its limits |
| GET | /api/v1/legal/workspace | The current terms and DPA, and what the owner has accepted |
| POST | /api/v1/legal/workspace/accept | The owner accepts the current terms and DPA for the company |
| GET | /api/v1/settings | |
| PATCH | /api/v1/settings | |
| GET | /api/v1/settings/ai | AI for the workspace (admins); without the API key |
| PUT | /api/v1/settings/ai | Set AI; leave out `apiKey` to keep it, null removes it. A new key or model needs a new test. |
| POST | /api/v1/settings/ai/test | Test key and model with Anthropic (no tokens used). Without a body: the saved ones, stored (AI features run only after a successful test); with `model`/`apiKey` not saved yet: only answered |
| GET | /api/v1/settings/confluence | Confluence connection for the documentation import (admins); without the API token |
| PUT | /api/v1/settings/confluence | Set the Confluence connection (classic API token); leave out `apiToken` to keep it, null removes it |
| POST | /api/v1/settings/confluence/test | Test the Confluence connection: the values in the body (only answered, a token left out is the stored one) or the saved connection (stored) |
| POST | /api/v1/settings/delete-workspace | Lock this workspace and schedule its removal after 30 days (admins, browser session only) |
| GET | /api/v1/settings/email | Email server (admins); without the password |
| PUT | /api/v1/settings/email | Set the email server; leave out `password` to keep it, null removes it |
| POST | /api/v1/settings/email/test | Send a test email to yourself: with the values in the body (not saved yet; a password left out is the stored one), or the saved settings |
| GET | /api/v1/settings/google-domain/proof | The DNS record that proves the saved Google domain, and its state (admins); null without a domain |
| POST | /api/v1/settings/google-domain/verify | Look up the DNS record now (admins) |
| GET | /api/v1/settings/jira | Jira connection for the import (admins); without the API token |
| PUT | /api/v1/settings/jira | Set the Jira connection; leave out `apiToken` to keep it, null removes it |
| POST | /api/v1/settings/jira/test | Test the Jira connection: the values in the body (only answered, a token left out is the stored one) or the saved connection (stored) |
| GET | /api/v1/settings/support-access | Who may come in, and the visits so far |
| PATCH | /api/v1/settings/support-access | Change who may come in (browser session only) |
| POST | /api/v1/settings/support-access/{id}/approve | Approve a request; the time starts now (browser session only) |
| POST | /api/v1/settings/support-access/{id}/decline | Decline a request (browser session only) |
| POST | /api/v1/settings/support-access/{id}/end | End a visit now (browser session only) |
| GET | /api/v1/settings/workspace | Name, address, language, time zone and logo of this workspace (admins) |
| PATCH | /api/v1/settings/workspace | Change name, language or time zone |
| POST | /api/v1/settings/workspace/address | Change the address (admins, browser session only); the old one redirects for 90 days |
| GET | /api/v1/settings/workspace/address-check | Whether this workspace can move to an address |
| PUT | /api/v1/settings/workspace/logo | Upload the logo (multipart/form-data, field "file"; PNG, JPEG, SVG or WebP, at most 1 MB, at least 128 px) |
| DELETE | /api/v1/settings/workspace/logo | Remove the logo: the initials show again |
| GET | /api/v1/workspace/keep | Start the inactivity period of this workspace again; the signed link from the warning email |
| GET | /api/v1/workspace/logo | The logo as WebP, 128 px or `size=small` 32 px; no sign-in, the URL carries the version |
Backup 9
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/backups | The latest 30 backups and restores |
| POST | /api/v1/admin/backups | Start a backup of all data and files in the background; poll it, then download the zip |
| GET | /api/v1/admin/backups/automatic | The nightly backups and the snapshots before a restore, and how long the plan keeps them |
| GET | /api/v1/admin/backups/{id} | |
| DELETE | /api/v1/admin/backups/{id} | Delete a backup or restore run with its zip |
| GET | /api/v1/admin/backups/{id}/download | The zip of a finished backup |
| POST | /api/v1/admin/backups/{id}/restore | Restore a stored backup in the background. `new`: any admin, with `address`. `overwrite`: the owner, with the workspace address in `confirm`; a snapshot is taken first. |
| POST | /api/v1/admin/restores | Upload a backup zip to restore (multipart, field "file"); the worker checks it, then POST …/restore |
| POST | /api/v1/admin/restores/{id}/restore | Replace ALL data with a checked backup in the background, after a snapshot. Body: { confirm: the workspace address }. |
Webhooks 9
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/webhook-deliveries/{id}/redeliver | Send a delivery again (same id and body) |
| GET | /api/v1/webhooks | All webhooks |
| POST | /api/v1/webhooks | Add a webhook; the answer contains the signing secret, shown only once |
| GET | /api/v1/webhooks/{id} | |
| PATCH | /api/v1/webhooks/{id} | |
| DELETE | /api/v1/webhooks/{id} | |
| GET | /api/v1/webhooks/{id}/deliveries | Delivery log, newest first (kept 30 days) |
| POST | /api/v1/webhooks/{id}/rotate-secret | New signing secret (generated, or `secret` = the receiver's own, IT4S-373); the old one stops working right away |
| POST | /api/v1/webhooks/{id}/test | Send a ping delivery |
Agents 8
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/agents | All agent personas of the workspace (workspace admins; others get their own) |
| GET | /api/v1/me/agents | Your agent personas, active first |
| POST | /api/v1/me/agents | Create a persona for your app connections (a removed one of the same name comes back) |
| PATCH | /api/v1/me/agents/{id} | Rename a persona, describe it, or choose its connections |
| DELETE | /api/v1/me/agents/{id} | Remove a persona: it stays in the history, its connections act as you again |
| PUT | /api/v1/me/agents/{id}/avatar | The persona's picture (multipart/form-data, field "file"; PNG, JPEG, WebP or GIF, max 5 MB) |
| DELETE | /api/v1/me/agents/{id}/avatar | Remove the persona's picture (initials again) |
| GET | /api/v1/me/connections | Your app connections (OAuth), with the persona each acts as |
Confluence import 6
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/confluence-runs | The latest 20 Confluence import runs |
| POST | /api/v1/admin/confluence-runs | Analyze a Confluence space in the background: export its pages and files and preview the import. Poll the run. |
| GET | /api/v1/admin/confluence-runs/{id} | |
| PATCH | /api/v1/admin/confluence-runs/{id} | Pages (a root page with its subpages, null: the whole space) and target of an analyzed run; returns the new preview |
| POST | /api/v1/admin/confluence-runs/{id}/import | Import an analyzed run in the background, with the files from Confluence. Poll the run. |
| GET | /api/v1/admin/confluence/spaces | The Confluence spaces the connection can read |
Jira import 6
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/jira-runs | The latest 20 import runs |
| POST | /api/v1/admin/jira-runs | Analyze a Jira project in the background: export it from Jira and plan the import (dry run). Poll the run. |
| GET | /api/v1/admin/jira-runs/{id} | |
| PATCH | /api/v1/admin/jira-runs/{id} | User and status mapping and project name of an analyzed run; returns the new report |
| POST | /api/v1/admin/jira-runs/{id}/import | Import an analyzed run in the background, with the attachment files from Jira. Poll the run. |
| GET | /api/v1/admin/jira/projects | The Jira projects the connection can see |
Billing 5
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/billing/stripe-webhook | Stripe webhook: checkout.session.completed, customer.subscription.updated and .deleted, invoice.payment_failed; signed |
| GET | /api/v1/settings/billing | Billing details, the subscription, prices and invoices (admins) |
| POST | /api/v1/settings/billing/checkout | Start the upgrade to Team: a Stripe Checkout page for the active users (admins, browser session only) |
| PUT | /api/v1/settings/billing/details | Company, VAT ID, address and invoice email; kept at Stripe too (admins) |
| POST | /api/v1/settings/billing/portal | Stripe's page for the payment method, invoices and cancelling (admins, browser session only) |
AI 4
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issues/{key}/summary | The AI summary for you (customers get one from public content only); null when none was generated yet. 409 when AI is off. |
| POST | /api/v1/issues/{key}/summary | Generate or regenerate the AI summary with the workspace model |
| GET | /api/v1/projects/{key}/briefing | The stored AI briefing of the project for you; null when none was written yet. 409 when AI is off. |
| POST | /api/v1/projects/{key}/briefing | Write or rewrite the AI briefing with the workspace model |
Dashboard 4
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/me/dashboard | Counts, what's new since your last visit, your open issues by urgency, opened vs. closed in the last 7 days |
| POST | /api/v1/me/dashboard/seen | Mark all seen: What's new starts from now |
| GET | /api/v1/me/dashboard/summary | Today's AI summary and next steps, written on the first call of the day; null when AI is off |
| POST | /api/v1/me/dashboard/summary | Write the AI summary again (Refresh); null when AI is off |
GitHub 4
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/github/webhook | GitHub repository webhook (content type application/json, events Pull requests, Pushes, Check suites, Check runs, Statuses); signed with the secret |
| GET | /api/v1/settings/github | Payload URL, whether a secret is set, the last delivery |
| POST | /api/v1/settings/github/secret | Generate a new webhook secret (shown once); changes are then made as you, via GitHub |
| DELETE | /api/v1/settings/github/secret | Remove the secret: deliveries are refused |
Project groups 4
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/project-groups | Project groups with the member projects you can read (all groups for workspace admins) |
| POST | /api/v1/project-groups | Add a project group (workspace admins); `projects` are moved into it |
| PATCH | /api/v1/project-groups/{id} | Change a project group (workspace admins); `projects` replaces its member projects |
| DELETE | /api/v1/project-groups/{id} | Delete a project group (workspace admins); its projects stay |
API tokens 3
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/me/tokens | |
| POST | /api/v1/me/tokens | Create a personal access token. The secret is returned only once. |
| DELETE | /api/v1/me/tokens/{id} |
Code 3
| Method | Path | Description |
|---|---|---|
| DELETE | /api/v1/code-links/{id} | |
| GET | /api/v1/issues/{key}/code | Linked pull requests, branches and commits (empty for customers) |
| POST | /api/v1/issues/{key}/code | Link code; the same URL again updates title and state |
Connected Apps 3
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/admin/oauth-grants | All app connections (OAuth grants), newest first |
| DELETE | /api/v1/admin/oauth-grants/{id} | Delete an app connection (revokes it, removes the record) |
| POST | /api/v1/admin/oauth-grants/{id}/revoke | Disconnect an app: its tokens stop working right away |
Designs 3
| Method | Path | Description |
|---|---|---|
| DELETE | /api/v1/designs/{id} | |
| GET | /api/v1/issues/{key}/designs | Design references: patterns, mockups, artifacts, links (empty for customers) |
| POST | /api/v1/issues/{key}/designs | Add a design reference; a mockup file is uploaded to the issue first |
Events 3
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/events | Live updates (server-sent events) |
| GET | /api/v1/presence | Who has issues or pages open now (not for customers) |
| PUT | /api/v1/presence | Heartbeat of a browser tab: the issue or page it shows and whether it has unsaved changes |
System 3
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issue-types | Issue types with their colours and icons (SVG, PNG) no token |
| GET | /api/v1/issue-types/{file} | The icon of an issue type: `story.svg`, or `story.png?size=32` (16 to 128 px) no token |
| GET | /api/v1/version | The running version: tag, commit and environment no token |
Admin 2
| Method | Path | Description |
|---|---|---|
| POST | /api/v1/admin/jira-import | Import a Jira export (dry run by default) |
| POST | /api/v1/admin/jira-import/attachments | Upload one attachment file of a Jira import (multipart: fields jiraId, issueKey, createdAt?, then file) |
Overview 2
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/issues/{key}/overview | The read-only Overview of an issue for you |
| POST | /api/v1/issues/{key}/visit | Record that you have the issue open; returns your visit before this one |
Permissions 2
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/permissions | What the project roles Customer and Member may do (any signed-in user, so clients can hide what is not allowed) |
| PUT | /api/v1/permissions | Set the Customer and Member permissions (workspace admins); valid in all projects |