OpenSearch website screenshot

OpenSearch

OpenSearch is the open source, community-driven search, analytics, and observability suite (forked from Elasticsearch and Kibana) maintained under the Linux Foundation's OpenSearch Software Foundation. The platform exposes REST APIs across the search engine, the OpenSearch Dashboards UI, and a set of plugins. The Security plugin REST API lets administrators programmatically create and manage internal users, roles, role mappings, action groups, tenants, security configuration, audit log configuration, and SSL certificates.

OpenSearch publishes 1 API on the APIs.io network: Security Plugin REST API. Tagged areas include Search, Analytics, Observability, Open Source, and Security.

The OpenSearch catalog on APIs.io includes 1 JSON-LD context and 1 Spectral governance ruleset.

OpenSearch’s developer surface includes authentication, developer portal, documentation, getting-started guide, engineering blog, and 15 more developer resources.

51.6/100 developing ▬ flat Agent 64/100 agent native Full breakdown ↓
scored 2026-07-20 · rubric v0.4
2 APIs 10 Agent Skills 0 Features
SearchAnalyticsObservabilityOpen SourceSecurity

API Rating

API Evangelist API Evangelist Rating How this is scored →
scored 2026-07-20 · rubric v0.4
Composite quality — 51.6/100 · developing
Contract Quality 11.8 / 25
Developer Ergonomics 10.9 / 20
Commercial Clarity 7.9 / 20
Operational Transparency 6.2 / 13
Governance 8.8 / 12
Discoverability 6.0 / 10
Agent readiness — 64/100 · agent native
Machine-Readable Contract 18 / 18
Agentic Access Contract 15 / 15
MCP Server 12 / 12
Machine-Readable Auth 10 / 10
Idempotency 0 / 9
Stable Error Semantics 0 / 8
Request/Response Examples 0 / 7
Rate-Limit Signaling 7 / 7
Typed Event Surface 0 / 6
Agent Skills 5 / 5
Well-Known Catalog 0 / 4
Consent & Bot Identity 0 / 3
Improve this rating by publishing the missing artifacts — every area above can be raised, and the full rubric is at apis.io/rating/. This rating is computed from github.com/api-evangelist/opensearch: open an issue to ask a question, or submit a pull request to add artifacts. Want it done for you? Prioritized profiling — $2,500 →

APIs

OpenSearch Security Plugin REST API

The Security plugin REST API lets administrators programmatically create and manage internal users, roles, role mappings, action groups, tenants, security configuration, audit l...

OpenSearch Search and Indexing REST API

The core OpenSearch REST API for indexing documents, performing search queries (full text, vector, hybrid), aggregations, and managing indices, mappings, templates, aliases, and...

Agent Skills

aws-setup

AGENT SKILL

cloud

AGENT SKILL

log-analytics

AGENT SKILL

observability

AGENT SKILL

opensearch-launchpad

AGENT SKILL

opensearch-skills

AGENT SKILL

search

AGENT SKILL

trace-analytics

AGENT SKILL

Collections

GraphQL

OpenSearch GraphQL Schema

This directory contains a conceptual GraphQL schema for the OpenSearch search, analytics, and observability platform — the open-source, community-driven suite forked from Elasti...

GRAPHQL

Pricing Plans

Opensearch Plans Pricing

3 plans

PLANS

Rate Limits

Opensearch Rate Limits

5 limits

RATE LIMITS

FinOps

Semantic Vocabularies

Opensearch Context

3 classes · 0 properties

JSON-LD

API Governance Rules

OpenSearch API Rules

5 rules · 4 warnings 1 info

SPECTRAL

Resources

Get Started 2

Portal, sign-up, and the first successful call

Documentation 2

Reference material describing how the API behaves

Agent Surfaces 3

MCP servers, agent skills, and machine-readable catalogs

Build 3

SDKs, sample code, and the tooling you integrate with

Access & Security 3

Authentication, authorization, and security posture

Operate 2

Status, limits, changes, and where to get help

Commercial 1

Pricing, plans, and the legal terms of use

Company 3

The organization behind the API

Other 1

Properties that don't map to a standard resource type

Source (apis.yml)

apis.yml Raw ↑
opencollection: 1.0.0
info:
  name: OpenSearch Security Plugin REST API
  version: 2.x
request:
  auth:
    type: basic
    username: '{{username}}'
    password: '{{password}}'
items:
- info:
    name: Account
    type: folder
  items:
  - info:
      name: Get current user account
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/account
    docs: Returns information about the currently authenticated user.
  - info:
      name: Change current user password
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/account
      body:
        type: json
        data: '{}'
    docs: Change current user password
- info:
    name: Internal Users
    type: folder
  items:
  - info:
      name: List all internal users
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/internalusers
    docs: List all internal users
  - info:
      name: Get internal user
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/internalusers/:username
      params:
      - name: username
        value: ''
        type: path
    docs: Get internal user
  - info:
      name: Create or replace an internal user
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/internalusers/:username
      params:
      - name: username
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace an internal user
  - info:
      name: Patch internal user
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/internalusers/:username
      params:
      - name: username
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Patch internal user
  - info:
      name: Delete internal user
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/internalusers/:username
      params:
      - name: username
        value: ''
        type: path
    docs: Delete internal user
