# Gitea-compatible API coverage

Source: the OpenAPI contract served by the configured Gitea 1.25.4 instance.
It contains 299 paths, 467 operations, 243 read/query operations, and 216 schema
definitions.

`gotcha_gitea` encapsulates the generated Gitea 1.25 client. Its concrete
`Client` methods own the supported Gitea and Forgejo workflows and
relationships, while
`gotcha_gitea::models` exposes generated response records for presentation.
Generated API modules and client configuration are deliberately private so the
CLI and app cannot duplicate Gitea behavior.

Forgejo uses operations from its advertised Gitea 1.22-compatible `/api/v1`
surface. Gotcha must not assume that newer operations from its generated Gitea
1.25 client exist on Forgejo: provider-specific endpoints and any operation
outside the shared contract are routed inside `gotcha_gitea::Client`.

| Domain | Queries | Other actions | Generated client | CLI queries | CLI writes | Capabilities |
| --- | ---: | ---: | --- | ---: | ---: | --- |
| activitypub | 1 | 1 | Complete | 0 | 0 | Person actors and inbox federation |
| admin | 14 | 18 | Complete | 0 | 0 | Users, organizations, email, hooks, cron, unadopted repositories, Actions runners/jobs/runs |
| issue | 23 | 46 | Complete | 5 | 7 | Issues, comments, attachments, reactions, labels, milestones, dependencies, subscriptions, time tracking, pins |
| miscellaneous | 10 | 3 | Complete | 1 | 0 | Version, templates, licenses, node info, signing keys, Markdown/markup rendering |
| notification | 4 | 3 | Complete | 0 | 0 | Notification threads, unread checks, read state |
| organization | 33 | 33 | Complete | 0 | 0 | Organizations, members, teams, repositories, labels, hooks, blocks, activities, Actions |
| package | 5 | 3 | Complete | 0 | 0 | Packages, versions, files, linking and deletion |
| repository | 105 | 86 | Complete | 6 | 3 | Search, repositories, branches, protections, commits, content, refs, tags, releases, pull requests, reviews, collaborators, hooks, wiki, mirrors, Actions |
| settings | 4 | 0 | Complete | 0 | 0 | Instance API, attachment, repository, and UI settings |
| user | 44 | 31 | Complete | 2 | 0 | Users, profile, following, stars, watches, keys, GPG, email, hooks, OAuth, tokens, blocks, Actions, tracked time |
| **Total** | **243** | **224** | **467/467** | **14/243** | **10/224** | |

## CLI status

Typed text commands currently implemented include:

- `server version` → `getVersion`
- `user show` → `userGetCurrent`
- `repo list` → `userCurrentListRepos`
- `repo show` → `repoGet`
- issue list with state, kind, keyword, label, milestone, author, assignee,
  mention, date, and pagination filters; show/create/edit/close/reopen/delete;
  comments/comment
- milestone list/show/create/edit/delete
- pull list/show/create/edit/merge/commits/files/reviews

The remaining 229 query operations and 214 mutation operations are represented
by the private generated client but do not yet have shared domain methods or
purpose-built CLI commands. Add new workflows to `gotcha_gitea::Client` before
using them in either frontend. `api request` remains an explicit JSON escape
hatch; it is not counted as typed CLI coverage.
