naftiko: "1.0.0-alpha2" info: title: Gravitee APIs Discovery description: >- Pulls live APIs (v2 + v4) from a Gravitee APIM Management instance into Naftiko Fleet so Backstage shows every Gravitee-managed API alongside Naftiko-declared capabilities — including state, lifecycle, plans, and entrypoint config. Single pane of glass for "what API surface is governed and gated by Gravitee." tags: - Naftiko - Gravitee - Partnership - Discovery - APIM - Backstage created: '2026-05-15' modified: '2026-05-15' binds: - namespace: gravitee-env description: Gravitee APIM Management base URL + bearer token (organization API token). keys: GRAVITEE_APIM_BASE: GRAVITEE_APIM_BASE GRAVITEE_APIM_TOKEN: GRAVITEE_APIM_TOKEN capability: consumes: - namespace: gravitee type: http baseUri: '{{GRAVITEE_APIM_BASE}}' authentication: type: bearer token: '{{GRAVITEE_APIM_TOKEN}}' resources: - name: list-apis path: '/management/v2/environments/{{env_id}}/apis' operations: - name: list-apis method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: page, in: query, type: integer, required: false } - { name: perPage, in: query, type: integer, required: false } - name: api path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}' operations: - name: get-api method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } - name: api-deploy path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/deployments' operations: - name: deploy-api method: POST inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } - name: api-state path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/_start' operations: - name: start-api method: POST inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } - name: api-stop path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/_stop' operations: - name: stop-api method: POST inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } exposes: - type: rest address: 0.0.0.0 port: 8080 namespace: gravitee-apis-discovery-rest description: REST surface for Naftiko Fleet to discover Gravitee-managed APIs. resources: - name: list-apis path: '/environments/{env_id}/apis' operations: - name: list-apis method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: page, in: query, type: integer, required: false } - { name: perPage, in: query, type: integer, required: false } call: gravitee.list-apis - name: api path: '/environments/{env_id}/apis/{api_id}' operations: - name: get-api method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } call: gravitee.get-api - name: deploy-api path: '/environments/{env_id}/apis/{api_id}/deploy' operations: - name: deploy-api method: POST inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } call: gravitee.deploy-api - name: start-api path: '/environments/{env_id}/apis/{api_id}/start' operations: - name: start-api method: POST inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } call: gravitee.start-api - name: stop-api path: '/environments/{env_id}/apis/{api_id}/stop' operations: - name: stop-api method: POST inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } call: gravitee.stop-api - type: mcp address: 0.0.0.0 port: 3010 namespace: gravitee-apis-discovery-mcp description: MCP server exposing Gravitee API discovery + lifecycle to AI agents. tools: - name: list-apis description: List Gravitee-managed APIs in an environment. hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true, description: Gravitee environment ID. } - { name: page, type: integer, required: false, description: Page number. } - { name: perPage, type: integer, required: false, description: Page size. } call: gravitee.list-apis - name: get-api description: Get a single Gravitee API with full definition (state, lifecycle, entrypoints, plans). hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } call: gravitee.get-api - name: deploy-api description: Deploy a Gravitee API to its gateways. hints: { destructiveHint: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } call: gravitee.deploy-api - name: start-api description: Start a Gravitee API (move from STOPPED to STARTED state). hints: { destructiveHint: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } call: gravitee.start-api - name: stop-api description: Stop a Gravitee API (move to STOPPED state). hints: { destructiveHint: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } call: gravitee.stop-api