FinOps Foundation Schema Metadata API

Endpoints for retrieving metadata about the FOCUS dataset schema, including column definitions, data types, and version information.

OpenAPI Specification

finops-foundation-schema-metadata-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: FinOps Foundation FOCUS Cost and Usage Contract Commitments Schema Metadata 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: Schema Metadata
  description: Endpoints for retrieving metadata about the FOCUS dataset schema, including column definitions, data types, and version information.
paths:
  /schema:
    get:
      operationId: getSchemaMetadata
      summary: FinOps Foundation Get FOCUS schema metadata
      description: Retrieves metadata about the FOCUS dataset schema, including column definitions, data types, FOCUS version, and data generator version information.
      tags:
      - Schema Metadata
      responses:
        '200':
          description: FOCUS schema metadata.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SchemaMetadata'
        '401':
          description: Authentication required.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ColumnDefinition:
      type: object
      properties:
        columnName:
          type: string
          description: The name of the column.
        dataType:
          type: string
          enum:
          - String
          - Number
          - DateTime
          - JSON
          description: The data type of the column.
        requirement:
          type: string
          enum:
          - Must
          - Recommended
          - Optional
          description: The requirement level of the column per the FOCUS specification.
        nullable:
          type: boolean
          description: Whether the column can contain null values.
        description:
          type: string
          description: A description of the column and its purpose.
        category:
          type: string
          enum:
          - Dimension
          - Metric
          description: Whether this column is a dimension or a metric.
      required:
      - columnName
      - dataType
      - requirement
      - nullable
    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
    SchemaMetadata:
      type: object
      description: Metadata about the FOCUS dataset schema, supporting communication of important attributes about the data including column names, data types, FOCUS version, and data generator version.
      properties:
        focusVersion:
          type: string
          description: The version of the FOCUS specification the data conforms to.
          example: '1.3'
        dataGeneratorName:
          type: string
          description: The name of the data generator producing the FOCUS data.
        dataGeneratorVersion:
          type: string
          description: The version of the data generator.
        columns:
          type: array
          items:
            $ref: '#/components/schemas/ColumnDefinition'
          description: List of column definitions in the FOCUS dataset.
        datasets:
          type: array
          items:
            type: string
          description: The datasets available from this data generator.
          example:
          - CostAndUsage
          - ContractCommitment
      required:
      - focusVersion
      - columns
  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/