Resolve best-matching Atlassian REST API endpoints from an inferred Jira or Confluence operation.
85
85%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Given an inferred operation string describing what the user wants to do, find and return all matching REST API
endpoints across all Atlassian OpenAPI specs.
Required operation the inferred intent text and target application (Confluence or Jira).
Fetch these specs at runtime (in parallel where possible) based on the operation.
| Priority | API Name | Version | Spec URL |
|---|---|---|---|
| 1 | Jira API | v3 | https://developer.atlassian.com/cloud/jira/platform/swagger-v3.v3.json |
| 2 | Jira API | v2 | https://developer.atlassian.com/cloud/jira/platform/swagger.v3.json |
| 1 | Confluence API | v2 | https://developer.atlassian.com/cloud/confluence/openapi-v2.v3.json |
| 2 | Confluence API | v1 | https://developer.atlassian.com/cloud/confluence/swagger.v3.json |
Decompose the operation string into:
Generate a set of search terms from these tokens. Also produce synonyms:
For each spec URL in the registry:
info.title and info.version (for display labeling).paths object — a map of { "/path/template": { "get": {...}, "post": {...}, ... } }.summary, description, operationId, tags, parameters, and
requestBody for matching and output.
application/json request bodies, recursively expand same-document $ref schemas before returning output.$ref as the primary request body schema output.originalRef only as optional traceability metadata.partiallyExpanded: true if expansion is incomplete.multipart/form-data request bodies for attachment/upload endpoints.For every (path, method) pair, compute a relevance score against the operation:
| Signal | Weight | Details |
|---|---|---|
Action verb match in summary | 3 | e.g., "create" in operation → "Create issue" in summary |
Resource noun match in summary | 3 | e.g., "issue" in operation → "Get issue" in summary |
Action verb match in operationId | 2 | camelCase parsing: createIssue → ["create", "issue"] |
| Resource noun match in path template | 2 | /rest/api/3/issue/{issueIdOrKey} |
| Key query param name match | 2 | e.g., operation mentions "JQL" → endpoint has jql query param |
| Key request body field match | 2 | e.g., operation mentions "transition" → body has transition.id field |
Match in description | 1 | Fallback for edge cases |
| Synonym expansion match | 2 | Apply synonyms from Step 1 |
| Tag match | 1 | e.g., tag "Issues" for issue operations |
Threshold: Include an endpoint if its total weighted score ≥ 5. Prefer precision to recall — a tight match is better than a loose one.
Important edge cases:
{issueIdOrKey},
{id}, or {pageId} parameters.The same logical endpoint often appears in both v2 and v3 of Jira (or v1 and v2 of Confluence) with identical or near-identical paths. Keep all versions — do not deduplicate across APIs. Each version is a separate entry in the output.
Within a single API spec, if the exact same (path, method) appears more than once (rare), keep only the first
occurrence.
Sort the final matched list by API version descending. Within the same API, sort by relevance score descending, then alphabetically by path.
Before returning results, normalize each matched endpoint's request body schema:
Request Body Schema (Expanded) for application/json payloads$ref as the request body schema outputOriginal Ref as metadata only (not as a substitute for the expanded schema)Return a structured response as a list of:
application/json)