- info:
    name: Roles
    type: folder
  items:
  - info:
      name: List all roles
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/roles
    docs: List all roles
  - info:
      name: Get role
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/roles/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Get role
  - info:
      name: Create or replace a role
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/roles/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace a role
  - info:
      name: Patch role
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/roles/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Patch role
  - info:
      name: Delete role
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/roles/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Delete role
- info:
    name: Role Mappings
    type: folder
  items:
  - info:
      name: List all role mappings
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/rolesmapping
    docs: List all role mappings
  - info:
      name: Get role mapping
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/rolesmapping/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Get role mapping
  - info:
      name: Create or replace a role mapping
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/rolesmapping/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace a role mapping
  - info:
      name: Patch role mapping
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/rolesmapping/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Patch role mapping
  - info:
      name: Delete role mapping
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/rolesmapping/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Delete role mapping
- info:
    name: Action Groups
    type: folder
  items:
  - info:
      name: List all action groups
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/actiongroups
    docs: List all action groups
  - info:
      name: Get action group
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/actiongroups/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Get action group
  - info:
      name: Create or replace an action group
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/actiongroups/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace an action group
  - info:
      name: Patch action group
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/actiongroups/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Patch action group
  - info:
      name: Delete action group
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/actiongroups/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Delete action group
- info:
    name: Tenants
    type: folder
  items:
  - info:
      name: List all tenants
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/tenants
    docs: List all tenants
  - info:
      name: Get tenant
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/tenants/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Get tenant
  - info:
      name: Create or replace a tenant
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/tenants/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace a tenant
  - info:
      name: Patch tenant
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/tenants/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Patch tenant
  - info:
      name: Delete tenant
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/tenants/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Delete tenant
- info:
    name: Security Config
    type: folder
  items:
  - info:
      name: Get security configuration
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/securityconfig
    docs: Get security configuration
  - info:
      name: Patch security configuration
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/securityconfig
      body:
        type: json
        data: '{}'
    docs: Patch security configuration
  - info:
      name: Replace security configuration
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/securityconfig/config
      body:
        type: json
        data: '{}'
    docs: Replace security configuration
- info:
    name: Audit
    type: folder
  items:
  - info:
      name: Get audit log configuration
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/audit
    docs: Get audit log configuration
  - info:
      name: Replace audit log configuration
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/audit/config
      body:
        type: json
        data: '{}'
    docs: Replace audit log configuration
  - info:
      name: Patch audit log configuration
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/audit/config
      body:
        type: json
        data: '{}'
    docs: Patch audit log configuration
- info:
    name: Allowlist
    type: folder
  items:
  - info:
      name: Get allowlist
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/allowlist
    docs: Get allowlist
  - info:
      name: Replace allowlist
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/allowlist
      body:
        type: json
        data: '{}'
    docs: Replace allowlist
  - info:
      name: Patch allowlist
      type: http
    http:
      method: PATCH
      url: https://{cluster-host}:9200/_plugins/_security/api/allowlist
      body:
        type: json
        data: '{}'
    docs: Patch allowlist
- info:
    name: Nodes DN
    type: folder
  items:
  - info:
      name: List all node DN entries
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/nodesdn
    docs: List all node DN entries
  - info:
      name: Get node DN entry
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/nodesdn/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Get node DN entry
  - info:
      name: Create or replace node DN entry
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/nodesdn/:name
      params:
      - name: name
        value: ''
        type: path
      body:
        type: json
        data: '{}'
    docs: Create or replace node DN entry
  - info:
      name: Delete node DN entry
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/nodesdn/:name
      params:
      - name: name
        value: ''
        type: path
    docs: Delete node DN entry
- info:
    name: Certificates
    type: folder
  items:
  - info:
      name: Get SSL certificates loaded by the cluster
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/api/ssl/certs
    docs: Get SSL certificates loaded by the cluster
  - info:
      name: Reload transport-layer SSL certificates
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/ssl/transport/reloadcerts
    docs: Reload transport-layer SSL certificates
  - info:
      name: Reload HTTP-layer SSL certificates
      type: http
    http:
      method: PUT
      url: https://{cluster-host}:9200/_plugins/_security/api/ssl/http/reloadcerts
    docs: Reload HTTP-layer SSL certificates
- info:
    name: Cache
    type: folder
  items:
  - info:
      name: Flush security cache
      type: http
    http:
      method: DELETE
      url: https://{cluster-host}:9200/_plugins/_security/api/cache
    docs: Flush security cache
- info:
    name: Health
    type: folder
  items:
  - info:
      name: Security plugin health
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/health
    docs: Security plugin health
- info:
    name: SSL Info
    type: folder
  items:
  - info:
      name: Get authentication info for current request
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/authinfo
    docs: Get authentication info for current request
  - info:
      name: Get SSL handshake info for current request
      type: http
    http:
      method: GET
      url: https://{cluster-host}:9200/_plugins/_security/sslinfo
    docs: Get SSL handshake info for current request
bundled: true