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