openapi: 3.0.0 info: title: SourceForge Allura Admin 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: Admin description: Administrative operations including exports, tool installation, and webhooks paths: /rest/p/{project}/admin/export: post: operationId: exportProject summary: Export Project description: Submit a project export job. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Export job submitted content: application/json: schema: $ref: '#/components/schemas/ExportJobResponse' '400': description: Bad request '401': description: Unauthorized '503': description: Service unavailable - export already running /rest/p/{project}/admin/export_status: get: operationId: getExportStatus summary: Get Export Status description: Check the status of a project export job. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' responses: '200': description: Export job status content: application/json: schema: $ref: '#/components/schemas/ExportStatusResponse' '401': description: Unauthorized /rest/p/{project}/admin/install_tool: post: operationId: installTool summary: Install Tool description: Install a new tool into the project. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' requestBody: required: true content: application/x-www-form-urlencoded: schema: type: object properties: tool: type: string description: Tool name to install mount_point: type: string description: URL mount point for the tool mount_label: type: string description: Display label for the tool responses: '200': description: Tool installed successfully '400': description: Bad request '401': description: Unauthorized /rest/p/{project}/admin/{tool}/webhooks: get: operationId: listWebhooks summary: List Webhooks description: List all webhooks configured for a project tool. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' - name: tool in: path required: true description: Tool mount point schema: type: string responses: '200': description: List of webhooks content: application/json: schema: $ref: '#/components/schemas/WebhooksResponse' '401': description: Unauthorized /rest/p/{project}/admin/{tool}/webhooks/{type}: post: operationId: createWebhook summary: Create Webhook description: Create a new webhook for a project tool (supports repo-push for Git, SVN, Mercurial). tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' - name: tool in: path required: true schema: type: string - name: type in: path required: true description: Webhook type (e.g., repo-push) schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookRequest' responses: '200': description: Webhook created content: application/json: schema: $ref: '#/components/schemas/WebhookResponse' '400': description: Bad request '401': description: Unauthorized /rest/p/{project}/admin/{tool}/webhooks/{type}/{id}: post: operationId: updateWebhook summary: Update Webhook description: Update an existing webhook configuration. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' - name: tool in: path required: true schema: type: string - name: type in: path required: true schema: type: string - name: id in: path required: true description: Webhook identifier schema: type: string requestBody: required: true content: application/x-www-form-urlencoded: schema: $ref: '#/components/schemas/WebhookRequest' responses: '200': description: Webhook updated '400': description: Bad request '401': description: Unauthorized delete: operationId: deleteWebhook summary: Delete Webhook description: Delete a webhook configuration. tags: - Admin parameters: - $ref: '#/components/parameters/ProjectId' - name: tool in: path required: true schema: type: string - name: type in: path required: true schema: type: string - name: id in: path required: true schema: type: string responses: '204': description: Webhook deleted '401': description: Unauthorized '404': description: Webhook not found components: schemas: WebhookResponse: type: object properties: webhook: $ref: '#/components/schemas/Webhook' ExportStatusResponse: type: object properties: status: type: string download_url: type: string format: uri Webhook: type: object properties: id: type: string url: type: string format: uri type: type: string active: type: boolean created: type: string format: date-time ExportJobResponse: type: object properties: status: type: string job_id: type: string WebhooksResponse: type: object properties: webhooks: type: array items: $ref: '#/components/schemas/Webhook' WebhookRequest: type: object required: - url properties: url: type: string format: uri description: Webhook callback URL secret: type: string description: Optional secret for webhook signature verification parameters: ProjectId: name: project in: path required: true description: Project shortname/identifier schema: type: string securitySchemes: BearerAuth: type: http scheme: bearer description: OAuth2 Bearer token OAuth1: type: apiKey in: header name: Authorization description: OAuth 1.0 authorization header