FinOps Foundation Contract Commitments API

Endpoints for querying contract commitment data, a supplemental dataset introduced in FOCUS v1.3 that isolates contract terms from cost and usage rows.

OpenAPI Specification

finops-foundation-contract-commitments-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: FinOps Foundation FOCUS Cost and Usage Contract Commitments API
  description: An API modeled on the FinOps Open Cost and Usage Specification (FOCUS) v1.3, which defines a standard schema for cloud, SaaS, and other technology billing data. FOCUS normalizes billing datasets across providers to reduce complexity for FinOps practitioners. This specification models the Cost and Usage dataset and the Contract Commitment dataset defined by the FOCUS standard, enabling programmatic access to FOCUS-compliant billing data. The FOCUS specification is maintained by the FinOps Foundation under the Linux Foundation.
  version: 1.3.0
  contact:
    name: FinOps Foundation
    url: https://www.finops.org/
  license:
    name: Community Specification License 1.0
    url: https://github.com/FinOps-Open-Cost-and-Usage-Spec/FOCUS_Spec/blob/main/LICENSE
  x-focus-version: '1.3'
servers:
- url: https://api.example.com/focus/v1
  description: Example FOCUS-compliant API server
security:
- bearerAuth: []
- apiKeyAuth: []
tags:
- name: Contract Commitments
  description: Endpoints for querying contract commitment data, a supplemental dataset introduced in FOCUS v1.3 that isolates contract terms from cost and usage rows.
paths:
  /contract-commitments:
    get:
      operationId: listContractCommitments
      summary: FinOps Foundation List contract commitment records
      description: Retrieves contract commitment records as defined in the FOCUS v1.3 supplemental dataset. Contract commitments isolate contract terms such as start and end dates, remaining units, and descriptions from cost and usage rows.
      tags:
      - Contract Commitments
      parameters:
      - name: commitmentDiscountId
        in: query
        description: Filter by the identifier assigned to a commitment discount by the provider.
        required: false
        schema:
          type: string
      - name: billingAccountId
        in: query
        description: Filter by the unique identifier for a billing account.
        required: false
        schema:
          type: string
      - name: pageSize
        in: query
        description: Number of records to return per page.
        required: false
        schema:
          type: integer
          minimum: 1
          maximum: 10000
          default: 1000
      - name: pageToken
        in: query
        description: Token for retrieving the next page of results.
        required: false
        schema:
          type: string
      responses:
        '200':
          description: A paginated list of contract commitment records.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ContractCommitmentResponse'
        '400':
          description: Invalid request parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ContractCommitmentRecord:
      type: object
      description: A contract commitment record as defined in FOCUS v1.3. Isolates contract terms including start and end dates, remaining units, and descriptions from cost and usage rows.
      properties:
        CommitmentDiscountId:
          type: string
          description: The unique identifier assigned to a commitment discount by the provider. MUST NOT be null.
        CommitmentDiscountName:
          type: string
          nullable: true
          description: The display name assigned to a commitment discount.
        CommitmentDiscountType:
          type: string
          nullable: true
          description: A provider-assigned label describing the type of commitment discount.
        CommitmentDiscountCategory:
          type: string
          enum:
          - Spend
          - Usage
          description: Whether the commitment discount is based on usage quantity or cost.
        CommitmentStartDate:
          type: string
          format: date-time
          description: The start date and time of the contract commitment.
        CommitmentEndDate:
          type: string
          format: date-time
          description: The end date and time of the contract commitment.
        CommitmentTotalQuantity:
          type: number
          nullable: true
          description: The total quantity of the commitment purchased.
        CommitmentRemainingQuantity:
          type: number
          nullable: true
          description: The remaining quantity of the commitment that has not yet been consumed.
        CommitmentUnit:
          type: string
          nullable: true
          description: The unit of measurement for the commitment quantity.
        CommitmentDescription:
          type: string
          nullable: true
          description: A human-readable description of the contract commitment.
        BillingAccountId:
          type: string
          description: The unique identifier for the billing account associated with the commitment.
        BillingAccountName:
          type: string
          nullable: true
          description: The display name for the billing account.
        ProviderName:
          type: string
          description: The name of the entity that made the commitment discount available.
      required:
      - CommitmentDiscountId
      - CommitmentStartDate
      - CommitmentEndDate
      - BillingAccountId
      - ProviderName
    ContractCommitmentResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ContractCommitmentRecord'
        nextPageToken:
          type: string
          nullable: true
          description: Token to retrieve the next page of results.
        totalRecords:
          type: integer
          description: Total number of records matching the query.
      required:
      - data
    Error:
      type: object
      properties:
        code:
          type: string
          description: A machine-readable error code.
        message:
          type: string
          description: A human-readable error message.
        details:
          type: string
          nullable: true
          description: Additional details about the error.
      required:
      - code
      - message
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: Bearer token authentication for FOCUS API access.
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key
      description: API key authentication for FOCUS API access.
externalDocs:
  description: FOCUS Specification v1.3
  url: https://focus.finops.org/focus-specification/v1-3/