Freestyle Observability API

Query structured logs across Freestyle services. Filter by VM, deployment, run, identity, or time range to debug agent runs end-to-end.

OpenAPI Specification

freestyle-observability-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Freestyle Observability API
  version: 0.1.0
  description: Query structured logs across Freestyle services for VMs, runs, deployments, and identity events.
  contact:
    name: Ben
    email: ben@freestyle.sh
  license:
    name: Closed Source
servers:
- url: https://api.freestyle.sh
  description: Production
tags:
- name: Observability
  description: APIs for observability.
paths:
  /observability/v1/logs:
    get:
      tags:
      - Observability
      summary: Logs
      description: Get logs for a deployment, domain, VM, or background request
      operationId: handle_get_logs
      parameters:
      - name: deploymentId
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: requestId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/RequestId'
      - name: buildId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/BuildId'
      - name: instanceId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmInstanceId'
      - name: domain
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: vmId
        in: query
        required: false
        schema:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmId'
      - name: runId
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: vmService
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: pageToken
        in: query
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: pageSize
        in: query
        required: false
        schema:
          type:
          - integer
          - 'null'
          format: int32
      - name: startTime
        in: query
        description: Start time in RFC3339 format (e.g., "2024-01-01T00:00:00Z"). Defaults to 24 hours ago if not specified.
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: endTime
        in: query
        description: End time in RFC3339 format (e.g., "2024-01-02T00:00:00Z"). Defaults to now if not specified.
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: search
        in: query
        description: "Full-text search filter \u2014 case-insensitive substring match on log message body."
        required: false
        schema:
          type:
          - string
          - 'null'
      - name: resourceType
        in: query
        description: 'Filter logs by resource type: "deployment" or "vm". Only applies to account-wide queries.'
        required: false
        schema:
          type:
          - string
          - 'null'
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FreestyleGetLogsResponse'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
  schemas:
    RequestId:
      type: string
      description: "Branded request identifier \u2014 `ri-<20 lowercase alphanumeric chars>` for newly\nminted IDs. The wrapped\
        \ string is otherwise opaque, so legacy UUID-formatted\nIDs (from in-flight requests during rollout) round-trip unchanged."
    VmInstanceId:
      type: string
    FreestyleLogResponseObject:
      type: object
      required:
      - message
      - timestamp
      properties:
        message:
          type: string
        timestamp:
          type: string
        source:
          type:
          - string
          - 'null'
        resourceType:
          type:
          - string
          - 'null'
        origin:
          type:
          - string
          - 'null'
        resourceId:
          type:
          - string
          - 'null'
        instanceId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/VmInstanceId'
        level:
          type:
          - string
          - 'null'
        vmService:
          type:
          - string
          - 'null'
        buildId:
          oneOf:
          - type: 'null'
          - $ref: '#/components/schemas/BuildId'
    VmId:
      type: string
      description: "VM ID \u2014 always 20 alphanumeric lowercase characters.\nNew IDs are fully random. Legacy short IDs\
        \ are right-padded with '0' on parse."
    BuildId:
      type: string
      description: Branded build ID in the format `bld-<20 lowercase alphanumeric chars>`.
    FreestyleGetLogsResponse:
      type: object
      required:
      - logs
      properties:
        logs:
          type: array
          items:
            $ref: '#/components/schemas/FreestyleLogResponseObject'
        nextPageToken:
          type:
          - string
          - 'null'
security:
- bearerAuth: []