Highlight (highlight.io) Logs API

OpenTelemetry log ingestion

OpenAPI Specification

highlight-io-logs-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Highlight OTLP Logs API
  description: 'Native OpenTelemetry Protocol (OTLP) HTTP/JSON ingestion endpoint for structured logs. Accepts standard `ExportLogsServiceRequest` payloads. Logs are stored in ClickHouse for sub-second full-text search and pattern detection in the Highlight dashboard.

    '
  version: '1.0'
  contact:
    name: Highlight Support
    url: https://www.highlight.io/community
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://otel.highlight.io
  description: Highlight hosted OTLP collector
- url: http://localhost:4318
  description: Self-hosted OTLP collector (Hobby / Enterprise)
tags:
- name: Logs
  description: OpenTelemetry log ingestion
paths:
  /v1/logs:
    post:
      summary: Export Logs Service
      description: 'Submit a batch of OpenTelemetry log records. The body must be an `ExportLogsServiceRequest` encoded as JSON or Protobuf. The resource attribute `highlight.project_id` is required to route the logs to the owning Highlight project.

        '
      operationId: exportLogs
      tags:
      - Logs
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ExportLogsServiceRequest'
          application/x-protobuf:
            schema:
              type: string
              format: binary
      responses:
        '200':
          description: Logs accepted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportLogsServiceResponse'
        '400':
          description: Malformed payload or missing `highlight.project_id`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '413':
          description: Payload too large.
        '429':
          description: Rate limited.
components:
  schemas:
    ResourceLogs:
      type: object
      properties:
        resource:
          $ref: '#/components/schemas/Resource'
        scopeLogs:
          type: array
          items:
            $ref: '#/components/schemas/ScopeLogs'
        schemaUrl:
          type: string
    ScopeLogs:
      type: object
      properties:
        scope:
          $ref: '#/components/schemas/InstrumentationScope'
        logRecords:
          type: array
          items:
            $ref: '#/components/schemas/LogRecord'
    Resource:
      type: object
      properties:
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
          description: 'MUST include `highlight.project_id`. SHOULD include `service.name`, `service.version`, and `deployment.environment`.

            '
    LogRecord:
      type: object
      required:
      - timeUnixNano
      - body
      properties:
        timeUnixNano:
          type: string
        observedTimeUnixNano:
          type: string
        severityNumber:
          type: integer
          description: 1-24 per OpenTelemetry SeverityNumber.
        severityText:
          type: string
          description: Human-readable severity (e.g. INFO, WARN, ERROR).
        body:
          $ref: '#/components/schemas/AnyValue'
        attributes:
          type: array
          items:
            $ref: '#/components/schemas/KeyValue'
          description: 'Recommended attributes: `highlight.session_id` and `highlight.trace_id` for browser-session correlation.

            '
        traceId:
          type: string
        spanId:
          type: string
    KeyValue:
      type: object
      required:
      - key
      - value
      properties:
        key:
          type: string
        value:
          $ref: '#/components/schemas/AnyValue'
    ErrorResponse:
      type: object
      properties:
        code:
          type: integer
        message:
          type: string
    InstrumentationScope:
      type: object
      properties:
        name:
          type: string
        version:
          type: string
    ExportLogsServiceResponse:
      type: object
      properties:
        partialSuccess:
          type: object
          properties:
            rejectedLogRecords:
              type: string
            errorMessage:
              type: string
    AnyValue:
      type: object
      properties:
        stringValue:
          type: string
        boolValue:
          type: boolean
        intValue:
          type: string
        doubleValue:
          type: number
    ExportLogsServiceRequest:
      type: object
      required:
      - resourceLogs
      properties:
        resourceLogs:
          type: array
          items:
            $ref: '#/components/schemas/ResourceLogs'