io.enterpriseai.resources.FinopsClient
Source: sdks/java/enterprise-ai-java/src/main/java/io/enterpriseai/resources/FinopsClient.java. Back to the Java SDK reference index.
This page is generated by tools/docs/gen_sdk_reference.py from the SDK sources and the OpenAPI text folders. Do not edit it by hand: change the source and regenerate.
Class FinopsClient
FinOps: price cards, FX, usage, estimation, GPU allocation, reconciliation and alerts.
Constructor FinopsClient
FinopsClient(Transport transport)
Creates the client on the shared transport; EnterpriseAIClient builds it and exposes it through the accessor of the same name.
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
transport | Transport | yes | Transport shared by the sub-clients of one client. |
FinopsClient.alerts
JsonNode alerts()
List the FinOps alerts. Budget, quota and billing variance alerts of the tenant, newest first, with their message in the language of the request. One page only. Requires a reader role and a tenant principal.
Route: /v1/finops/alerts (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "List the FinOps alerts".
Raises: the typed errors of the transport (Errors).
FinopsClient.alerts
JsonNode alerts(Map<String, ?> query)
List the FinOps alerts. Budget, quota and billing variance alerts of the tenant, newest first, with their message in the language of the request. One page only. Requires a reader role and a tenant principal.
Route: /v1/finops/alerts (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "List the FinOps alerts".
Raises: the typed errors of the transport (Errors).
FinopsClient.createAllocationPolicy
JsonNode createAllocationPolicy(Object body)
Create a GPU allocation policy. Creates a policy that prices the GPU samples of the matching deployments and answers 201. The most specific deployment pattern wins. Cost of one sample of s seconds at P watts: GPU s / 3600 * gpu_hourly_cost, energy P * s / 3600 / 1000 * energy_kwh_price * pue, storage storage_gb * storage_gb_month_price * (s / 3600) / 730, total multiplied by 1 + overhead_pct / 100. Audited. Requires platform_admin.
Route: /v1/finops/allocation-policies (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The new allocation policy. |
Returns: JsonNode. Decoded JSON answer of the operation "Create a GPU allocation policy".
Raises: the typed errors of the transport (Errors).
FinopsClient.createAllocationPolicy
JsonNode createAllocationPolicy(Object body, RequestOptions options)
Create a GPU allocation policy. Creates a policy that prices the GPU samples of the matching deployments and answers 201. The most specific deployment pattern wins. Cost of one sample of s seconds at P watts: GPU s / 3600 * gpu_hourly_cost, energy P * s / 3600 / 1000 * energy_kwh_price * pue, storage storage_gb * storage_gb_month_price * (s / 3600) / 730, total multiplied by 1 + overhead_pct / 100. Audited. Requires platform_admin.
Route: /v1/finops/allocation-policies (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The new allocation policy. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Create a GPU allocation policy".
Raises: the typed errors of the transport (Errors).
FinopsClient.createMediaPrice
JsonNode createMediaPrice(Object body)
Add a media price revision. Adds a dated price revision for a media unit and answers 201. A revision never rewrites an older one. The same unit, provider, resource and start date answers 409 media_price_exists; an invalid field 422 media_price_invalid. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/media-prices (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | unit (audio_second, image, video_second, gpu_second, storage_gb_month), provider, unit_price (number, at least 0), currency (ISO 4217), source (where the price comes from, required), optional resource (default *, the whole provider) and effective_from (ISO 8601, default now). |
Returns: JsonNode. Decoded JSON answer of the operation "Add a media price revision".
Raises: the typed errors of the transport (Errors).
FinopsClient.createMediaPrice
JsonNode createMediaPrice(Object body, RequestOptions options)
Add a media price revision. Adds a dated price revision for a media unit and answers 201. A revision never rewrites an older one. The same unit, provider, resource and start date answers 409 media_price_exists; an invalid field 422 media_price_invalid. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/media-prices (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | unit (audio_second, image, video_second, gpu_second, storage_gb_month), provider, unit_price (number, at least 0), currency (ISO 4217), source (where the price comes from, required), optional resource (default *, the whole provider) and effective_from (ISO 8601, default now). | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Add a media price revision".
Raises: the typed errors of the transport (Errors).
FinopsClient.createPriceCard
JsonNode createPriceCard(Object body)
Create a price card. Creates a price card for the tenant (or a global one for a platform administrator without tenant) and answers 201. The card in force for the same provider, model pattern, region and usage type is closed at the new start date; a card starting later in the new validity answers 409 conflict. Unknown price keys, negative prices or a card without any price answer 422 price_card_invalid. Audited. Requires finops or tenant_admin (platform_admin for a global card).
Route: /v1/finops/price-cards (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The new price card. |
Returns: JsonNode. Decoded JSON answer of the operation "Create a price card".
Raises: the typed errors of the transport (Errors).
FinopsClient.createPriceCard
JsonNode createPriceCard(Object body, RequestOptions options)
Create a price card. Creates a price card for the tenant (or a global one for a platform administrator without tenant) and answers 201. The card in force for the same provider, model pattern, region and usage type is closed at the new start date; a card starting later in the new validity answers 409 conflict. Unknown price keys, negative prices or a card without any price answer 422 price_card_invalid. Audited. Requires finops or tenant_admin (platform_admin for a global card).
Route: /v1/finops/price-cards (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The new price card. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Create a price card".
Raises: the typed errors of the transport (Errors).
FinopsClient.estimate
JsonNode estimate(Object body)
Estimate the cost of a call. Prices a planned call with the price card in force (most specific model pattern and region first), converts it to the tenant currency and checks it against the matching quotas, without reserving anything. Reasoning tokens are added according to the billing mode of the card. No card answers 404 price_card_not_found; a missing FX rate 422 fx_rate_missing. Requires a usage or reader role and a tenant principal.
Route: /v1/finops/estimate (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The planned call to price. |
Returns: JsonNode. Decoded JSON answer of the operation "Estimate the cost of a call".
Raises: the typed errors of the transport (Errors).
FinopsClient.estimate
JsonNode estimate(Object body, RequestOptions options)
Estimate the cost of a call. Prices a planned call with the price card in force (most specific model pattern and region first), converts it to the tenant currency and checks it against the matching quotas, without reserving anything. Reasoning tokens are added according to the billing mode of the card. No card answers 404 price_card_not_found; a missing FX rate 422 fx_rate_missing. Requires a usage or reader role and a tenant principal.
Route: /v1/finops/estimate (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The planned call to price. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Estimate the cost of a call".
Raises: the typed errors of the transport (Errors).
FinopsClient.estimateMediaCosts
JsonNode estimateMediaCosts(Object body)
Estimate media costs. Prices up to 100 media items with the revision in force at their date (exact resource first, then the provider wide * revision). An item without price comes back with amount: null, status: unavailable and reason: price_unknown; total is given only when every item is priced in one currency (complete: true). Invalid items answer 422 media_price_invalid with the field. Requires a reader role or agent, and a tenant principal.
Route: /v1/finops/media-costs/estimate (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | items: 1 to 100 objects with unit (audio_second, image, video_second, gpu_second, storage_gb_month), provider, quantity (positive number), optional resource (default *) and at (ISO 8601, default now). |
Returns: JsonNode. Decoded JSON answer of the operation "Estimate media costs".
Raises: the typed errors of the transport (Errors).
FinopsClient.estimateMediaCosts
JsonNode estimateMediaCosts(Object body, RequestOptions options)
Estimate media costs. Prices up to 100 media items with the revision in force at their date (exact resource first, then the provider wide * revision). An item without price comes back with amount: null, status: unavailable and reason: price_unknown; total is given only when every item is priced in one currency (complete: true). Invalid items answer 422 media_price_invalid with the field. Requires a reader role or agent, and a tenant principal.
Route: /v1/finops/media-costs/estimate (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | items: 1 to 100 objects with unit (audio_second, image, video_second, gpu_second, storage_gb_month), provider, quantity (positive number), optional resource (default *) and at (ISO 8601, default now). | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Estimate media costs".
Raises: the typed errors of the transport (Errors).
FinopsClient.fxRates
JsonNode fxRates()
List the FX rates. Exchange rates (global ones and those of the tenant) by base, quote and newest date first, with their source. Requires a reader role.
Route: /v1/finops/fx-rates (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "List the FX rates".
Raises: the typed errors of the transport (Errors).
FinopsClient.fxRates
JsonNode fxRates(Map<String, ?> query)
List the FX rates. Exchange rates (global ones and those of the tenant) by base, quote and newest date first, with their source. Requires a reader role.
Route: /v1/finops/fx-rates (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "List the FX rates".
Raises: the typed errors of the transport (Errors).
FinopsClient.getPriceCard
JsonNode getPriceCard(String id)
Get a price card. One price card with its prices, tiers, validity and status. Unknown id: 404 not_found. Requires a reader role.
Route: /v1/finops/price-cards/{card_id} (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
id | String | yes | Identifier (UUID) of the price card. |
Returns: JsonNode. Decoded JSON answer of the operation "Get a price card".
Raises: the typed errors of the transport (Errors).
FinopsClient.gpuAllocation
JsonNode gpuAllocation()
Read the GPU cost allocation. Cost of the local GPU deployments over the window, computed from the GPU samples and the allocation policies, and shared between tenants in proportion to the GPU seconds of their usage events on each deployment. A tenant sees its own share; a platform administrator without tenant sees every tenant. Requires a reader role.
Route: /v1/finops/gpu/allocation (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "Read the GPU cost allocation".
Raises: the typed errors of the transport (Errors).
FinopsClient.gpuAllocation
JsonNode gpuAllocation(Map<String, ?> query)
Read the GPU cost allocation. Cost of the local GPU deployments over the window, computed from the GPU samples and the allocation policies, and shared between tenants in proportion to the GPU seconds of their usage events on each deployment. A tenant sees its own share; a platform administrator without tenant sees every tenant. Requires a reader role.
Route: /v1/finops/gpu/allocation (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "Read the GPU cost allocation".
Raises: the typed errors of the transport (Errors).
FinopsClient.gpuSamples
JsonNode gpuSamples(Object body)
Ingest GPU samples. Stores GPU utilization samples (typically from DCGM), 1 to 10000 per call, used for the GPU cost allocation. One audit event per batch. Requires platform_admin.
Route: /v1/finops/gpu/samples (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | Batch of GPU samples. |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest GPU samples".
Raises: the typed errors of the transport (Errors).
FinopsClient.gpuSamples
JsonNode gpuSamples(Object body, RequestOptions options)
Ingest GPU samples. Stores GPU utilization samples (typically from DCGM), 1 to 10000 per call, used for the GPU cost allocation. One audit event per batch. Requires platform_admin.
Route: /v1/finops/gpu/samples (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | Batch of GPU samples. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest GPU samples".
Raises: the typed errors of the transport (Errors).
FinopsClient.importReconciliation
JsonNode importReconciliation(Object body)
Import a billing export. Parses a billing export of a provider, converts every line to the tenant currency and stores it, then answers 201 with the import (line count, total, period). An export that cannot be read answers 422 import_invalid with the reason. Run the reconciliation afterwards. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/reconciliation/imports (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The billing export and its format. |
Returns: JsonNode. Decoded JSON answer of the operation "Import a billing export".
Raises: the typed errors of the transport (Errors).
FinopsClient.importReconciliation
JsonNode importReconciliation(Object body, RequestOptions options)
Import a billing export. Parses a billing export of a provider, converts every line to the tenant currency and stores it, then answers 201 with the import (line count, total, period). An export that cannot be read answers 422 import_invalid with the reason. Run the reconciliation afterwards. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/reconciliation/imports (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The billing export and its format. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Import a billing export".
Raises: the typed errors of the transport (Errors).
FinopsClient.ingestUsage
JsonNode ingestUsage(Object body)
Ingest a usage event. Validates a Usage Event v1, prices it (measured cost in the tenant currency) and stores it; answers 201, or 200 with duplicate: true when the same event_id was already stored. An invalid event answers 422 usage_event_invalid with the errors; an event of another tenant 403 usage_tenant_mismatch. One audit event per call, never the payload. Requires finops, tenant_admin, agent or developer, and a tenant principal.
Route: /v1/finops/usage (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | One Usage Event v1 (event_id, tenant_id, occurred_at, usage_type, units, pricing, scope identifiers...), as defined by the contract. |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest a usage event".
Raises: the typed errors of the transport (Errors).
FinopsClient.ingestUsage
JsonNode ingestUsage(Object body, RequestOptions options)
Ingest a usage event. Validates a Usage Event v1, prices it (measured cost in the tenant currency) and stores it; answers 201, or 200 with duplicate: true when the same event_id was already stored. An invalid event answers 422 usage_event_invalid with the errors; an event of another tenant 403 usage_tenant_mismatch. One audit event per call, never the payload. Requires finops, tenant_admin, agent or developer, and a tenant principal.
Route: /v1/finops/usage (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | One Usage Event v1 (event_id, tenant_id, occurred_at, usage_type, units, pricing, scope identifiers...), as defined by the contract. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest a usage event".
Raises: the typed errors of the transport (Errors).
FinopsClient.ingestUsageBatch
JsonNode ingestUsageBatch(Object body)
Ingest usage events in batch. Ingests up to 1000 usage events, each in its own savepoint: the answer lists every event as created, duplicate or error (with code, message and details) and the counts. More than 1000 events answer 413 batch_too_large; a body without an events list 422 validation_error. One audit event per batch. Requires finops, tenant_admin, agent or developer, and a tenant principal.
Route: /v1/finops/usage/batch (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | {events: [...]}: a list of Usage Event v1 objects. |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest usage events in batch".
Raises: the typed errors of the transport (Errors).
FinopsClient.ingestUsageBatch
JsonNode ingestUsageBatch(Object body, RequestOptions options)
Ingest usage events in batch. Ingests up to 1000 usage events, each in its own savepoint: the answer lists every event as created, duplicate or error (with code, message and details) and the counts. More than 1000 events answer 413 batch_too_large; a body without an events list 422 validation_error. One audit event per batch. Requires finops, tenant_admin, agent or developer, and a tenant principal.
Route: /v1/finops/usage/batch (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | {events: [...]}: a list of Usage Event v1 objects. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Ingest usage events in batch".
Raises: the typed errors of the transport (Errors).
FinopsClient.listAllocationPolicies
Page<JsonNode> listAllocationPolicies()
List the GPU allocation policies. Policies that turn GPU samples into a cost (GPU hourly cost, energy, PUE, storage and overhead) per deployment pattern and GPU model. Requires a reader role.
Route: /v1/finops/allocation-policies (GET).
This element takes no parameter.
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.listMediaPrices
JsonNode listMediaPrices()
List the media prices. Dated media price revisions of the tenant by unit, provider, resource and date, with the list of supported units. An unknown unit answers 422 media_price_invalid. Requires a reader role and a tenant principal.
Route: /v1/finops/media-prices (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "List the media prices".
Raises: the typed errors of the transport (Errors).
FinopsClient.listMediaPrices
JsonNode listMediaPrices(Map<String, ?> query)
List the media prices. Dated media price revisions of the tenant by unit, provider, resource and date, with the list of supported units. An unknown unit answers 422 media_price_invalid. Requires a reader role and a tenant principal.
Route: /v1/finops/media-prices (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "List the media prices".
Raises: the typed errors of the transport (Errors).
FinopsClient.listPriceCards
Page<JsonNode> listPriceCards()
List the price cards. Price cards visible to the caller (global and tenant ones), by provider, model pattern and start date. Only active cards unless include_retired or at is given. One page only. Requires a reader role.
Route: /v1/finops/price-cards (GET).
This element takes no parameter.
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.listPriceCards
Page<JsonNode> listPriceCards(Map<String, ?> query)
List the price cards. Price cards visible to the caller (global and tenant ones), by provider, model pattern and start date. Only active cards unless include_retired or at is given. One page only. Requires a reader role.
Route: /v1/finops/price-cards (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.listUsage
Page<JsonNode> listUsage()
List the usage events. Usage events of the tenant with their units and their estimated, measured and billed costs, filtered and paginated. Requires a reader role and a tenant principal.
Route: /v1/finops/usage (GET).
This element takes no parameter.
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.listUsage
Page<JsonNode> listUsage(Map<String, ?> query)
List the usage events. Usage events of the tenant with their units and their estimated, measured and billed costs, filtered and paginated. Requires a reader role and a tenant principal.
Route: /v1/finops/usage (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.reconciliationImports
Page<JsonNode> reconciliationImports()
List the billing imports. Billing exports imported by the tenant, with source, provider, file name, number of lines, total amount, currency and period. Requires a reader role and a tenant principal.
Route: /v1/finops/reconciliation/imports (GET).
This element takes no parameter.
Returns: Page<JsonNode>. A Page: One page of a cursor paginated collection ({"items": [...], "next_cursor": "..."|null}).
Raises: the typed errors of the transport (Errors).
FinopsClient.reconciliationReport
JsonNode reconciliationReport()
Read the reconciliation report. Measured against billed cost over the period, with the variance, the unmatched billing lines and the last 100 variance alerts. A from after to answers 422 validation_error. Requires a reader role and a tenant principal.
Route: /v1/finops/reconciliation/report (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "Read the reconciliation report".
Raises: the typed errors of the transport (Errors).
FinopsClient.reconciliationReport
JsonNode reconciliationReport(Map<String, ?> query)
Read the reconciliation report. Measured against billed cost over the period, with the variance, the unmatched billing lines and the last 100 variance alerts. A from after to answers 422 validation_error. Requires a reader role and a tenant principal.
Route: /v1/finops/reconciliation/report (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "Read the reconciliation report".
Raises: the typed errors of the transport (Errors).
FinopsClient.retirePriceCard
JsonNode retirePriceCard(String id)
Retire a price card. Marks the card retired and ends its validity at at (default now) when it was still open after that date. Past usage keeps the price it was costed with. Unknown id: 404 not_found. Audited. Requires finops or tenant_admin.
Route: /v1/finops/price-cards/{card_id}/retire (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
id | String | yes | Identifier (UUID) of the price card. |
Returns: JsonNode. Decoded JSON answer of the operation "Retire a price card".
Raises: the typed errors of the transport (Errors).
FinopsClient.runReconciliation
JsonNode runReconciliation(Object body)
Run the billing reconciliation. Allocates the imported billed lines of the period to the usage events: a line with a provider_request_id goes to that event, other lines are split pro rata of the measured cost of the events of the same provider, model and day (evenly when nothing was measured); lines without candidate event are reported as unmatched. Variance alerts are raised over the tenant threshold. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/reconciliation/run (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | Period to reconcile; the body may be omitted. |
Returns: JsonNode. Decoded JSON answer of the operation "Run the billing reconciliation".
Raises: the typed errors of the transport (Errors).
FinopsClient.runReconciliation
JsonNode runReconciliation(Object body, RequestOptions options)
Run the billing reconciliation. Allocates the imported billed lines of the period to the usage events: a line with a provider_request_id goes to that event, other lines are split pro rata of the measured cost of the events of the same provider, model and day (evenly when nothing was measured); lines without candidate event are reported as unmatched. Variance alerts are raised over the tenant threshold. Audited. Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/reconciliation/run (POST).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | Period to reconcile; the body may be omitted. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Run the billing reconciliation".
Raises: the typed errors of the transport (Errors).
FinopsClient.setFxRates
JsonNode setFxRates(Object body)
Set FX rates. Adds or replaces 1 to 1000 exchange rates (same base, quote and date: replaced) for the tenant, or global rates for a platform administrator without tenant, and answers the number updated with the full list. Conversions go through USD as pivot when no direct rate exists. Audited. Requires finops or tenant_admin (platform_admin for global rates).
Route: /v1/finops/fx-rates (PUT).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The rates to store. |
Returns: JsonNode. Decoded JSON answer of the operation "Set FX rates".
Raises: the typed errors of the transport (Errors).
FinopsClient.setFxRates
JsonNode setFxRates(Object body, RequestOptions options)
Set FX rates. Adds or replaces 1 to 1000 exchange rates (same base, quote and date: replaced) for the tenant, or global rates for a platform administrator without tenant, and answers the number updated with the full list. Conversions go through USD as pivot when no direct rate exists. Audited. Requires finops or tenant_admin (platform_admin for global rates).
Route: /v1/finops/fx-rates (PUT).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | The rates to store. | |
options | RequestOptions | yes | Per call options (idempotency key, traceparent, headers, abort signal). |
Returns: JsonNode. Decoded JSON answer of the operation "Set FX rates".
Raises: the typed errors of the transport (Errors).
FinopsClient.settings
JsonNode settings()
Read the FinOps settings. Currency, monthly budget, variance threshold and reservation lifetime of the tenant (defaults: USD, no budget, 10 percent, 900 seconds). Requires a reader role and a tenant principal.
Route: /v1/finops/settings (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "Read the FinOps settings".
Raises: the typed errors of the transport (Errors).
FinopsClient.summary
JsonNode summary()
Summarize the spend. Usage events of the tenant grouped by one dimension, per currency: number of events, tokens, GPU seconds, estimated, measured and billed amounts (billed is null when nothing was reconciled). An unknown grouping answers 400 finops_group_by_invalid. Requires a reader role and a tenant principal.
Route: /v1/finops/summary (GET).
This element takes no parameter.
Returns: JsonNode. Decoded JSON answer of the operation "Summarize the spend".
Raises: the typed errors of the transport (Errors).
FinopsClient.summary
JsonNode summary(Map<String, ?> query)
Summarize the spend. Usage events of the tenant grouped by one dimension, per currency: number of events, tokens, GPU seconds, estimated, measured and billed amounts (billed is null when nothing was reconciled). An unknown grouping answers 400 finops_group_by_invalid. Requires a reader role and a tenant principal.
Route: /v1/finops/summary (GET).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
query | Map<String, ?> | yes | Query string parameters of the route. |
Returns: JsonNode. Decoded JSON answer of the operation "Summarize the spend".
Raises: the typed errors of the transport (Errors).
FinopsClient.updateSettings
JsonNode updateSettings(Object body)
Change the FinOps settings. Changes the given settings of the tenant; omitted or null fields keep their value. Audited (finops.settings.update). Requires finops or tenant_admin, and a tenant principal.
Route: /v1/finops/settings (PUT).
| Name | Type | Default | Required | Description |
|---|---|---|---|---|
body | Object | yes | Settings to change. |
Returns: JsonNode. Decoded JSON answer of the operation "Change the FinOps settings".
Raises: the typed errors of the transport (Errors).