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: []