naftiko: 1.0.0-alpha2 info: label: SourceForge Allura API — Blog description: 'SourceForge Allura API — Blog. 4 operations. Lead operation: List Blog Posts. Self-contained Naftiko capability covering one Sourceforge business surface.' tags: - Sourceforge - Blog created: '2026-05-19' modified: '2026-05-19' binds: - namespace: env keys: SOURCEFORGE_API_KEY: SOURCEFORGE_API_KEY capability: consumes: - type: http namespace: allura-blog baseUri: https://sourceforge.net description: SourceForge Allura API — Blog business capability. Self-contained, no shared references. resources: - name: rest-p-project-blog path: /rest/p/{project}/{blog} operations: - name: listblogposts method: GET description: List Blog Posts outputRawFormat: json outputParameters: - name: result type: object value: $. - name: createblogpost method: POST description: Create Blog Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: body in: body type: object description: Request body (JSON). required: true - name: rest-p-project-blog-year-month-title path: /rest/p/{project}/{blog}/{year}/{month}/{title} operations: - name: getblogpost method: GET description: Get Blog Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: year in: path type: integer required: true - name: month in: path type: integer required: true - name: title in: path type: string required: true - name: updateblogpost method: POST description: Update Blog Post outputRawFormat: json outputParameters: - name: result type: object value: $. inputParameters: - name: year in: path type: integer required: true - name: month in: path type: integer required: true - name: title in: path type: string required: true - name: body in: body type: object description: Request body (JSON). required: true authentication: type: bearer token: '{{env.SOURCEFORGE_API_KEY}}' exposes: - type: rest namespace: allura-blog-rest port: 8080 description: REST adapter for SourceForge Allura API — Blog. One Spectral-compliant resource per consumed operation, prefixed with /v1. resources: - path: /v1/p/{project}/{blog} name: rest-p-project-blog description: REST surface for rest-p-project-blog. operations: - method: GET name: listblogposts description: List Blog Posts call: allura-blog.listblogposts outputParameters: - type: object mapping: $. - method: POST name: createblogpost description: Create Blog Post call: allura-blog.createblogpost with: body: rest.body outputParameters: - type: object mapping: $. - path: /v1/p/{project}/{blog}/{year}/{month}/{title} name: rest-p-project-blog-year-month-title description: REST surface for rest-p-project-blog-year-month-title. operations: - method: GET name: getblogpost description: Get Blog Post call: allura-blog.getblogpost with: year: rest.year month: rest.month title: rest.title outputParameters: - type: object mapping: $. - method: POST name: updateblogpost description: Update Blog Post call: allura-blog.updateblogpost with: year: rest.year month: rest.month title: rest.title body: rest.body outputParameters: - type: object mapping: $. - type: mcp namespace: allura-blog-mcp port: 9090 transport: http description: MCP adapter for SourceForge Allura API — Blog. One tool per consumed operation, routed inline through this capability's consumes block. tools: - name: list-blog-posts description: List Blog Posts hints: readOnly: true destructive: false idempotent: true call: allura-blog.listblogposts outputParameters: - type: object mapping: $. - name: create-blog-post description: Create Blog Post hints: readOnly: false destructive: false idempotent: false call: allura-blog.createblogpost with: body: tools.body outputParameters: - type: object mapping: $. - name: get-blog-post description: Get Blog Post hints: readOnly: true destructive: false idempotent: true call: allura-blog.getblogpost with: year: tools.year month: tools.month title: tools.title outputParameters: - type: object mapping: $. - name: update-blog-post description: Update Blog Post hints: readOnly: false destructive: false idempotent: false call: allura-blog.updateblogpost with: year: tools.year month: tools.month title: tools.title body: tools.body outputParameters: - type: object mapping: $.