[Fleet] remove old bundled.yaml from oas, fixed tags (#194788)

## Summary

Closes https://github.com/elastic/kibana/issues/184685

**Release notes**: These schema changes shouldn't be breaking, but there
were some incorrect/missing response schemas in the old openapi spec.

For example the API `POST /api/fleet/agents/{agentId}/actions` response
was incorrectly documented:
https://petstore.swagger.io/?url=https://raw.githubusercontent.com/elastic/kibana/main/x-pack/plugins/fleet/common/openapi/bundled.json#/Elastic%20Agent%20actions/new-agent-action

```
{
  "body": [
    0
  ],
  "statusCode": 0,
  "headers": "string"
}
```
Fixed here:
31f8cfd6ef/oas_docs/bundle.json#/Elastic%20Agent%20actions/%252Fapi%252Ffleet%252Fagents%252F%257BagentId%257D%252Factions%230
```
{
  "item": {
    "ack_data": "string",
    "agents": [
      "string"
    ],
    "created_at": "string",
    "data": "string",
    "expiration": "string",
    "id": "string",
    "minimum_execution_duration": 0,
    "namespaces": [
      "string"
    ],
    "rollout_duration_seconds": 0,
    "sent_at": "string",
    "source_uri": "string",
    "start_time": "string",
    "total": 0,
    "type": "string"
  }
}
```

The new spec should match the implementation accurately, and responses
are being verified when returned. Tests were added to make sure the
response schemas are correct.
If there are any bugs in the current schema, it will result in a HTTP
500 error with an error message on where the schema validation failed.
Example of an error where a field is missing:
```
{
    "statusCode": 500,
    "error": "Internal Server Error",
    "message": "Failed output validation: [request body.items.0.name]: definition for this key is missing"
}
```
Example of an error where a field is mandatory in the schema, but not
provided in the response (missing `schema.maybe`)
```
{
    "statusCode": 500,
    "error": "Internal Server Error",
    "message": "Failed output validation: [request body.items.0.internal]: expected value of type [boolean] but got [undefined]"
}
```

There are a few places where the validation allows unknown fields. Used
it where some fields were not included in TS types or fields are more
dynamic, e.g. fields coming from packages or elasticsearch settings.

https://github.com/search?q=repo%3Aelastic%2Fkibana+extendsDeep+path%3A%2F%5Ex-pack%5C%2Fplugins%5C%2Ffleet%5C%2Fserver%5C%2Ftypes%5C%2F%2F&type=code
```
.extendsDeep({
  unknowns: 'allow',
 })
```

Changes in this pr:
Remove using old `bundled.yaml` to generate oas, fixed tags.
Removed old openapi files, updated readme.

Here is the new bundle in Swagger UI: 

[stateful](31f8cfd6ef/oas_docs/bundle.json)

[serverless](da72ee0093/oas_docs/bundle.serverless.json)

Updated serverless scripts too.

Updated Fleet readme:
da72ee0093/x-pack/plugins/fleet/common/openapi/README.md

Generated the new bundle by running this script locally:
```
node scripts/capture_oas_snapshot --include-path /api/fleet --update
```

---------

Co-authored-by: kibanamachine <42973632+kibanamachine@users.noreply.github.com>
This commit is contained in:
Julia Bardi 2024-10-07 11:00:12 +02:00 committed by GitHub
parent c392aba39f
commit 52abebf0cb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
178 changed files with 157532 additions and 40690 deletions

View file

@ -5,7 +5,7 @@ set -euo pipefail
source .buildkite/scripts/common/util.sh
echo --- Capture OAS snapshot
cmd="node scripts/capture_oas_snapshot --include-path /api/status --include-path /api/alerting/rule/ --include-path /api/alerting/rules --include-path /api/actions --include-path /api/security/role --include-path /api/spaces"
cmd="node scripts/capture_oas_snapshot --include-path /api/status --include-path /api/alerting/rule/ --include-path /api/alerting/rules --include-path /api/actions --include-path /api/security/role --include-path /api/spaces --include-path /api/fleet"
if is_pr && ! is_auto_commit_disabled; then
cmd="$cmd --update"
fi

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -20,7 +20,6 @@ const { REPO_ROOT } = require('@kbn/repo-info');
`${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis.yaml`,
`${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
// Observability Solution
`${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,

View file

@ -20,7 +20,6 @@ const { REPO_ROOT } = require('@kbn/repo-info');
`${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis.yaml`,
`${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
// Observability Solution
`${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,

View file

@ -18,7 +18,6 @@ const { REPO_ROOT } = require('@kbn/repo-info');
`${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml`,
`${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled_serverless.yaml`,
`${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
// Observability Solution
`${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,

View file

@ -18,7 +18,6 @@ const { REPO_ROOT } = require('@kbn/repo-info');
`${REPO_ROOT}/src/plugins/data_views/docs/openapi/bundled.yaml`,
`${REPO_ROOT}/x-pack/plugins/ml/common/openapi/ml_apis_serverless.yaml`,
`${REPO_ROOT}/packages/core/saved-objects/docs/openapi/bundled_serverless.yaml`,
`${REPO_ROOT}/x-pack/plugins/fleet/common/openapi/bundled.yaml`,
// Observability Solution
`${REPO_ROOT}/x-pack/plugins/observability_solution/apm/docs/openapi/apm.yaml`,

View file

@ -1,39 +1,24 @@
# OpenAPI
The current self-contained spec file, available [as JSON](https://raw.githubusercontent.com/elastic/kibana/master/x-pack/plugins/fleet/common/openapi/bundled.json) or [as YAML](https://raw.githubusercontent.com/elastic/kibana/master/x-pack/plugins/fleet/common/openapi/bundled.yaml), can be used for online tools like those found at https://openapi.tools/.
There is a new way to generate openapi docs from the route definition in code.
For example, [click here to view the specification in the Swagger UI](https://petstore.swagger.io/?url=https://raw.githubusercontent.com/elastic/kibana/master/x-pack/plugins/fleet/common/openapi/bundled.json).
When adding a new route/modifying request/response parameters, make sure to add/update schema definitions when registering the route.
[Example](https://github.com/elastic/kibana/blob/5ea1ab0b8a21764aa54a5ef9650a0d8046f3f0a8/x-pack/plugins/fleet/server/routes/agent/index.ts#L96-L123)
A guide about the openApi specification can be found at [https://swagger.io/docs/specification/about/](https://swagger.io/docs/specification/about/).
Read more: https://docs.elastic.dev/kibana-dev-docs/genereating-oas-for-http-apis
Fleet API docs: https://www.elastic.co/guide/en/fleet/master/fleet-apis.html
To check the updated oas locally, run this script:
## The `openapi` folder
- `entrypoint.yaml` is the overview file which links to the various files on disk.
- `bundled.{yaml,json}` is the resolved output of that entry & other files in a single file. Typically the best choice as input to tools.
- [Paths](paths/README.md): this defines each endpoint. A path can have one operation per http method.
- [Components](components/README.md): Reusable components like [`schemas`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject),
[`responses`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responseObject)
[`parameters`](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject)
## Tools
It is possible to validate the docs before bundling them with the following command:
```shell
npx @redocly/cli lint entrypoint.yaml
```
node scripts/capture_oas_snapshot --include-path /api/fleet --update
```
Then generate the `bundled` files with the following:
Use `--include-path /api/fleet` to only generate fleet paths.
```shell
npx @redocly/openapi-cli bundle --ext yaml --output bundled.yaml entrypoint.yaml
npx @redocly/openapi-cli bundle --ext json --output bundled.json entrypoint.yaml
```
Use `--no-serverless` to only generate for stateful.
Validate the resulting bundle via
Check the result in `oas_docs/bundle.json` and `oas_docs/bundle.serverless.json`
```shell
npx @redocly/cli lint bundled.json
```
Check the result in Swagger UI by taking the raw file from the pr: https://petstore.swagger.io/?url=https://raw.githubusercontent.com/elastic/kibana/main/oas_docs/bundle.json
Changes to the bundles don't have to be committed, it is auto-committed by CI in `capture_oas_snapshot.sh`.

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,13 +0,0 @@
Reusable components
===========
* Created the following folders for the various OpenAPI component types:
- `schemas` - reusable [Schema Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#schemaObject)
- `responses` - reusable [Response Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#responseObject)
- `parameters` - reusable [Parameter Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#parameterObject)
- `examples` - reusable [Example Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#exampleObject)
- `headers` - reusable [Header Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#headerObject)
- `request_bodies` - reusable [Request Body Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#requestBodyObject)
- `links` - reusable [Link Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#linkObject)
- `callbacks` - reusable [Callback Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#callbackObject)
- `security_schemes` - reusable [Security Scheme Objects](https://github.com/OAI/OpenAPI-Specification/blob/master/versions/3.0.2.md#securitySchemeObject)

View file

@ -1,6 +0,0 @@
schema:
type: string
in: header
name: kbn-xsrf
required: true
description: Kibana's anti Cross-Site Request Forgery token. Can be any string value.

View file

@ -1,8 +0,0 @@
name: format
in: query
description: Simplified or legacy format for package inputs
required: false
schema:
type: string
enum: ['simplified', 'legacy']

View file

@ -1,5 +0,0 @@
name: kuery
in: query
required: false
schema:
type: string

View file

@ -1,6 +0,0 @@
name: page
in: query
required: false
schema:
type: integer
default: 1

View file

@ -1,7 +0,0 @@
name: perPage
in: query
description: The number of items to return
required: false
schema:
type: integer
default: 20

View file

@ -1,5 +0,0 @@
name: showInactive
in: query
required: false
schema:
type: boolean

View file

@ -1,5 +0,0 @@
name: showUpgradeable
in: query
required: false
schema:
type: boolean

View file

@ -1,6 +0,0 @@
name: sortField
in: query
required: false
schema:
type: string
deprecated: true

View file

@ -1,6 +0,0 @@
name: sortOrder
in: query
required: false
schema:
type: string
enum: [asc, desc]

View file

@ -1,6 +0,0 @@
name: withMetrics
in: query
description: Return agent metrics, false by default
required: false
schema:
type: boolean

View file

@ -1,12 +0,0 @@
description: Generic Error
content:
application/json:
schema:
type: object
properties:
statusCode:
type: number
error:
type: string
message:
type: string

View file

@ -1,55 +0,0 @@
title: Agent
type: object
properties:
type:
$ref: ./agent_type.yaml
active:
type: boolean
enrolled_at:
type: string
unenrolled_at:
type: string
unenrollment_started_at:
type: string
access_api_key_id:
type: string
default_api_key_id:
type: string
policy_id:
type: string
policy_revision:
type: number
last_checkin:
type: string
user_provided_metadata:
$ref: ./agent_metadata.yaml
local_metadata:
$ref: ./agent_metadata.yaml
id:
type: string
access_api_key:
type: string
status:
$ref: ./agent_status.yaml
default_api_key:
type: string
components:
type: array
items:
$ref: ./agent_component.yaml
metrics:
type: object
properties:
cpu_avg:
type: number
description: Average agent CPU usage during the last 5 minutes, number between 0-1
memory_size_byte_avg:
type: number
description: Average agent memory consumption during the last 5 minutes
required:
- type
- active
- enrolled_at
- id
- status

View file

@ -1,27 +0,0 @@
title: Agent action
oneOf:
- properties:
data:
type: string
ack_data:
type: string
type:
type: string
enum:
- UNENROLL
- UPGRADE
- POLICY_REASSIGN
- properties:
type:
type: string
data:
type: object
properties:
log_level:
type: string
nullable: true
enum:
- debug
- info
- warning
- error

View file

@ -1,15 +0,0 @@
title: Agent component
type: object
properties:
id:
type: string
type:
type: string
status:
$ref: ./agent_component_status.yaml
message:
type: string
units:
type: array
items:
$ref: ./agent_component_unit.yaml

View file

@ -1,10 +0,0 @@
title: Agent component status
type: string
enum:
- starting
- configuring
- healthy
- degraded
- failed
- stopping
- stopped

View file

@ -1,13 +0,0 @@
title: Agent component unit
type: object
properties:
id:
type: string
type:
$ref: ./agent_component_unit_type.yaml
status:
$ref: ./agent_component_status.yaml
message:
type: string
payload:
type: object

View file

@ -1,5 +0,0 @@
title: Agent component unit type
type: string
enum:
- input
- output

View file

@ -1,27 +0,0 @@
title: Agent diagnostics
type: object
properties:
id:
type: string
name:
type: string
createTime:
type: string
filePath:
type: string
actionId:
type: string
status:
enum:
- READY
- AWAITING_UPLOAD
- DELETED
- IN_PROGRESS
required:
- id
- name
- createTime
- filePath
- actionId
- status

View file

@ -1,6 +0,0 @@
title: Agents get by action ids
type: array
items:
type: array
items:
type: string

View file

@ -1,2 +0,0 @@
title: Agent metadata
type: object

View file

@ -1,126 +0,0 @@
title: Agent Policy
type: object
properties:
id:
type: string
name:
type: string
namespace:
type: string
description:
type: string
monitoring_enabled:
type: array
items:
type: string
enum:
- metrics
- logs
keep_monitoring_alive:
description: When set to true, monitoring will be enabled but logs/metrics collection will be disabled
type: boolean
nullable: true
data_output_id:
type: string
nullable: true
monitoring_output_id:
type: string
nullable: true
fleet_server_host_id:
type: string
nullable: true
download_source_id:
type: string
nullable: true
unenroll_timeout:
type: integer
inactivity_timeout:
type: integer
package_policies:
description: This field is present only when retrieving a single agent policy, or when retrieving a list of agent policies with the ?full=true parameter
type: array
items:
$ref: ./package_policy.yaml
updated_on:
type: string
format: date-time
updated_by:
type: string
revision:
type: number
agents:
type: number
unprivileged_agents:
type: number
agent_features:
type: array
items:
type: object
properties:
name:
type: string
enabled:
type: boolean
required:
- name
- enabled
is_protected:
description: Indicates whether the agent policy has tamper protection enabled. Default false.
type: boolean
overrides:
type: object
description: Override settings that are defined in the agent policy. Input settings cannot be overridden. The override option should be used only in unusual circumstances and not as a routine procedure.
nullable: true
advanced_settings:
type: object
description: Advanced settings stored in the agent policy, e.g. agent_limits_go_max_procs
nullable: true
supports_agentless:
type: boolean
description: Indicates whether the agent policy supports agentless integrations. Only allowed in a serverless environment.
global_data_tags:
type: array
items:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
description: User defined data tags that are added to all of the inputs. The values can be strings or numbers.
monitoring_pprof_enabled:
type: boolean
monitoring_http:
type: object
properties:
enabled:
type: boolean
host:
type: string
port:
type: number
required:
- enabled
monitoring_diagnostics:
type: object
properties:
limit:
type: object
properties:
interval:
type: string
burst:
type: number
uploader:
type: object
properties:
max_retries:
type: number
init_dur:
type: string
max_dur:
type: string
required:
- id
- status
- name
- namespace

View file

@ -1,63 +0,0 @@
title: Create agent policy request
type: object
properties:
id:
type: string
name:
type: string
namespace:
type: string
description:
type: string
monitoring_enabled:
type: array
items:
type: string
enum:
- metrics
- logs
data_output_id:
type: string
nullable: true
monitoring_output_id:
type: string
nullable: true
fleet_server_host_id:
type: string
nullable: true
download_source_id:
type: string
nullable: true
unenroll_timeout:
type: integer
inactivity_timeout:
type: integer
agent_features:
type: array
items:
type: object
properties:
name:
type: string
enabled:
type: boolean
required:
- name
- enabled
is_protected:
type: boolean
force:
type: boolean
description: Force agent policy creation even if packages are not verified.
global_data_tags:
type: array
items:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
description: User defined data tags that are added to all of the inputs. The values can be strings or numbers.
required:
- name
- namespace

View file

@ -1,11 +0,0 @@
title: Agent policy full response
type: object
oneOf:
- type: object
properties:
item:
type: string
- type: object
properties:
item:
$ref: ./full_agent_policy.yaml

View file

@ -1,61 +0,0 @@
title: Update agent policy request
type: object
properties:
name:
type: string
namespace:
type: string
description:
type: string
monitoring_enabled:
type: array
items:
type: string
enum:
- metrics
- logs
data_output_id:
type: string
nullable: true
monitoring_output_id:
type: string
nullable: true
fleet_server_host_id:
type: string
nullable: true
download_source_id:
type: string
nullable: true
unenroll_timeout:
type: integer
inactivity_timeout:
type: integer
agent_features:
type: array
items:
type: object
properties:
name:
type: string
enabled:
type: boolean
required:
- name
- enabled
is_protected:
type: boolean
force:
type: boolean
description: Force agent policy creation even if packages are not verified.
global_data_tags:
type: array
items:
type: object
additionalProperties:
oneOf:
- type: string
- type: number
description: User defined data tags that are added to all of the inputs. The values can be strings or numbers.
required:
- name
- namespace

View file

@ -1,8 +0,0 @@
type: string
title: Elastic Agent status
enum:
- offline
- error
- online
- inactive
- warning

View file

@ -1,6 +0,0 @@
type: string
title: Agent type
enum:
- PERMANENT
- EPHEMERAL
- TEMPORARY

View file

@ -1,24 +0,0 @@
title: Bulk install packages response
type: object
properties:
response:
type: array
deprecated: true
items:
type: object
properties:
name:
type: string
version:
type: string
items:
type: array
items:
type: object
properties:
name:
type: string
version:
type: string
required:
- items

View file

@ -1,32 +0,0 @@
title: Bulk upgrade agents
type: object
properties:
version:
type: string
description: version to upgrade to
source_uri:
type: string
description: alternative upgrade binary download url
rollout_duration_seconds:
type: number
description: rolling upgrade window duration in seconds
start_time:
type: string
description: start time of upgrade in ISO 8601 format
agents:
oneOf:
- type: string
description: KQL query string, leave empty to action all agents
- type: array
items:
type: string
description: list of agent IDs
force:
type: boolean
description: Force upgrade, skipping validation (should be used with caution)
skipRateLimitCheck:
type: boolean
description: Skip rate limit check for upgrade
required:
- agents
- version

View file

@ -1,30 +0,0 @@
title: Data stream
type: object
properties:
index:
type: string
dataset:
type: string
namespace:
type: string
type:
type: string
package:
type: string
package_version:
type: string
last_activity_ms:
type: number
size_in_bytes:
type: number
size_in_bytes_formatted:
type: string
dashboard:
type: array
items:
type: object
properties:
id:
type: string
title:
type: string

View file

@ -1,19 +0,0 @@
title: Download Source
type: object
properties:
id:
type: string
is_default:
type: boolean
name:
type: string
host:
type: string
proxy_id:
description: The ID of the proxy to use for this download source. See the proxies API for more information.
type: string
nullable: true
required:
- is_default
- name
- host

View file

@ -1,9 +0,0 @@
title: Elasticsearch asset type
type: string
enum:
- component_template
- ingest_pipeline
- index_template
- ilm_policy
- transform
- data_stream_ilm_policy

View file

@ -1,28 +0,0 @@
title: Enrollment API key
type: object
properties:
id:
type: string
api_key_id:
type: string
description: The ID of the API key in the Security API.
api_key:
type: string
description: The enrollment API key (token) used for enrolling Elastic Agents.
name:
type: string
description: The name of the enrollment API key.
active:
type: boolean
description: When false, the enrollment API key is revoked and cannot be used for enrolling Elastic Agents.
policy_id:
type: string
description: The ID of the agent policy the Elastic Agent will be enrolled in.
created_at:
type: string
required:
- id
- api_key_id
- api_key
- active
- created_at

View file

@ -1,25 +0,0 @@
title: Fleet Server Host
type: object
properties:
id:
type: string
name:
type: string
is_default:
type: boolean
is_internal:
type: boolean
is_preconfigured:
type: boolean
proxy_id:
type: string
host_urls:
type: array
items:
type: string
required:
- fleet_server_hosts
- id
- is_default
- is_preconfigured
- host_urls

View file

@ -1,54 +0,0 @@
title: Fleet settings response
type: object
properties:
fleet_server:
type: object
properties:
policies:
type: array
items:
type: object
properties:
id:
type: string
name:
type: string
is_managed:
type: boolean
is_default_fleet_server:
type: boolean
has_fleet_server:
type: boolean
fleet_server_host_id:
type: string
download_source_id:
type: string
space_ids:
type: array
items:
type: string
data_output_id:
type: string
required:
- id
- name
- is_managed
has_active:
type: boolean
host:
$ref: ./fleet_server_host.yaml
host_proxy:
$ref: ./proxies.yaml
es_output:
$ref: ./output_create_request_elasticsearch.yaml
es_output_proxy:
$ref: ./proxies.yaml
required:
- agent_policies
- has_active
download_source:
$ref: ./download_sources.yaml
download_source_proxy:
$ref: ./proxies.yaml
required:
- fleet_server

View file

@ -1,7 +0,0 @@
title: Fleet settings response
type: object
properties:
item:
$ref: ./settings.yaml
required:
- item

View file

@ -1,20 +0,0 @@
title: Fleet Setup response
type: object
properties:
isInitialized:
type: boolean
nonFatalErrors:
type: array
items:
type: object
properties:
name:
type: string
message:
type: string
required:
- name
- message
required:
- isInitialized
- nonFatalErrors

View file

@ -1,26 +0,0 @@
title: Fleet status response
type: object
properties:
isReady:
type: boolean
missing_requirements:
type: array
items:
type: string
enum:
- 'tls_required'
- 'api_keys'
- 'fleet_admin_user'
- 'fleet_server'
missing_optional_features:
type: array
items:
type: string
enum:
- 'encrypted_saved_object_encryption_key_required'
package_verification_key_id:
type: string
required:
- isReady
- missing_requirements
- missing_optional_features

View file

@ -1,132 +0,0 @@
title: Full agent policy
type: object
properties:
id:
type: string
outputs:
type: object
additionalProperties:
$ref: ./full_agent_policy_output.yaml
output_permissions:
type: object
additionalProperties:
type: object
properties:
output:
type: integer
data:
$ref: ./full_agent_policy_output_permissions.yaml
monitoring:
type: object
properties:
namespace:
type: string
use_output:
type: string
enabled:
type: boolean
metrics:
type: boolean
logs:
type: boolean
traces:
type: boolean
pprof:
type: object
properties:
enabled:
type: boolean
required:
- enabled
http:
type: object
properties:
enabled:
type: boolean
host:
type: string
port:
type: number
required:
- enabled
diagnostics:
type: object
properties:
limit:
type: object
properties:
interval:
type: string
burst:
type: number
uploader:
type: object
properties:
max_retries:
type: number
init_dur:
type: string
max_dur:
type: string
required:
- enabled
- metrics
- logs
- traces
fleet:
oneOf:
- type: object
properties:
hosts:
type: array
items:
type: string
proxy_url:
type: string
proxy_headers: {}
ssl:
type: object
properties:
verification_mode:
type: string
certificate:
type: string
key:
type: string
certificate_authorities:
type: array
items:
type: string
renegotiation:
type: string
- type: object
properties:
kibana:
type: object
properties:
hosts:
type: array
items:
type: string
protocol:
type: string
path:
type: string
inputs:
type: string
revision:
type: number
agent:
type: string
nullable: true
secret_references:
type: array
items:
type: object
properties:
id:
type: string
required:
- id
- outputs
- inputs

View file

@ -1,45 +0,0 @@
title: Full agent policy input
allOf:
- type: object
additionalProperties: true
properties:
id:
type: string
name:
type: string
revision:
type: number
type:
type: string
data_stream:
type: object
properties:
namespace:
type: string
required:
- namespace
use_output:
type: string
meta:
type: object
additionalProperties: true
properties:
package:
type: object
properties:
name:
type: string
version:
type: string
required:
- name
- version
streams:
$ref: ./full_agent_policy_input_stream.yaml
required:
- id
- name
- revision
- type
- data_stream
- use_output

View file

@ -1,20 +0,0 @@
title: Full agent policy input stream
allOf:
- type: object
additionalProperties: true
properties:
id:
type: string
data_stream:
type: object
properties:
dataset:
type: string
type:
type: string
required:
- dataset
- type
required:
- id
- data_stream

View file

@ -1,22 +0,0 @@
title: Full agent policy
type: object
properties:
hosts:
type: array
items:
type: string
ca_sha256:
type: string
nullable: true
proxy_url:
type: string
proxy_headers: {}
type: {}
additionalProperties:
type: object
properties:
text: {}
required:
- type
- hosts
- ca_sha256

View file

@ -1,28 +0,0 @@
title: Full agent policy output permissions
additionalProperties:
type: object
properties:
packagePolicyName:
type: string
data:
type: object
properties:
cluster:
type: array
items:
type: string
indices:
type: array
items:
type: object
properties:
names:
type: array
items:
type: string
privileges:
type: array
items:
type: string

View file

@ -1,7 +0,0 @@
title: Get Agent Tags response
type: object
properties:
items:
type: array
items:
type: string

View file

@ -1,44 +0,0 @@
title: Get Agent response
type: object
properties:
list:
type: array
items:
$ref: ./agent.yaml
deprecated: true
items:
type: array
items:
$ref: ./agent.yaml
total:
type: number
page:
type: number
perPage:
type: number
statusSummary:
type: object
properties:
offline:
type: number
error:
type: number
online :
type: number
inactive :
type: number
enrolling:
type: number
unenrolling:
type: number
unenrolled :
type: number
updating :
type: number
degraded':
type: number
required:
- items
- total
- page
- perPage

View file

@ -1,26 +0,0 @@
title: Bulk get assets response
type: object
deprecated: true
properties:
items:
type: array
items:
type: object
properties:
id:
type: string
type:
$ref: ./saved_object_type.yaml
updatedAt:
type: string
attributes:
type: object
properties:
title:
type: string
description:
type: string
appLink:
type: string
required:
- items

View file

@ -1,36 +0,0 @@
title: Get categories response
type: object
properties:
response:
type: array
items:
type: object
deprecated: true
properties:
id:
type: string
title:
type: string
count:
type: number
required:
- id
- title
- count
items:
type: array
items:
type: object
properties:
id:
type: string
title:
type: string
count:
type: number
required:
- id
- title
- count
required:
- items

View file

@ -1,14 +0,0 @@
title: Get Packages response
type: object
properties:
response:
type: array
deprecated: true
items:
$ref: ./search_result.yaml
items:
type: array
items:
$ref: ./search_result.yaml
required:
- items

View file

@ -1,29 +0,0 @@
title: Install Result
type: object
properties:
assets:
type: array
items: []
status:
type: string
enum:
- installed
- already_installed
error:
type: object
properties:
name:
type: string
message:
type: string
stack:
type: string
installType:
type: array
items:
type: string
enum:
- metrics
- logs
required:
- installType

View file

@ -1,130 +0,0 @@
title: Installation info object
type: object
properties:
type:
type: string
created_at:
type: string
updated_at:
type: string
namespaces:
type: array
items:
type: string
installed_kibana:
type: object
properties:
id:
type: string
type:
$ref: ./kibana_saved_object_type.yaml
installed_es:
type: object
properties:
id:
type: string
deferred:
type: boolean
type:
$ref: ./elasticsearch_asset_type.yaml
name:
type: string
version:
type: string
install_status:
type: string
enum:
- installed
- installing
- install_failed
install_source:
type: string
enum:
- registry
- upload
- bundled
install_kibana_space_id:
type: string
install_format_schema_version:
type: string
latest_install_failed_attempts:
description: Latest failed install errors
type: array
items:
type: object
properties:
created_at:
type: string
target_version:
type: string
error:
type: object
properties:
name:
type: string
message:
type: string
stack:
type: string
latest_executed_state:
description: Latest successfully executed state in package install state machine
type: object
properties:
name:
type: string
enum:
- create_restart_installation
- install_kibana_assets
- install_ilm_policies
- install_ml_model
- install_index_template_pipelines
- remove_legacy_templates
- update_current_write_indices
- install_transforms
- delete_previous_pipelines
- save_archive_entries_from_assets_map
- update_so
started_at:
type: string
error:
type: string
verification_status:
type: string
enum:
- verified
- unverified
- unknown
verification_key_id:
type: string
nullable: true
experimental_data_stream_features:
type: array
properties:
data_stream:
type: string
features:
type: object
properties:
synthetic_source:
type: boolean
nullable: true
tsdb:
type: boolean
nullable: true
doc_value_only_numeric:
type: boolean
nullable: true
doc_value_only_other:
type: boolean
nullable: true
required:
- installed_kibana
- installed_es
- name
- version
- install_status
- install_version
- install_started_at
- install_source
- verification_status
- latest_install_failed_attempts

View file

@ -1,12 +0,0 @@
title: Kibana saved object asset type
type: string
enum:
- dashboard
- visualization
- search
- index-pattern
- map
- lens
- ml-module
- security-rule
- csp_rule_template

View file

@ -1,64 +0,0 @@
title: New package policy
type: object
description: ''
properties:
enabled:
type: boolean
package:
type: object
properties:
name:
type: string
version:
type: string
title:
type: string
requires_root:
type: boolean
required:
- name
- version
namespace:
type: string
output_id:
type: string
inputs:
type: array
items:
type: object
properties:
type:
type: string
enabled:
type: boolean
processors:
type: array
items:
type: string
streams:
type: array
items: {}
config:
type: object
vars:
type: object
required:
- type
- enabled
policy_id:
type: string
nullable: true
deprecated: true
policy_ids:
type: array
items:
type: string
name:
type: string
description:
type: string
overrides:
type: object
required:
- inputs
- name

View file

@ -1,13 +0,0 @@
title: Output
oneOf:
- $ref: './output_create_request_elasticsearch.yaml'
- $ref: './output_create_request_kafka.yaml'
- $ref: './output_create_request_logstash.yaml'
- $ref: './output_create_request_remote_elasticsearch.yaml'
discriminator:
propertyName: type
mapping:
elasticsearch: './output_create_request_elasticsearch.yaml'
kafka: './output_create_request_kafka.yaml'
logstash: './output_create_request_logstash.yaml'
remote_elasticsearch: './output_create_request_remote_elasticsearch.yaml'

View file

@ -1,63 +0,0 @@
title: elasticsearch
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['elasticsearch']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
preset:
type: string
enum: ['balanced', 'custom', 'throughput', 'scale', 'latency']
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
required:
- name

View file

@ -1,149 +0,0 @@
title: kafka
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['kafka']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
verification_mode:
type: string
enum: ['none', 'full', 'certificate', 'strict']
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
version:
type: string
key:
type: string
compression:
type: string
compression_level:
type: number
client_id:
type: string
auth_type:
type: string
connection_type:
type: string
enum: ['plaintext', 'encryption']
username:
type: string
password:
type: string
sasl:
type: object
properties:
mechanism:
type: string
partition:
type: string
random:
type: object
properties:
group_events:
type: number
round_robin:
type: object
properties:
group_events:
type: number
topic:
type: string
topics:
deprecated: true
description: Use topic instead.
type: array
items:
type: object
properties:
topic:
type: string
when:
deprecated: true
description: Deprecated, kafka output do not support conditionnal topics anymore.
type: object
properties:
type:
type: string
condition:
type: string
headers:
type: array
items:
type: object
properties:
key:
type: string
value:
type: string
timeout:
type: number
broker_timeout:
type: number
required_acks:
type: number
secrets:
type: object
properties:
password:
type: string
ssl:
type: object
properties:
key:
type: string
required:
- name
- type
- topics
- auth_type
- hosts

View file

@ -1,70 +0,0 @@
title: logstash
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['logstash']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
secrets:
type: object
properties:
ssl:
type: object
properties:
key:
type: string
required:
- name
- hosts
- type

View file

@ -1,29 +0,0 @@
title: remote_elasticsearch
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['remote_elasticsearch']
hosts:
type: array
items:
type: string
service_token:
type: string
secrets:
type: object
properties:
service_token:
type: string
required:
- name

View file

@ -1,11 +0,0 @@
title: Output
oneOf:
- $ref: './output_update_request_elasticsearch.yaml'
- $ref: './output_update_request_kafka.yaml'
- $ref: './output_update_request_logstash.yaml'
discriminator:
propertyName: type
mapping:
elasticsearch: './output_update_request_elasticsearch.yaml'
kafka: './output_update_request_kafka.yaml'
logstash: './output_update_request_logstash.yaml'

View file

@ -1,65 +0,0 @@
title: elasticsearch
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['elasticsearch']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
preset:
type: string
enum: ['balanced', 'custom', 'throughput', 'scale', 'latency']
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
required:
- name
- hosts
- type

View file

@ -1,134 +0,0 @@
title: kafka
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['kafka']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
verification_mode:
type: string
enum: ['none', 'full', 'certificate', 'strict']
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
version:
type: string
key:
type: string
compression:
type: string
compression_level:
type: number
client_id:
type: string
auth_type:
type: string
connection_type:
type: string
enum: ['plaintext', 'encryption']
username:
type: string
password:
type: string
sasl:
type: object
properties:
mechanism:
type: string
partition:
type: string
random:
type: object
properties:
group_events:
type: number
round_robin:
type: object
properties:
group_events:
type: number
topic:
type: string
topics:
deprecated: true
description: Use topic instead.
type: array
items:
type: object
properties:
topic:
type: string
when:
deprecated: true
description: Deprecated, kafka output do not support conditionnal topics anymore.
type: object
properties:
type:
type: string
condition:
type: string
headers:
type: array
items:
type: object
properties:
key:
type: string
value:
type: string
timeout:
type: number
broker_timeout:
type: number
required_acks:
type: number
required:
- name

View file

@ -1,60 +0,0 @@
title: logstash
type: object
properties:
id:
type: string
is_default:
type: boolean
is_default_monitoring:
type: boolean
is_internal:
type: boolean
name:
type: string
type:
type: string
enum: ['logstash']
hosts:
type: array
items:
type: string
ca_sha256:
type: string
ca_trusted_fingerprint:
type: string
config:
type: object
config_yaml:
type: string
ssl:
type: object
properties:
certificate_authorities:
type: array
items:
type: string
certificate:
type: string
key:
type: string
proxy_id:
type: string
shipper:
type: object
properties:
disk_queue_enabled:
type: boolean
disk_queue_path:
type: string
disk_queue_max_size:
type: number
disk_queue_encryption_enabled:
type: boolean
disk_queue_compression_enabled:
type: boolean
compression_level:
type: number
loadbalance:
type: boolean
required:
- name

View file

@ -1,145 +0,0 @@
title: Package information
type: object
properties:
name:
type: string
title:
type: string
version:
type: string
release:
type: string
deprecated: true
description: release label is deprecated, derive from the version instead (packages follow semver)
enum:
- experimental
- beta
- ga
source:
type: object
properties:
license:
type: string
enum:
- Apache-2.0
- Elastic-2.0
readme:
type: string
description:
type: string
type:
type: string
categories:
type: array
items:
type: string
conditions:
type: object
properties:
kibana:
type: object
properties:
versions:
type: string
elasticsearch:
type: object
properties:
subscription:
type: string
enum:
- basic
- gold
- platinum
- enterprise
screenshots:
type: array
items:
type: object
properties:
src:
type: string
path:
type: string
title:
type: string
size:
type: string
type:
type: string
required:
- src
- path
icons:
type: array
items:
type: string
assets:
type: array
items:
type: string
internal:
type: boolean
format_version:
type: string
data_streams:
type: array
items:
type: object
properties:
title:
type: string
name:
type: string
release:
type: string
ingeset_pipeline:
type: string
vars:
type: array
items:
type: object
properties:
name:
type: string
default:
type: string
required:
- name
- default
type:
type: string
package:
type: string
required:
- title
- name
- release
- ingeset_pipeline
- type
- package
download:
type: string
path:
type: string
elasticsearch:
type: object
properties:
privileges:
type: object
properties:
cluster:
type: array
items:
type: string
required:
- name
- title
- version
- description
- type
- categories
- conditions
- assets
- format_version
- download
- path

View file

@ -1,17 +0,0 @@
title: Package policy
allOf:
- type: object
properties:
id:
type: string
revision:
type: number
inputs:
oneOf:
- type: array
items: {}
- type: object
required:
- id
- revision
- $ref: ./new_package_policy.yaml

View file

@ -1,102 +0,0 @@
title: Package Policy Request
type: object
properties:
id:
type: string
description: Package policy unique identifier
name:
type: string
description: Package policy name (should be unique)
example: nginx-123
description:
type: string
description: Package policy description
example: 'my description'
namespace:
type: string
description: The package policy namespace. Leave blank to inherit the agent policy's namespace.
example: 'customnamespace'
output_id:
type: string
description: Output ID to send package data to
example: 'output-id'
nullable: true
policy_id:
type: string
description: Agent policy ID where that package policy will be added
example: 'agent-policy-id'
deprecated: true
nullable: true
policy_ids:
type: array
items:
type: string
description: Agent policy IDs where that package policy will be added
example: ['agent-policy-id']
package:
type: object
properties:
name:
type: string
description: Package name
example: 'nginx'
version:
type: string
description: Package version
example: '1.6.0'
required:
- name
- version
vars:
type: object
description: Package root level variable (see integration documentation for more information)
inputs:
type: object
description: Package policy inputs (see integration documentation to know what inputs are available)
example:
nginx-logfile:
enabled: true
streams:
nginx.access:
enabled: true
vars:
paths:
- '/var/log/nginx/access.log*'
tags:
- nginx-access
preserve_original_event: false
ignore_older: 72h
additionalProperties:
type: object
properties:
enabled:
type: boolean
description: enable or disable that input, (default to true)
vars:
type: object
description: Input level variable (see integration documentation for more information)
streams:
type: object
description: Input streams (see integration documentation to know what streams are available)
additionalProperties:
type: object
properties:
enabled:
type: boolean
description: enable or disable that stream, (default to true)
vars:
type: object
description: Stream level variable (see integration documentation for more information)
overrides:
type: object
properties:
inputs:
type: object
description: Override settings that are defined in the package policy. The override option should be used only in unusual circumstances and not as a routine procedure.
nullable: true
force:
type: boolean
description: Force package policy creation even if package is not verified, or if the agent policy is managed.
required:
- name
- package

View file

@ -1,7 +0,0 @@
title: Package usage stats
type: object
properties:
agent_policy_count:
type: integer
required:
- agent_policy_count

View file

@ -1,20 +0,0 @@
title: Fleet Proxy
type: object
properties:
id:
type: string
name:
type: string
url:
type: string
proxy_headers:
type: object
certificate_authorities:
type: string
certificate:
type: string
certificate_key:
type: string
required:
- name
- url

View file

@ -1,26 +0,0 @@
title: Saved Object type
oneOf:
- type: string
enum:
- dashboard
- visualization
- search
- index_pattern
- map
- lens
- security_rule
- csp_rule_template
- ml_module
- tag
- osquery_pack_asset
- osquery_saved_query
- type: string
enum:
- index
- component_template
- ingest_pipeline
- index_template
- ilm_policy
- transform
- data_stream_ilm_policy
- ml_model

View file

@ -1,36 +0,0 @@
title: Search result
type: object
properties:
description:
type: string
download:
type: string
icons:
type: string
name:
type: string
path:
type: string
title:
type: string
type:
type: string
version:
type: string
status:
type: string
installationInfo:
$ref: ./installation_info.yaml
savedObject:
type: object
deprecated: true
required:
- description
- download
- icons
- name
- path
- title
- type
- version
- status

View file

@ -1,17 +0,0 @@
title: Settings
type: object
properties:
id:
type: string
has_seen_add_data_notice:
type: boolean
fleet_server_hosts:
deprecated: true
type: array
items:
type: string
prerelease_integrations_enabled:
type: boolean
required:
- fleet_server_hosts
- id

View file

@ -1,61 +0,0 @@
title: Update package policy
type: object
description: ''
properties:
version:
type: string
enabled:
type: boolean
package:
type: object
properties:
name:
type: string
version:
type: string
title:
type: string
required:
- name
- title
- version
namespace:
type: string
output_id:
type: string
inputs:
type: array
items:
type: object
properties:
type:
type: string
enabled:
type: boolean
processors:
type: array
items:
type: string
streams:
type: array
items: {}
config:
type: object
vars:
type: object
required:
- type
- enabled
- streams
policy_id:
type: string
name:
type: string
description:
type: string
force:
type: boolean
required:
- name
- policy_id
- enabled

View file

@ -1,15 +0,0 @@
title: Upgrade agent
type: object
properties:
version:
type: string
source_uri:
type: string
force:
type: boolean
description: Force upgrade, skipping validation (should be used with caution)
skipRateLimitCheck:
type: boolean
description: Skip rate limit check for upgrade
required:
- version

View file

@ -1,6 +0,0 @@
title: Package policy Upgrade dryrun
type: array
items:
type: array
items:
$ref: ./full_agent_policy_input.yaml

View file

@ -1,23 +0,0 @@
title: Package policy Upgrade dryrun
type: array
items:
allOf:
- $ref: ./package_policy.yaml
- type: object
allOf:
- $ref: ./new_package_policy.yaml
- type: object
properties:
errors:
type: array
items:
type: object
properties:
key:
type: string
message:
type: string
missingVars:
type: array
items:
type: string

View file

@ -1,12 +0,0 @@
title: Upgrade managed package policies result
type: object
properties:
packagePolicyId:
type: string
diff:
# type:
errors:
type: any
required:
- packagePolicyId
- errors

View file

@ -1,217 +0,0 @@
openapi: 3.0.0
tags:
- name: Data streams
- name: Elastic Agents
- name: Elastic Agent actions
- name: Elastic Agent binary download sources
- name: Elastic Agent policies
- name: Elastic Agent status
- name: Elastic Package Manager (EPM)
- name: Fleet enrollment API keys
- name: Fleet internals
- name: Fleet Server hosts
- name: Fleet Kubernetes
- name: Fleet outputs
- name: Fleet package policies
- name: Fleet proxies
- name: Fleet service tokens
- name: Fleet uninstall tokens
info:
title: Fleet
description: OpenAPI schema for Fleet API endpoints
version: '0.2'
contact:
name: Fleet Team
license:
name: Elastic License 2.0
url: https://www.elastic.co/licensing/elastic-license
servers:
- url: 'http://KIBANA_HOST:5601'
paths:
# Fleet internals
/api/fleet/health_check:
$ref: paths/health_check.yaml
/api/fleet/setup:
$ref: paths/setup.yaml
/api/fleet/settings:
$ref: paths/settings.yaml
# /internal/fleet/settings/enrollment:
# servers:
# - url: 'http://KIBANA_HOST:5601/internal/fleet'
# description: Used for Fleet internals and not supported
# $ref: paths/settings_enrollment.yaml
/api/fleet/service-tokens:
$ref: paths/service_tokens_deprecated.yaml
/api/fleet/service_tokens:
$ref: paths/service_tokens.yaml
# EPM / integrations endpoints
/api/fleet/epm/verification_key_id:
$ref: paths/epm@verification_key_id.yaml
/api/fleet/epm/bulk_assets:
$ref: paths/epm@bulk_assets.yaml
/api/fleet/epm/categories:
$ref: paths/epm@categories.yaml
/api/fleet/epm/packages/limited:
$ref: paths/epm@limited_list.yaml
/api/fleet/epm/packages:
$ref: paths/epm@packages.yaml
/api/fleet/epm/packages/_bulk:
$ref: paths/epm@packages_bulk.yaml
'/api/fleet/epm/packages/{pkgkey}':
$ref: 'paths/epm@packages@{pkgkey}_deprecated.yaml'
'/api/fleet/epm/packages/{pkgName}/{pkgVersion}':
$ref: 'paths/epm@packages@{pkg_name}@{pkg_version}.yaml'
'/api/fleet/epm/packages/{pkgName}/{pkgVersion}/transforms/authorize':
$ref: 'paths/epm@packages@{pkg_name}@{pkg_version}@transforms@authorize.yaml'
'/api/fleet/epm/packages/{pkgName}/{pkgVersion}/{filePath}':
$ref: paths/epm@get_file.yaml
'/api/fleet/epm/packages/{pkgName}/stats':
$ref: 'paths/epm@packages@{pkg_name}@stats.yaml'
'/api/fleet/epm/templates/{pkgName}/{pkgVersion}/inputs':
$ref: 'paths/epm@templates@{pkg_name}@{pkg_version}@inputs.yaml'
# Agent endpoints
/api/fleet/agents/setup:
$ref: paths/agents@setup.yaml
/api/fleet/agent-status:
$ref: paths/agent_status_deprecated.yaml
/api/fleet/agent_status:
$ref: paths/agent_status.yaml
/api/fleet/agent_status/data:
$ref: paths/agent_status@data.yaml
/api/fleet/agents:
$ref: paths/agents.yaml
/api/fleet/agents/bulk_upgrade:
$ref: paths/agents@bulk_upgrade.yaml
/api/fleet/agents/action_status:
$ref: paths/agents@action_status.yaml
'/api/fleet/agents/{agentId}':
$ref: 'paths/agents@{agent_id}.yaml'
'/api/fleet/agents/{agentId}/actions':
$ref: 'paths/agents@{agent_id}@actions.yaml'
'/api/fleet/agents/actions/{actionId}/cancel':
$ref: 'paths/agents@actions@{action_id}@cancel.yaml'
'/api/fleet/agents/files/{fileId}/{fileName}':
$ref: 'paths/agents@files@{file_id}@{file_name}.yaml'
'/api/fleet/agents/files/{fileId}':
$ref: 'paths/agents@files@{file_id}.yaml'
'/api/fleet/agents/{agentId}/reassign':
$ref: 'paths/agents@{agent_id}@reassign.yaml'
'/api/fleet/agents/{agentId}/unenroll':
$ref: 'paths/agents@{agent_id}@unenroll.yaml'
'/api/fleet/agents/{agentId}/upgrade':
$ref: 'paths/agents@{agent_id}@upgrade.yaml'
'/api/fleet/agents/{agentId}/uploads':
$ref: 'paths/agents@{agent_id}@uploads.yaml'
'/api/fleet/agents/bulk_reassign':
$ref: 'paths/agents@bulk_reassign.yaml'
'/api/fleet/agents/bulk_unenroll':
$ref: 'paths/agents@bulk_unenroll.yaml'
'/api/fleet/agents/bulk_update_agent_tags':
$ref: 'paths/agents@bulk_update_tags.yaml'
/api/fleet/agents/tags:
$ref: paths/agent_tags.yaml
'/api/fleet/agents/{agentId}/request_diagnostics':
$ref: 'paths/agents@{agent_id}@request_diagnostics.yaml'
/api/fleet/agents/bulk_request_diagnostics:
$ref: 'paths/agents@bulk_request_diagnostics.yaml'
# Agent policies endpoints
/api/fleet/agent_policies:
$ref: paths/agent_policies.yaml
'/api/fleet/agent_policies/{agentPolicyId}':
$ref: 'paths/agent_policies@{agent_policy_id}.yaml'
'/api/fleet/agent_policies/{agentPolicyId}/copy':
$ref: 'paths/agent_policies@{agent_policy_id}@copy.yaml'
'/api/fleet/agent_policies/{agentPolicyId}/full':
$ref: 'paths/agent_policies@{agent_policy_id}@full.yaml'
'/api/fleet/agent_policies/{agentPolicyId}/download':
$ref: 'paths/agent_policies@{agent_policy_id}@download.yaml'
/api/fleet/agent_policies/_bulk_get:
$ref: paths/agent_policies@_bulk_get.yaml
/api/fleet/agent_policies/delete:
$ref: paths/agent_policies@delete.yaml
# Data streams endpoints
/api/fleet/data_streams:
$ref: paths/data_streams.yaml
# Enrollment endpoints
/api/fleet/enrollment-api-keys:
$ref: paths/enrollment_api_keys_deprecated.yaml
'/api/fleet/enrollment-api-keys/{keyId}':
$ref: 'paths/enrollment_api_keys@{key_id}_deprecated.yaml'
/api/fleet/enrollment_api_keys:
$ref: paths/enrollment_api_keys.yaml
'/api/fleet/enrollment_api_keys/{keyId}':
$ref: 'paths/enrollment_api_keys@{key_id}.yaml'
# Package policies endpoints
/api/fleet/package_policies:
$ref: paths/package_policies.yaml
/api/fleet/package_policies/_bulk_get:
$ref: paths/package_policies@_bulk_get.yaml
/api/fleet/package_policies/delete:
$ref: paths/package_policies@delete.yaml
/api/fleet/package_policies/upgrade:
$ref: paths/package_policies@upgrade.yaml
/api/fleet/package_policies/upgrade/dryrun:
$ref: paths/package_policies@upgrade_dryrun.yaml
'/api/fleet/package_policies/{packagePolicyId}':
$ref: 'paths/package_policies@{package_policy_id}.yaml'
# Outputs
/api/fleet/outputs:
$ref: paths/outputs.yaml
'/api/fleet/outputs/{outputId}':
$ref: paths/outputs@{output_id}.yaml
'/api/fleet/outputs/{outputId}/health':
$ref: paths/output_health@{output_id}.yaml
/api/fleet/logstash_api_keys:
$ref: paths/logstash_api_keys.yaml
# Agent binary download sources
/api/fleet/agent_download_sources:
$ref: paths/agent_download_sources.yaml
'/api/fleet/agent_download_sources/{sourceId}':
$ref: paths/agent_download_sources@{source_id}.yaml
# Fleet server hosts
/api/fleet/fleet_server_hosts:
$ref: paths/fleet_server_hosts.yaml
'/api/fleet/fleet_server_hosts/{itemId}':
$ref: paths/fleet_server_hosts@{item_id}.yaml
# Fleet proxies
/api/fleet/proxies:
$ref: paths/proxies.yaml
'/api/fleet/proxies/{itemId}':
$ref: paths/proxies@{item_id}.yaml
# K8s
/api/fleet/kubernetes:
$ref: paths/kubernetes.yaml
# Uninstall tokens
/api/fleet/uninstall_tokens:
$ref: paths/uninstall_tokens.yaml
'/api/fleet/uninstall_tokens/{uninstallTokenId}':
$ref: paths/uninstall_tokens@{uninstall_token_id}.yaml
components:
securitySchemes:
basicAuth:
type: http
scheme: basic
Enrollment_API_Key:
name: Authorization
type: apiKey
in: header
description: 'e.g. Authorization: ApiKey base64EnrollmentApiKey'
Access_API_Key:
name: Authorization
type: apiKey
in: header
description: 'e.g. Authorization: ApiKey base64AccessApiKey'
security:
- basicAuth: []

View file

@ -1,127 +0,0 @@
Paths
=====
Organize our path definitions within this folder. We will reference our paths from our main `openapi.json` entrypoint file.
It may help us to adopt some conventions:
* path separator token (e.g. `@`) or subfolders
* path parameter (e.g. `{example}`)
* file-per-path or file-per-operation
There are different benefits and drawbacks to each decision.
We can adopt any organization we wish. We have some tips for organizing paths based on common practices.
## Each path in a separate file
Use a predefined "path separator" and keep all of our path files in the top level of the `paths` folder.
```
paths/
├── README.md
├── agent_policies.yaml
├── agent_policies@delete.yaml
├── agent_policies@{agent_policy_id}.yaml
├── agent_policies@{agent_policy_id}@copy.yaml
├── agent_status.yaml
├── agents.yaml
├── agents@bulk_upgrade.yaml
├── agents@enroll.yaml
├── agents@setup.yaml
├── agents@{agent_id}.yaml
├── agents@{agent_id}@unenroll.yaml
├── agents@{agent_id}@upgrade.yaml
├── enrollment_api_keys.yaml
├── enrollment_api_keys@{key_id}.yaml
├── epm@categories.yaml
├── epm@packages.yaml
├── epm@packages@{pkgkey}.yaml
├── install@{os_type}.yaml
├── package_policies.yaml
├── package_policies@{package_policy_id}.yaml
└── setup.yaml
```
Redocly recommends using the `@` character for this case.
In addition, Redocly recommends placing path parameters within `{}` curly braces if we adopt this style.
#### Motivations
* Quickly see a list of all paths. Many people think in terms of the "number" of "endpoints" (paths), and not the "number" of "operations" (paths * http methods).
* Only the "file-per-path" option is semantically correct with the OpenAPI Specification 3.0.2. However, Redocly's openapi-cli will build valid bundles for any of the other options too.
#### Drawbacks
* This may require multiple definitions per http method within a single file.
* It requires settling on a path separator (that is allowed to be used in filenames) and sticking to that convention.
## Each operation in a separate file
We may also place each operation in a separate file.
In this case, if we want all paths at the top-level, we can concatenate the http method to the path name. Similar to the above option, we can
### Files at top-level of `paths`
We may name our files with some concatenation for the http method. For example, following a convention such as: `<path with allowed separator>-<http-method>.json`.
#### Motivations
* Quickly see all operations without needing to navigate subfolders.
#### Drawbacks
* Adopting an unusual path separator convention, instead of using subfolders.
### Use subfolders to mirror API path structure
Example:
```
GET /customers
/paths/customers/get.json
```
In this case, the path id defined within subfolders which mirror the API URL structure.
Example with path parameter:
```
GET /customers/{id}
/paths/customers/{id}/get.json
```
#### Motivations
It matches the URL structure.
It is pretty easy to reference:
```json
paths:
'/customers/{id}':
get:
$ref: ./paths/customers/{id}/get.json
put:
$ref: ./paths/customers/{id}/put.json
```
#### Drawbacks
If we have a lot of nested folders, it may be confusing to reference our schemas.
Example
```
file: /paths/customers/{id}/timeline/{messageId}/get.json
# excerpt of file
headers:
Rate-Limit-Remaining:
$ref: ../../../../../components/headers/Rate-Limit-Remaining.json
```
Notice the `../../../../../` in the ref which requires some attention to formulate correctly. While openapi-cli has a linter which suggests possible refs when there is a mistake, this is still a net drawback for APIs with deep paths.

View file

@ -1,60 +0,0 @@
get:
summary: List agent binary download sources
tags:
- Elastic Agent binary download sources
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: ../components/schemas/download_sources.yaml
total:
type: integer
page:
type: integer
perPage:
type: integer
'400':
$ref: ../components/responses/error.yaml
operationId: get-download-sources
post:
summary: Create agent binary download source
tags:
- Elastic Agent binary download sources
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/download_sources.yaml
'400':
$ref: ../components/responses/error.yaml
requestBody:
content:
application/json:
schema:
type: object
properties:
id:
type: string
name:
type: string
is_default:
type: boolean
host:
type: string
required:
- name
- host
- is_default
operationId: post-download-sources

View file

@ -1,83 +0,0 @@
get:
summary: Get agent binary download source by ID
tags:
- Elastic Agent binary download sources
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/download_sources.yaml
required:
- item
'400':
$ref: ../components/responses/error.yaml
operationId: get-one-download-source
parameters:
- schema:
type: string
name: sourceId
in: path
required: true
delete:
summary: Delete agent binary download source by ID
tags:
- Elastic Agent binary download sources
operationId: delete-download-source
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
required:
- id
'400':
$ref: ../components/responses/error.yaml
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml
put:
summary: Update agent binary download source by ID
tags:
- Elastic Agent binary download sources
operationId: update-download-source
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
is_default:
type: boolean
host:
type: string
required:
- name
- is_default
- host
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/download_sources.yaml
required:
- item
'400':
$ref: ../components/responses/error.yaml
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml

View file

@ -1,72 +0,0 @@
get:
summary: List agent policies
tags:
- Elastic Agent policies
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: ../components/schemas/agent_policy.yaml
total:
type: number
page:
type: number
perPage:
type: number
required:
- items
- total
- page
- perPage
'400':
$ref: ../components/responses/error.yaml
operationId: agent-policy-list
parameters:
- $ref: ../components/parameters/page_size.yaml
- $ref: ../components/parameters/page_index.yaml
- $ref: ../components/parameters/kuery.yaml
- $ref: ../components/parameters/format.yaml
- schema:
type: boolean
in: query
name: full
description: When set to true, retrieve the related package policies for each agent policy.
- schema:
type: boolean
in: query
name: noAgentCount
description: When set to true, do not count how many agents are in the agent policy, this can improve performance if you are searching over a large number of agent policies. The "agents" property will always be 0 if set to true.
description: ''
post:
summary: Create agent policy
tags:
- Elastic Agent policies
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/agent_policy.yaml
'400':
$ref: ../components/responses/error.yaml
operationId: create-agent-policy
requestBody:
content:
application/json:
schema:
$ref: ../components/schemas/agent_policy_create_request.yaml
security: []
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml

View file

@ -1,42 +0,0 @@
post:
summary: Bulk get agent policies
tags:
- Elastic Agent policies
requestBody:
content:
application/json:
schema:
type: object
properties:
ids:
type: array
items:
type: string
description: list of agent policy ids
full:
type: boolean
description: get full policies with package policies populated
ignoreMissing:
type: boolean
required:
- ids
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
items:
type: array
items:
$ref: ../components/schemas/agent_policy.yaml
required:
- items
'400':
$ref: ../components/responses/error.yaml
operationId: bulk-get-agent-policies
security: []
parameters:
- $ref: ../components/parameters/format.yaml

View file

@ -1,38 +0,0 @@
post:
summary: Delete agent policy by ID
tags:
- Elastic Agent policies
operationId: delete-agent-policy
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
id:
type: string
success:
type: boolean
required:
- id
- success
'400':
$ref: ../components/responses/error.yaml
requestBody:
content:
application/json:
schema:
type: object
properties:
agentPolicyId:
type: string
force:
type: boolean
description: bypass validation checks that can prevent agent policy deletion
required:
- agentPolicyId
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml
parameters: []

View file

@ -1,54 +0,0 @@
parameters:
- schema:
type: string
name: agentPolicyId
in: path
required: true
- $ref: ../components/parameters/format.yaml
get:
summary: Get agent policy by ID
tags:
- Elastic Agent policies
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/agent_policy.yaml
required:
- item
'400':
$ref: ../components/responses/error.yaml
operationId: agent-policy-info
description: Get one agent policy
parameters: []
put:
summary: Update agent policy by ID
tags:
- Elastic Agent policies
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/agent_policy.yaml
required:
- item
'400':
$ref: ../components/responses/error.yaml
operationId: update-agent-policy
requestBody:
content:
application/json:
schema:
$ref: ../components/schemas/agent_policy_update_request.yaml
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml

View file

@ -1,41 +0,0 @@
parameters:
- schema:
type: string
name: agentPolicyId
in: path
required: true
- $ref: ../components/parameters/format.yaml
post:
summary: Copy agent policy by ID
tags:
- Elastic Agent policies
operationId: agent-policy-copy
parameters:
- $ref: ../components/headers/kbn_xsrf.yaml
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
$ref: ../components/schemas/agent_policy.yaml
required:
- item
'400':
$ref: ../components/responses/error.yaml
requestBody:
content:
application/json:
schema:
type: object
properties:
name:
type: string
description:
type: string
required:
- name
description: ''

View file

@ -1,38 +0,0 @@
get:
summary: Download agent policy by ID
tags:
- Elastic Agent policies
operationId: agent-policy-download
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
type: string
'400':
$ref: ../components/responses/error.yaml
parameters:
- schema:
type: string
name: agentPolicyId
in: path
required: true
- schema:
type: string
name: download
in: query
required: false
- schema:
type: string
name: standalone
in: query
required: false
- schema:
type: string
name: kubernetes
in: query
required: false

View file

@ -1,40 +0,0 @@
get:
summary: Get full agent policy by ID
tags:
- Elastic Agent policies
operationId: agent-policy-full
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
item:
oneOf:
- type: string
- $ref: ../components/schemas/agent_policy_full.yaml
'400':
$ref: ../components/responses/error.yaml
parameters:
- schema:
type: string
name: agentPolicyId
in: path
required: true
- schema:
type: string
name: download
in: query
required: false
- schema:
type: string
name: standalone
in: query
required: false
- schema:
type: string
name: kubernetes
in: query
required: false

View file

@ -1,61 +0,0 @@
get:
summary: Get agent status summary
tags:
- Elastic Agent status
responses:
'200':
description: OK
content:
application/json:
schema:
type: object
properties:
error:
type: integer
events:
type: integer
inactive:
type: integer
unenrolled:
type: integer
offline:
type: integer
online:
type: integer
other:
type: integer
total:
type: integer
deprecated: true
updating:
type: integer
all:
type: integer
active:
type: integer
required:
- active
- all
- error
- events
- inactive
- offline
- online
- other
- total
- updating
'400':
$ref: ../components/responses/error.yaml
operationId: get-agent-status
parameters:
- schema:
type: string
name: policyId
in: query
required: false
- schema:
type: string
name: kuery
in: query
required: false
deprecated: true

Some files were not shown because too many files have changed in this diff Show more