OpenObserve
OpenObserve is an open source petabyte-scale observability platform with unified logs, metrics, traces, and front-end telemetry in a single UI with SQL and PromQL querying. The HTTP API exposes ingestion, search, alerting, dashboards, pipelines, RUM, and administration endpoints.
1 APIs
0 Features
ObservabilityLogsMetricsTracesRUMOpen Source
APIs
OpenObserve
OpenObserve HTTP API for ingesting logs, metrics, and traces; running SQL and PromQL search; managing alerts, dashboards, folders, pipelines, reports, RUM, saved views, service ...
Collections
openobserve
OPENPricing Plans
Rate Limits
FinOps
Openobserve Finops
FINOPSResources
🔗
TrustCenter
TrustCenter
🔗
DomainSecurity
DomainSecurity
🔑
Authentication
Authentication
🔗
LinkedIn
LinkedIn
🔗
Website
Website
🔗
Documentation
Documentation
👥
GitHubOrg
GitHubOrg
🔗
LlmsText
LlmsText
📰
Blog
Blog
Sources
opencollection: 1.0.0
info:
name: openobserve
version: 0.90.0
items:
- info:
name: MCP
type: folder
items:
- info:
name: 'Handler for OAuth 2.0 Authorization Server Metadata (Enterprise)
RFC 8414: https://datatracker.ietf.org/doc/html/rfc8414
This endpoint provides discovery information for OAuth clients
Must be publicly accessible (no auth) per OAuth spec'
type: http
http:
method: POST
url: '{{baseUrl}}/.well-known/oauth-authorization-server'
docs: 'Handler for OAuth 2.0 Authorization Server Metadata (Enterprise)
RFC 8414: https://datatracker.ietf.org/doc/html/rfc8414
This endpoint provides discovery information for OAuth clients
Must be publicly accessible (no auth) per OAuth spec'
- info:
name: Handler for MCP POST requests (single request/response)
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/mcp'
params:
- name: org_id
value: ''
type: path
description: Organization name
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: 'Per MCP 2025-11-25 (Streamable HTTP transport):
- Requests with `id` → 200 with JSON or SSE response
- Notifications (no `id`) → 202 Accepted, no body
- Validates `MCP-Protocol-Version` header on non-initialize requests'
- info:
name: Clusters
type: folder
items:
- info:
name: List available clusters
type: http
http:
method: GET
url: '{{baseUrl}}/api/clusters'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves a list of all available clusters organized by region. Each region contains a list of cluster names that
can be used for data processing and storage. This information is useful for understanding your deployment topology and
selecting appropriate clusters for workload distribution.
- info:
name: Organizations
type: folder
items:
- info:
name: Get user's organizations
type: http
http:
method: GET
url: '{{baseUrl}}/api/organizations'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves a list of all organizations that the authenticated user has access to, including organization details,
permissions, and subscription information. Root users can see all organizations in the system.
- info:
name: Create new organization
type: http
http:
method: POST
url: '{{baseUrl}}/api/organizations'
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates a new organization with the specified configuration and settings. The authenticated user will be automatically
added as an owner of the newly created organization and can then invite other users and configure the organization.
If the creator is a service account, the response will include the service account's token for the newly created organization,
enabling automated workflows to immediately access the new organization without additional token retrieval steps.
- info:
name: Assume a service account in a target organization
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/organizations/assume_service_account'
params:
- name: org_id
value: ''
type: path
description: Organization name (must be _meta)
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: 'This endpoint allows meta service accounts to obtain temporary session tokens
for accessing a target organization as a specific service account. The session
automatically expires after the specified duration.
# Security
- Only meta service accounts can call this endpoint
- The service account must exist in both _meta and target organization
- The service account must have the appropriate role in the target organization
- Maximum session duration is capped at 24 hours
# Example
```bash
curl -X '
- info:
name: Get user's ingestion token
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/passcode'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves the current ingestion token (passcode) for the authenticated user within the specified organization. This
token is used to authenticate data ingestion requests and can be used with various ingestion endpoints.
- info:
name: Update user's ingestion token
type: http
http:
method: PUT
url: '{{baseUrl}}/api/:org_id/passcode'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Generates a new ingestion token (passcode) for the authenticated user within the specified organization. The old
token will be invalidated and all ingestion processes using the old token will need to be updated with the new token.
- info:
name: Rename organization
type: http
http:
method: PUT
url: '{{baseUrl}}/api/:org_id/rename'
params:
- name: org_id
value: ''
type: path
description: Organization id
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Changes the display name of an organization. The organization identifier remains unchanged, but the human-readable
name is updated. This helps with organization management and branding without affecting API integrations or data access.
- info:
name: Get user's RUM ingestion token
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/rumtoken'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves the current Real User Monitoring (RUM) ingestion token for the authenticated user within the specified
organization. This token is specifically used for ingesting RUM data from web applications and mobile apps.
- info:
name: Create user's RUM ingestion token
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/rumtoken'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates a new Real User Monitoring (RUM) ingestion token for the authenticated user within the specified organization.
This endpoint is used when no RUM token exists yet and you need to generate the initial token for RUM data collection.
- info:
name: Update user's RUM ingestion token
type: http
http:
method: PUT
url: '{{baseUrl}}/api/:org_id/rumtoken'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Generates a new Real User Monitoring (RUM) ingestion token for the authenticated user within the specified organization.
The old RUM token will be invalidated and all RUM data collection processes using the old token will need to be updated.
- info:
name: Get organization settings
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/settings'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves the current configuration settings for an organization, including scrape intervals, field mappings, ingestion
preferences, and streaming options. Returns default settings if none have been configured previously for the organization.
- info:
name: Update organization settings
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/settings'
params:
- name: org_id
value: ''
type: path
description: Organization name
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates or updates organization-specific settings such as scrape interval, trace field names, ingestion toggles,
and streaming configurations. Allows administrators to customize organizational behavior and operational parameters
to match specific requirements and use cases.
- info:
name: List all resolved system settings
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/settings/v2'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: user_id
value: ''
type: query
description: User ID for user-level resolution
- name: category
value: ''
type: query
description: Filter by setting category
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Lists all settings with multi-level resolution applied. Merges system, org, and user levels, returning the most
specific value for each key.
- info:
name: Set organization-level setting
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/settings/v2'
params:
- name: org_id
value: ''
type: path
description: Organization name
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates or updates an organization-level setting. This setting applies to all users in the organization unless overridden
at the user level.
- info:
name: Set user-level setting
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/settings/v2/user/:user_id'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: user_id
value: ''
type: path
description: User ID
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates or updates a user-level setting. This setting applies only to the specific user and overrides org-level
and system-level settings.
- info:
name: Delete user-level setting
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/:org_id/settings/v2/user/:user_id/:key'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: user_id
value: ''
type: path
description: User ID
- name: key
value: ''
type: path
description: Setting key
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Deletes a user-level setting. After deletion, queries for this key will fall back to org-level or system-level settings.
- info:
name: Get resolved system setting
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/settings/v2/:key'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: key
value: ''
type: path
description: Setting key
- name: user_id
value: ''
type: query
description: User ID for user-level resolution
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves a setting value with multi-level resolution. Checks user-level first, then org-level, then system-level
defaults. Returns the most specific setting found, or null if no setting exists at any level.
- info:
name: Delete organization-level setting
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/:org_id/settings/v2/:key'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: key
value: ''
type: path
description: Setting key
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Deletes an organization-level setting. After deletion, queries for this key will fall back to system-level defaults.
- info:
name: Get organization summary
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/summary'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves comprehensive summary statistics and information about an organization including data ingestion metrics,
storage usage, stream counts, and other key performance indicators useful for monitoring organization health and usage.
- info:
name: Alerts
type: folder
items:
- info:
name: List organization alerts
type: http
http:
method: GET
url: '{{baseUrl}}/api/v2/:org_id/alerts'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: folder
value: ''
type: query
description: Optional folder ID filter parameter.
- name: stream_type
value: ''
type: query
description: Optional stream type filter parameter.
- name: stream_name
value: ''
type: query
description: 'Optional stream name filter parameter.
This parameter is only used if `stream_type` is also provided.'
- name: alert_name_substring
value: ''
type: query
description: Optional case-insensitive name substring filter parameter.
- name: owner
value: ''
type: query
description: Optional owner user filter parameter.
- name: enabled
value: ''
type: query
description: Optional enabled filter parameter.
- name: page_size
value: ''
type: query
description: 'The optional number of alerts to retrieve. If not set then all alerts
that match the query parameters will be returned.'
- name: page_idx
value: ''
type: query
description: 'The optional page index. If not set then defaults to `0`.
This parameter is only used if `page_size` is also set.'
- name: alert_type
value: ''
type: query
description: 'Optional alert type filter: `all` (default), `scheduled`, `realtime`,
or `anomaly_detection`.'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves a list of all alerts in the organization with filtering and pagination options. Shows alert summaries
including names, status, folder organization, and basic configuration details for monitoring and management purposes.
- info:
name: Create new alert
type: http
http:
method: POST
url: '{{baseUrl}}/api/v2/:org_id/alerts'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: folder
value: ''
type: query
description: Folder ID (Required if alert folder is not the default folder)
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates a new alert with specified conditions, triggers, and notifications. Users can define custom queries, thresholds,
and notification destinations to monitor their data and receive timely alerts when conditions are met.
- info:
name: Enable or disable alert in bulk
type: http
http:
method: POST
url: '{{baseUrl}}/api/v2/:org_id/alerts/bulk/enable'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: value
value: ''
type: query
description: Set to `true` to enable the alert or `false` to disable the alert.
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Toggles the active status of alerts to enable or disable its monitoring and notification functionality in bulk.
When disabled, the alert will stop evaluating conditions and sending notifications until re-enabled.
- info:
name: Generate SQL from alert query parameters
type: http
http:
method: POST
url: '{{baseUrl}}/api/v2/:org_id/alerts/generate_sql'
params:
- name: org_id
value: ''
type: path
description: Organization name
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Generates a SQL query string based on alert query parameters including stream, aggregations, and conditions. This
endpoint is useful for testing alert queries and understanding the SQL that will be executed.
- info:
name: Move alerts between folders
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/v2/:org_id/alerts/move'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: folder
value: ''
type: query
description: From Folder ID (Required if RBAC enabled)
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Moves one or more alerts from their current folder to a specified destination folder. Helps organize alerts into
logical groups and manage access permissions when using role-based access control.
- info:
name: Get alert details
type: http
http:
method: GET
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: folder
value: ''
type: query
description: Folder ID (Required if RBAC enabled)
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves detailed information about a specific alert including its configuration, conditions, triggers, notification
settings, and current status. Useful for viewing and understanding existing alert setups.
- info:
name: Update alert configuration
type: http
http:
method: PUT
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: folder
value: ''
type: query
description: Folder ID (Required if RBAC enabled)
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Updates an existing alert's configuration including conditions, queries, thresholds, notification destinations,
and scheduling. Allows users to modify alert behavior and settings as monitoring requirements change.
- info:
name: Delete alert
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: folder
value: ''
type: query
description: Folder ID (Required if RBAC enabled)
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Permanently removes an alert and all its configurations including conditions, triggers, and notification settings.
This action cannot be undone and will stop all monitoring and notifications for the deleted alert.
- info:
name: Clone an alert or anomaly detection config
type: http
http:
method: POST
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id/clone'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Source alert or anomaly config ID
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Creates a copy of an existing alert or anomaly detection config. For anomaly configs, the clone starts untrained
with counters reset. Provide an optional name and folder_id in the request body.
- info:
name: Enable or disable alert
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id/enable'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: value
value: ''
type: query
description: Set to `true` to enable the alert or `false` to disable the alert.
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Toggles the active status of an alert to enable or disable its monitoring and notification functionality. When disabled,
the alert will stop evaluating conditions and sending notifications until re-enabled.
- info:
name: Export alert configuration
type: http
http:
method: POST
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id/export'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: folder
value: ''
type: query
description: Folder ID (Required if RBAC enabled)
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Exports the complete configuration of a specific alert in a format suitable for backup, sharing, or importing into
other environments. Includes all alert settings, conditions, and notification configurations.
- info:
name: Trigger retraining for an anomaly detection alert
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id/retrain'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Anomaly detection alert ID
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Triggers a model retrain for an anomaly detection alert. Returns 400 if called on a non-anomaly alert type.
- info:
name: Manually trigger alert
type: http
http:
method: PATCH
url: '{{baseUrl}}/api/v2/:org_id/alerts/:alert_id/trigger'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: alert_id
value: ''
type: path
description: Alert ID
- name: folder
value: ''
type: query
description: Folder ID (Required if RBAC enabled)
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Manually triggers an alert to test its functionality and notification delivery. Useful for testing alert configurations,
verifying notification channels, and ensuring alerts work as expected before relying on them for monitoring.
- info:
name: Get deduplication summary statistics for an organization
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/alerts/dedup/summary'
params:
- name: org_id
value: ''
type: path
description: Organization name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Get deduplication summary statistics for an organization
- info:
name: Get deduplication configuration for an organization
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/config'
params:
- name: org_id
value: ''
type: path
description: Organization ID
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Get deduplication configuration for an organization
- info:
name: Set deduplication configuration for an organization
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/config'
params:
- name: org_id
value: ''
type: path
description: Organization ID
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Set deduplication configuration for an organization
- info:
name: Delete deduplication configuration for an organization
type: http
http:
method: DELETE
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/config'
params:
- name: org_id
value: ''
type: path
description: Organization ID
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Delete deduplication configuration for an organization
- info:
name: Get semantic field groups for an organization
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/semantic-groups'
params:
- name: org_id
value: ''
type: path
description: Organization ID
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Get semantic field groups for an organization
- info:
name: Save semantic field groups for an organization
type: http
http:
method: PUT
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/semantic-groups'
params:
- name: org_id
value: ''
type: path
description: Organization ID
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: 'Merges provided groups with existing ones:
- Groups with matching IDs are updated (replaced)
- New groups (no matching ID) are added
- Existing groups not in the request are preserved'
- info:
name: Preview diff between imported semantic groups and current DB state
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/alerts/deduplication/semantic-groups/preview-diff'
params:
- name: org_id
value: ''
type: path
description: Organization ID
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: 'This endpoint compares the provided semantic groups with what''s currently stored
and returns a diff showing additions, modifications, and unchanged groups.
The UI can use this to show users what will change before they commit.'
- info:
name: List alert destinations
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/alerts/destinations'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: module
value: ''
type: query
description: Destination module filter, none, alert, or pipeline
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves a list of all alert destinations configured for an organization. Optionally filter by module type (alert
or pipeline) to get specific destination categories. Returns destination names, types, and basic configuration details
to help administrators manage notification routing and review available delivery options.
- info:
name: Create alert or pipeline destination
type: http
http:
method: POST
url: '{{baseUrl}}/api/:org_id/alerts/destinations'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: module
value: ''
type: query
description: 'Destination module type: ''alert'' (default) or ''pipeline'''
body:
type: json
data: '{}'
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: 'Creates a new alert destination configuration for an organization. Destinations define where alert notifications
are sent when alert conditions are met, including webhooks, email addresses, and SNS topics.
IMPORTANT: The `template` field is REQUIRED to create an alert destination. Use ''Default'' for the built-in template.
For pipeline destinations, this includes external systems like OpenObserve, Splunk, Elasticsearch, etc. Use the ''module''
query parameter to specify destination type: ''alert'' (d'
- info:
name: Get alert destination
type: http
http:
method: GET
url: '{{baseUrl}}/api/:org_id/alerts/destinations/:destination_name'
params:
- name: org_id
value: ''
type: path
description: Organization name
- name: destination_name
value: ''
type: path
description: Destination name
auth:
type: apikey
key: Authorization
value: '{{Authorization}}'
placement: header
docs: Retrieves the configuration details for a specific alert destination. Returns the complete destination setup including
delivery method, authentication credentials, notification settings, and other configuration parameters. Used for reviewing
and managing existing destination configurations.
- info:
name: Update alert or pipeline destination
type:
# --- truncated at 32 KB (168 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/openobserve/refs/heads/main/apis.yml