naftiko: "1.0.0-alpha2" info: title: Gravitee FinOps Bridge description: >- Pulls Gravitee analytics — request counts, latency percentiles, error rates, AI-token consumption, per-app + per-plan usage — into Naftiko's per-call cost attribution model. Closes the loop between "Gravitee gateway saw N requests + M tokens" and "Naftiko knows what each capability call cost the customer." tags: - Naftiko - Gravitee - Partnership - Analytics - FinOps - Cost-Attribution created: '2026-05-15' modified: '2026-05-15' binds: - namespace: gravitee-env description: Gravitee APIM Management endpoint + 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: env-analytics path: '/management/v2/environments/{{env_id}}/analytics' operations: - name: get-env-analytics method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: from, in: query, required: false } - { name: to, in: query, required: false } - { name: type, in: query, required: false } - name: api-analytics path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/analytics' operations: - name: get-api-analytics method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } - { name: from, in: query, required: false } - { name: to, in: query, required: false } - { name: type, in: query, required: false } - name: ai-token-usage path: '/management/v2/environments/{{env_id}}/ai/token-usage' operations: - name: get-ai-token-usage method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: from, in: query, required: false } - { name: to, in: query, required: false } - { name: model, in: query, required: false } - name: subscription-usage path: '/management/v2/environments/{{env_id}}/apis/{{api_id}}/subscriptions/{{sub_id}}/analytics' operations: - name: get-subscription-usage method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: api_id, in: path, required: true } - { name: sub_id, in: path, required: true } - { name: from, in: query, required: false } - { name: to, in: query, required: false } - name: audit path: '/management/v2/environments/{{env_id}}/audit' operations: - name: list-audit-events method: GET inputParameters: - { name: env_id, in: path, required: true } - { name: from, in: query, required: false } - { name: to, in: query, required: false } exposes: - type: rest address: 0.0.0.0 port: 8080 namespace: gravitee-finops-bridge-rest description: REST surface for pulling Gravitee analytics + AI token usage into Naftiko cost attribution. resources: - name: env-analytics path: '/environments/{env_id}/analytics' operations: - name: get-env-analytics method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: from, in: query, type: string, required: false } - { name: to, in: query, type: string, required: false } - { name: type, in: query, type: string, required: false } call: gravitee.get-env-analytics - name: api-analytics path: '/environments/{env_id}/apis/{api_id}/analytics' operations: - name: get-api-analytics method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } - { name: from, in: query, type: string, required: false } - { name: to, in: query, type: string, required: false } - { name: type, in: query, type: string, required: false } call: gravitee.get-api-analytics - name: ai-token-usage path: '/environments/{env_id}/ai/token-usage' operations: - name: get-ai-token-usage method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: from, in: query, type: string, required: false } - { name: to, in: query, type: string, required: false } - { name: model, in: query, type: string, required: false } call: gravitee.get-ai-token-usage - name: subscription-usage path: '/environments/{env_id}/apis/{api_id}/subscriptions/{sub_id}/analytics' operations: - name: get-subscription-usage method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: api_id, in: path, type: string, required: true } - { name: sub_id, in: path, type: string, required: true } - { name: from, in: query, type: string, required: false } - { name: to, in: query, type: string, required: false } call: gravitee.get-subscription-usage - name: audit path: '/environments/{env_id}/audit' operations: - name: list-audit-events method: GET inputParameters: - { name: env_id, in: path, type: string, required: true } - { name: from, in: query, type: string, required: false } - { name: to, in: query, type: string, required: false } call: gravitee.list-audit-events - type: mcp address: 0.0.0.0 port: 3010 namespace: gravitee-finops-bridge-mcp description: MCP server exposing Gravitee analytics + AI token usage as agent-callable cost-attribution tools. tools: - name: get-env-analytics description: Get environment-level analytics from Gravitee (request counts, latency, errors, status codes). hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: from, type: string, required: false } - { name: to, type: string, required: false } - { name: type, type: string, required: false } call: gravitee.get-env-analytics - name: get-api-analytics description: Get per-API analytics from Gravitee (request counts, latency, errors). hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } - { name: from, type: string, required: false } - { name: to, type: string, required: false } - { name: type, type: string, required: false } call: gravitee.get-api-analytics - name: get-ai-token-usage description: Get Gravitee AI/LLM token usage stats per model + period (drives Naftiko AI cost attribution). hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: from, type: string, required: false } - { name: to, type: string, required: false } - { name: model, type: string, required: false } call: gravitee.get-ai-token-usage - name: get-subscription-usage description: Get per-subscription usage analytics (drives per-customer cost rollup). hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: api_id, type: string, required: true } - { name: sub_id, type: string, required: true } - { name: from, type: string, required: false } - { name: to, type: string, required: false } call: gravitee.get-subscription-usage - name: list-audit-events description: List Gravitee audit events for compliance + change attribution. hints: { readOnly: true } inputParameters: - { name: env_id, type: string, required: true } - { name: from, type: string, required: false } - { name: to, type: string, required: false } call: gravitee.list-audit-events