openapi: 3.0.0 info: title: SourceForge Allura Admin Tracker API description: The SourceForge REST API provides programmatic access to project management, wikis, issue trackers, discussions, blogs, and administrative functions. All endpoints are prefixed with /rest/ and follow the project tool path pattern. Supports OAuth 2.0 and OAuth 1.0 authentication. version: v1 contact: name: SourceForge Support url: https://sourceforge.net/p/forge/documentation/API/ license: name: Apache License 2.0 url: https://www.apache.org/licenses/LICENSE-2.0 servers: - url: https://sourceforge.net description: SourceForge REST API security: - BearerAuth: [] tags: - name: Tracker description: Issue and ticket tracking paths: /rest/p/{project}/{tracker}: get: operationId: listTickets summary: List Tickets description: List all tickets in the project tracker (paginated). tags: - Tracker parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/TrackerTool' - name: page in: query required: false description: Page number (default 0) schema: type: integer default: 0 - name: limit in: query required: false description: Results per page (default 25) schema: type: integer default: 25 responses: '200': description: List of tickets content: application/json: schema: $ref: '#/components/schemas/TicketsResponse' /rest/p/{project}/{tracker}/new: post: operationId: createTicket summary: Create Ticket description: Create a new issue or ticket in the project tracker. tags: - Tracker parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/TrackerTool' requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TicketRequest' responses: '200': description: Ticket created successfully content: application/json: schema: $ref: '#/components/schemas/TicketResponse' '400': description: Bad request '401': description: Unauthorized /rest/p/{project}/{tracker}/{ticketNumber}: get: operationId: getTicket summary: Get Ticket description: Retrieve details for a specific ticket by number. tags: - Tracker parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/TrackerTool' - name: ticketNumber in: path required: true description: Ticket number schema: type: integer responses: '200': description: Ticket details content: application/json: schema: $ref: '#/components/schemas/TicketResponse' '404': description: Ticket not found /rest/p/{project}/{tracker}/{ticketNumber}/save: post: operationId: updateTicket summary: Update Ticket description: Update an existing ticket's details. tags: - Tracker parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/TrackerTool' - name: ticketNumber in: path required: true description: Ticket number schema: type: integer requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/TicketRequest' responses: '200': description: Ticket updated successfully content: application/json: schema: $ref: '#/components/schemas/TicketResponse' '400': description: Bad request '401': description: Unauthorized /rest/p/{project}/{tracker}/search: get: operationId: searchTickets summary: Search Tickets description: Search tickets in the tracker with filtering. tags: - Tracker parameters: - $ref: '#/components/parameters/ProjectId' - $ref: '#/components/parameters/TrackerTool' - name: q in: query required: false description: Search query string schema: type: string - name: page in: query required: false schema: type: integer default: 0 - name: limit in: query required: false schema: type: integer default: 25 responses: '200': description: Search results content: application/json: schema: $ref: '#/components/schemas/TicketsResponse' components: parameters: ProjectId: name: project in: path required: true description: Project shortname/identifier schema: type: string TrackerTool: name: tracker in: path required: true description: Tracker tool mount point (e.g., tickets, bugs) schema: type: string schemas: TicketRequest: type: object properties: ticket_form.summary: type: string description: Issue title ticket_form.description: type: string description: Detailed description ticket_form.status: type: string ticket_form.assigned_to: type: string ticket_form.labels: type: string description: Comma-separated tags ticket_form.private: type: boolean TicketResponse: type: object properties: ticket: $ref: '#/components/schemas/Ticket' Ticket: type: object properties: ticket_num: type: integer summary: type: string description: type: string status: type: string assigned_to: type: string labels: type: array items: type: string created_date: type: string format: date-time mod_date: type: string format: date-time private: type: boolean TicketsResponse: type: object properties: tickets: type: array items: $ref: '#/components/schemas/Ticket' count: type: integer page: type: integer limit: type: integer securitySchemes: BearerAuth: type: http scheme: bearer description: OAuth2 Bearer token OAuth1: type: apiKey in: header name: Authorization description: OAuth 1.0 authorization header