quality / changes (push) Successful in 7s
quality / commitlint (push) Skipped
quality / openapi (push) Successful in 30s
quality / web (push) Successful in 1m3s
quality / api (push) Successful in 1m15s
quality / linux-agent-smoke (push) Failing after 27s
quality / docker-check (push) Failing after 2m28s
CD / quality (push) Failing after 5m52s
CD / publish (push) Skipped
Implement reliable agent apply, telemetry v2, analytics retention, guarded rollouts, enrollment, labels and webhooks. Improve ReUI frontend data safety and bounded list loading, and add Docker smoke, recovery and resource checks. Document local verification and pending native acceptance.
3720 lines
100 KiB
JSON
3720 lines
100 KiB
JSON
{
|
|
"x-generated-by": "scripts/ci/generate-openapi-schemas.mjs; rebuild @evofw/shared first",
|
|
"components": {
|
|
"schemas": {
|
|
"Agent": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"hostname": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"platform": {
|
|
"type": "string",
|
|
"enum": [
|
|
"linux",
|
|
"mikrotik"
|
|
]
|
|
},
|
|
"token_prefix": {
|
|
"type": "string"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"invited",
|
|
"pending",
|
|
"approved",
|
|
"revoked"
|
|
]
|
|
},
|
|
"default_action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"accept",
|
|
"drop"
|
|
]
|
|
},
|
|
"policy_mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"blacklist",
|
|
"whitelist"
|
|
]
|
|
},
|
|
"policy_generation": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"last_seen_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_seen_ip": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_status": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_error": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_prefix_count": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"last_apply_packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"last_apply_packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"total_packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"total_packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"last_apply_kernel_method": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"client_version": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"settings_json": {
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"approved_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"revoked_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"install_curl": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"install_link_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"diagnostics": {
|
|
"type": "object",
|
|
"properties": {
|
|
"desired_revision": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"desired_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"applied_revision": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"applied_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"agent_version": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"capabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"last_contact_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_telemetry_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"apply_error": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"pending",
|
|
"applying",
|
|
"in_sync",
|
|
"failed",
|
|
"drift",
|
|
"unsupported"
|
|
]
|
|
},
|
|
"telemetry_version": {
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"quality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
},
|
|
"detail_counts": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"ip_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"ip_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip_found",
|
|
"ip_sent",
|
|
"port_found",
|
|
"port_sent"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"desired_revision",
|
|
"desired_hash",
|
|
"applied_revision",
|
|
"applied_hash",
|
|
"agent_version",
|
|
"capabilities",
|
|
"last_contact_at",
|
|
"last_telemetry_at",
|
|
"last_apply_at",
|
|
"apply_error",
|
|
"status",
|
|
"telemetry_version",
|
|
"quality"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"platform",
|
|
"token_prefix",
|
|
"status",
|
|
"default_action",
|
|
"policy_generation",
|
|
"created_at"
|
|
]
|
|
},
|
|
"AgentDiagnostics": {
|
|
"type": "object",
|
|
"properties": {
|
|
"desired_revision": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"desired_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"applied_revision": {
|
|
"nullable": true,
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"applied_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"agent_version": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"capabilities": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"last_contact_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_telemetry_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_apply_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"apply_error": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"pending",
|
|
"applying",
|
|
"in_sync",
|
|
"failed",
|
|
"drift",
|
|
"unsupported"
|
|
]
|
|
},
|
|
"telemetry_version": {
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"quality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
},
|
|
"detail_counts": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"ip_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"ip_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip_found",
|
|
"ip_sent",
|
|
"port_found",
|
|
"port_sent"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"desired_revision",
|
|
"desired_hash",
|
|
"applied_revision",
|
|
"applied_hash",
|
|
"agent_version",
|
|
"capabilities",
|
|
"last_contact_at",
|
|
"last_telemetry_at",
|
|
"last_apply_at",
|
|
"apply_error",
|
|
"status",
|
|
"telemetry_version",
|
|
"quality"
|
|
]
|
|
},
|
|
"AgentPolicy": {
|
|
"type": "object",
|
|
"properties": {
|
|
"generation": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
},
|
|
"apply_version": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"default_action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"accept",
|
|
"drop"
|
|
]
|
|
},
|
|
"policy_mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"blacklist",
|
|
"whitelist"
|
|
]
|
|
},
|
|
"deny_cidrs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"allow_cidrs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"port_rules": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"open",
|
|
"close"
|
|
]
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": [
|
|
"tcp",
|
|
"udp"
|
|
]
|
|
},
|
|
"port_start": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_end": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"src_cidrs": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"action",
|
|
"protocol",
|
|
"port_start",
|
|
"port_end",
|
|
"src_cidrs"
|
|
]
|
|
}
|
|
},
|
|
"sync_interval_sec": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"script_sha256": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"generation",
|
|
"hash",
|
|
"apply_version",
|
|
"default_action",
|
|
"deny_cidrs",
|
|
"allow_cidrs",
|
|
"sync_interval_sec"
|
|
]
|
|
},
|
|
"ApplyReport": {
|
|
"anyOf": [
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"prefix_count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"kernel_method": {
|
|
"type": "string"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"maxLength": 2048
|
|
},
|
|
"apply_error": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"ip_hits": {
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"port_hits": {
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": [
|
|
"tcp",
|
|
"udp"
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"port",
|
|
"protocol",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"host_firewall": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rules": {
|
|
"default": [],
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {}
|
|
},
|
|
"listeners": {
|
|
"default": [],
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {}
|
|
}
|
|
}
|
|
},
|
|
"telemetry_version": {
|
|
"type": "number",
|
|
"enum": [
|
|
2
|
|
]
|
|
},
|
|
"report_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"boot_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"observed_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
|
|
},
|
|
"interval_ms": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"counter_epoch": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traffic": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"ip": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"port": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"required": [
|
|
"traffic"
|
|
]
|
|
},
|
|
"applied_hash": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[0-9a-f]{64}$"
|
|
},
|
|
"applied_revision": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"agent_version": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"capabilities": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"quality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
},
|
|
"detail_counts": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"ip_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 200
|
|
},
|
|
"port_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 500
|
|
}
|
|
},
|
|
"required": [
|
|
"ip_found",
|
|
"ip_sent",
|
|
"port_found",
|
|
"port_sent"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"telemetry_version",
|
|
"report_id",
|
|
"sequence",
|
|
"boot_id",
|
|
"observed_at",
|
|
"interval_ms",
|
|
"counter_epoch",
|
|
"capabilities",
|
|
"quality"
|
|
]
|
|
},
|
|
{
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"prefix_count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"kernel_method": {
|
|
"type": "string"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"maxLength": 2048
|
|
},
|
|
"apply_error": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"ip_hits": {
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"port_hits": {
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": [
|
|
"tcp",
|
|
"udp"
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"port",
|
|
"protocol",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"host_firewall": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rules": {
|
|
"default": [],
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {}
|
|
},
|
|
"listeners": {
|
|
"default": [],
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {}
|
|
}
|
|
}
|
|
},
|
|
"telemetry_version": {
|
|
"type": "number",
|
|
"enum": [
|
|
1
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status"
|
|
]
|
|
}
|
|
]
|
|
},
|
|
"ApplyReportV2": {
|
|
"type": "object",
|
|
"properties": {
|
|
"status": {
|
|
"type": "string"
|
|
},
|
|
"prefix_count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"kernel_method": {
|
|
"type": "string"
|
|
},
|
|
"error": {
|
|
"type": "string",
|
|
"maxLength": 2048
|
|
},
|
|
"apply_error": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"source": {
|
|
"type": "string"
|
|
},
|
|
"ip_hits": {
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "string"
|
|
}
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"port_hits": {
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"type": "string"
|
|
},
|
|
"port": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 65535
|
|
},
|
|
"protocol": {
|
|
"type": "string",
|
|
"enum": [
|
|
"tcp",
|
|
"udp"
|
|
]
|
|
},
|
|
"packets": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"port",
|
|
"protocol",
|
|
"packets"
|
|
]
|
|
}
|
|
},
|
|
"host_firewall": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rules": {
|
|
"default": [],
|
|
"maxItems": 500,
|
|
"type": "array",
|
|
"items": {}
|
|
},
|
|
"listeners": {
|
|
"default": [],
|
|
"maxItems": 200,
|
|
"type": "array",
|
|
"items": {}
|
|
}
|
|
}
|
|
},
|
|
"telemetry_version": {
|
|
"type": "number",
|
|
"enum": [
|
|
2
|
|
]
|
|
},
|
|
"report_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"sequence": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"boot_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"observed_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
|
|
},
|
|
"interval_ms": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"counter_epoch": {
|
|
"type": "object",
|
|
"properties": {
|
|
"traffic": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"ip": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"port": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"required": [
|
|
"traffic"
|
|
]
|
|
},
|
|
"applied_hash": {
|
|
"type": "string",
|
|
"pattern": "^sha256:[0-9a-f]{64}$"
|
|
},
|
|
"applied_revision": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"agent_version": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"capabilities": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"quality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
},
|
|
"detail_counts": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"ip_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 200
|
|
},
|
|
"port_found": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"port_sent": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 500
|
|
}
|
|
},
|
|
"required": [
|
|
"ip_found",
|
|
"ip_sent",
|
|
"port_found",
|
|
"port_sent"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"status",
|
|
"telemetry_version",
|
|
"report_id",
|
|
"sequence",
|
|
"boot_id",
|
|
"observed_at",
|
|
"interval_ms",
|
|
"counter_epoch",
|
|
"capabilities",
|
|
"quality"
|
|
]
|
|
},
|
|
"TelemetryQuality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
},
|
|
"ApplyError": {
|
|
"type": "object",
|
|
"properties": {
|
|
"code": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"message": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 2048
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"maxLength": 128
|
|
},
|
|
"retryable": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"code",
|
|
"message"
|
|
]
|
|
},
|
|
"TimeseriesResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"from": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
},
|
|
"to": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
},
|
|
"resolution": {
|
|
"type": "string",
|
|
"enum": [
|
|
"1m",
|
|
"1h",
|
|
"1d"
|
|
]
|
|
},
|
|
"items": {
|
|
"maxItems": 1440,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"timestamp": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
},
|
|
"packets_dropped": {
|
|
"nullable": true,
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"packets_accepted": {
|
|
"nullable": true,
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"pps": {
|
|
"nullable": true,
|
|
"type": "number",
|
|
"minimum": 0
|
|
},
|
|
"coverage": {
|
|
"type": "number",
|
|
"minimum": 0,
|
|
"maximum": 1
|
|
},
|
|
"estimated": {
|
|
"type": "boolean"
|
|
},
|
|
"quality": {
|
|
"type": "object",
|
|
"properties": {
|
|
"partial": {
|
|
"type": "boolean"
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"unsupported": {
|
|
"maxItems": 64,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"lost_reports": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"partial",
|
|
"truncated",
|
|
"unsupported",
|
|
"lost_reports"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"timestamp",
|
|
"packets_dropped",
|
|
"packets_accepted",
|
|
"pps",
|
|
"coverage",
|
|
"estimated",
|
|
"quality"
|
|
]
|
|
}
|
|
},
|
|
"agent_ids": {
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"from",
|
|
"to",
|
|
"resolution",
|
|
"items",
|
|
"agent_ids"
|
|
]
|
|
},
|
|
"UiSummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"updated_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
},
|
|
"dashboard": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agents_total": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"agents_approved": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"agents_online": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"agents_pending": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_dropped": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"packets_accepted": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"lists_total": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"agents_total",
|
|
"agents_approved",
|
|
"agents_online",
|
|
"agents_pending",
|
|
"packets_dropped",
|
|
"packets_accepted",
|
|
"lists_total"
|
|
]
|
|
},
|
|
"agents": {
|
|
"type": "object",
|
|
"properties": {
|
|
"approved": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"online": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"pending": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"offline": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"approved",
|
|
"online",
|
|
"pending",
|
|
"offline"
|
|
]
|
|
},
|
|
"lists": {
|
|
"type": "object",
|
|
"properties": {
|
|
"total": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"failed": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"total",
|
|
"failed"
|
|
]
|
|
},
|
|
"policies": {
|
|
"type": "object",
|
|
"properties": {
|
|
"sets_total": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"rules_total": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"sets_total",
|
|
"rules_total"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"updated_at"
|
|
]
|
|
},
|
|
"ExplainResponse": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_id": {
|
|
"type": "string"
|
|
},
|
|
"query": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ip": {
|
|
"type": "string"
|
|
},
|
|
"protocol": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"enum": [
|
|
"tcp",
|
|
"udp"
|
|
]
|
|
},
|
|
"port": {
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"chain": {
|
|
"type": "string",
|
|
"enum": [
|
|
"input",
|
|
"forward"
|
|
]
|
|
},
|
|
"dnat": {
|
|
"type": "boolean"
|
|
},
|
|
"connection_state": {
|
|
"type": "string",
|
|
"enum": [
|
|
"new",
|
|
"established",
|
|
"related"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"ip",
|
|
"protocol",
|
|
"port",
|
|
"chain",
|
|
"dnat",
|
|
"connection_state"
|
|
]
|
|
},
|
|
"desired": {
|
|
"type": "object",
|
|
"properties": {
|
|
"revision": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"hash": {
|
|
"type": "string"
|
|
},
|
|
"decision": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"enum": [
|
|
"accept",
|
|
"drop"
|
|
]
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"enum": [
|
|
"stateful",
|
|
"deny",
|
|
"port_close",
|
|
"port_open",
|
|
"port_implicit_close",
|
|
"allow",
|
|
"default",
|
|
"external",
|
|
"unsupported",
|
|
"transport_unknown"
|
|
]
|
|
},
|
|
"match": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"rule_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"set_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"list_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"override_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"cidr": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"enum": [
|
|
"stateful",
|
|
"deny",
|
|
"port_close",
|
|
"port_open",
|
|
"port_implicit_close",
|
|
"allow",
|
|
"default",
|
|
"external",
|
|
"unsupported",
|
|
"transport_unknown"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"rule_id",
|
|
"set_id",
|
|
"list_id",
|
|
"override_id",
|
|
"cidr",
|
|
"label",
|
|
"stage"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"revision",
|
|
"hash",
|
|
"decision",
|
|
"stage",
|
|
"match"
|
|
]
|
|
},
|
|
"applied": {
|
|
"type": "object",
|
|
"properties": {
|
|
"revision": {
|
|
"nullable": true,
|
|
"type": "number"
|
|
},
|
|
"hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"same_as_desired": {
|
|
"nullable": true,
|
|
"type": "boolean"
|
|
},
|
|
"status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"pending",
|
|
"applying",
|
|
"in_sync",
|
|
"failed",
|
|
"drift",
|
|
"unsupported"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"revision",
|
|
"hash",
|
|
"same_as_desired",
|
|
"status"
|
|
]
|
|
},
|
|
"matches": {
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rule_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"set_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"list_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"override_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"cidr": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"label": {
|
|
"type": "string"
|
|
},
|
|
"stage": {
|
|
"type": "string",
|
|
"enum": [
|
|
"stateful",
|
|
"deny",
|
|
"port_close",
|
|
"port_open",
|
|
"port_implicit_close",
|
|
"allow",
|
|
"default",
|
|
"external",
|
|
"unsupported",
|
|
"transport_unknown"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"rule_id",
|
|
"set_id",
|
|
"list_id",
|
|
"override_id",
|
|
"cidr",
|
|
"label",
|
|
"stage"
|
|
]
|
|
}
|
|
},
|
|
"matches_total": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"truncated": {
|
|
"type": "boolean"
|
|
},
|
|
"limits": {
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"external_firewall": {
|
|
"type": "object",
|
|
"properties": {
|
|
"observed_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"rule_count": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"complete": {
|
|
"type": "boolean",
|
|
"enum": [
|
|
false
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"observed_at",
|
|
"rule_count",
|
|
"complete"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"agent_id",
|
|
"query",
|
|
"desired",
|
|
"applied",
|
|
"matches",
|
|
"matches_total",
|
|
"truncated",
|
|
"limits",
|
|
"external_firewall"
|
|
]
|
|
},
|
|
"CreateOverride": {
|
|
"type": "object",
|
|
"properties": {
|
|
"cidr": {
|
|
"type": "string"
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
]
|
|
},
|
|
"comment": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"reason": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 1024
|
|
},
|
|
"expires_at": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"
|
|
},
|
|
"ttl_seconds": {
|
|
"type": "integer",
|
|
"minimum": 60,
|
|
"maximum": 2592000
|
|
}
|
|
},
|
|
"required": [
|
|
"cidr",
|
|
"action"
|
|
]
|
|
},
|
|
"IpOverride": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"agent_id": {
|
|
"type": "string"
|
|
},
|
|
"cidr": {
|
|
"type": "string"
|
|
},
|
|
"action": {
|
|
"type": "string",
|
|
"enum": [
|
|
"allow",
|
|
"deny"
|
|
]
|
|
},
|
|
"comment": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"reason": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"created_by_user_id": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"created_by_name": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"expires_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"expired": {
|
|
"type": "boolean"
|
|
},
|
|
"expiration_enforcement": {
|
|
"type": "string",
|
|
"enum": [
|
|
"next_policy_sync"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"agent_id",
|
|
"cidr",
|
|
"action",
|
|
"created_at"
|
|
]
|
|
},
|
|
"IpList": {
|
|
"type": "object",
|
|
"properties": {
|
|
"id": {
|
|
"type": "string"
|
|
},
|
|
"name": {
|
|
"type": "string"
|
|
},
|
|
"type": {
|
|
"type": "string",
|
|
"enum": [
|
|
"static",
|
|
"json_url",
|
|
"domains",
|
|
"evobgp_community"
|
|
]
|
|
},
|
|
"config_json": {
|
|
"type": "string"
|
|
},
|
|
"content_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"refreshed_at": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"last_error": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"entry_count": {
|
|
"type": "integer",
|
|
"minimum": -9007199254740991,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"created_at": {
|
|
"type": "string"
|
|
},
|
|
"updated_at": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"id",
|
|
"name",
|
|
"type",
|
|
"config_json",
|
|
"created_at",
|
|
"updated_at"
|
|
]
|
|
},
|
|
"CreateWebhook": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"maxLength": 2048,
|
|
"format": "uri"
|
|
},
|
|
"secret": {
|
|
"type": "string",
|
|
"minLength": 32,
|
|
"maxLength": 256
|
|
},
|
|
"events": {
|
|
"minItems": 1,
|
|
"maxItems": 4,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"agent.offline",
|
|
"agent.apply_failed",
|
|
"agent.drift",
|
|
"source.error"
|
|
]
|
|
}
|
|
},
|
|
"enabled": {
|
|
"default": true,
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"url",
|
|
"secret",
|
|
"events"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PatchWebhook": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 100
|
|
},
|
|
"url": {
|
|
"type": "string",
|
|
"maxLength": 2048,
|
|
"format": "uri"
|
|
},
|
|
"secret": {
|
|
"type": "string",
|
|
"minLength": 32,
|
|
"maxLength": 256
|
|
},
|
|
"events": {
|
|
"minItems": 1,
|
|
"maxItems": 4,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"enum": [
|
|
"agent.offline",
|
|
"agent.apply_failed",
|
|
"agent.drift",
|
|
"source.error"
|
|
]
|
|
}
|
|
},
|
|
"enabled": {
|
|
"default": true,
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"EnrollWithCredential": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 255
|
|
},
|
|
"hostname": {
|
|
"type": "string",
|
|
"maxLength": 255
|
|
},
|
|
"platform": {
|
|
"default": "linux",
|
|
"type": "string",
|
|
"enum": [
|
|
"linux",
|
|
"mikrotik"
|
|
]
|
|
},
|
|
"token": {
|
|
"type": "string",
|
|
"minLength": 16,
|
|
"maxLength": 256
|
|
},
|
|
"client_version": {
|
|
"type": "string",
|
|
"maxLength": 100
|
|
},
|
|
"install_link_id": {
|
|
"type": "string",
|
|
"minLength": 8,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"required": [
|
|
"name",
|
|
"token",
|
|
"install_link_id"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"TokenRotationExchange": {
|
|
"type": "object",
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
},
|
|
"next_token": {
|
|
"type": "string",
|
|
"pattern": "^evofw_[A-Za-z0-9_-]{32,128}$"
|
|
}
|
|
},
|
|
"required": [
|
|
"request_id",
|
|
"next_token"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"CredentialStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"client_id": {
|
|
"type": "string"
|
|
},
|
|
"rotation": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
}
|
|
},
|
|
"required": [
|
|
"request_id",
|
|
"expires_at"
|
|
]
|
|
},
|
|
"completed_rotation": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
}
|
|
},
|
|
"required": [
|
|
"request_id"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"client_id",
|
|
"rotation",
|
|
"completed_rotation"
|
|
]
|
|
},
|
|
"TokenRotationAck": {
|
|
"type": "object",
|
|
"properties": {
|
|
"ok": {
|
|
"type": "boolean",
|
|
"enum": [
|
|
true
|
|
]
|
|
},
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
},
|
|
"client_id": {
|
|
"type": "string"
|
|
}
|
|
},
|
|
"required": [
|
|
"ok",
|
|
"request_id",
|
|
"client_id"
|
|
]
|
|
},
|
|
"AdminCredentialStatus": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_id": {
|
|
"type": "string"
|
|
},
|
|
"supported": {
|
|
"type": "boolean"
|
|
},
|
|
"client_version": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"agent_status": {
|
|
"type": "string",
|
|
"enum": [
|
|
"invited",
|
|
"pending",
|
|
"approved",
|
|
"revoked"
|
|
]
|
|
},
|
|
"rotation": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
},
|
|
"expires_at": {
|
|
"type": "string",
|
|
"format": "date-time",
|
|
"pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
|
|
}
|
|
},
|
|
"required": [
|
|
"request_id",
|
|
"expires_at"
|
|
]
|
|
},
|
|
"completed_rotation": {
|
|
"nullable": true,
|
|
"type": "object",
|
|
"properties": {
|
|
"request_id": {
|
|
"type": "string",
|
|
"format": "uuid",
|
|
"pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
|
|
}
|
|
},
|
|
"required": [
|
|
"request_id"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"agent_id",
|
|
"supported",
|
|
"client_version",
|
|
"agent_status",
|
|
"rotation",
|
|
"completed_rotation"
|
|
]
|
|
},
|
|
"ListImportSummary": {
|
|
"type": "object",
|
|
"properties": {
|
|
"count": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 9007199254740991
|
|
},
|
|
"content_hash": {
|
|
"nullable": true,
|
|
"type": "string"
|
|
},
|
|
"changed": {
|
|
"type": "boolean"
|
|
}
|
|
},
|
|
"required": [
|
|
"count",
|
|
"content_hash",
|
|
"changed"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"CreatePolicySnapshot": {
|
|
"type": "object",
|
|
"properties": {
|
|
"source_agent_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 120
|
|
}
|
|
},
|
|
"required": [
|
|
"source_agent_id",
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PolicySnapshotDiffRequest": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_ids": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"agent_ids"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"CreatePolicyRollout": {
|
|
"type": "object",
|
|
"properties": {
|
|
"snapshot_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"targets": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"expected_generation": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"agent_id",
|
|
"expected_generation"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
},
|
|
"canary_ids": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"snapshot_id",
|
|
"targets",
|
|
"canary_ids"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PolicyRolloutTransition": {
|
|
"type": "object",
|
|
"properties": {
|
|
"expected_version": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"expected_version"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"ReleasePolicyPin": {
|
|
"type": "object",
|
|
"properties": {
|
|
"rollout_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"expected_generation": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"rollout_id",
|
|
"expected_generation"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"CreateAgentLabel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 64
|
|
},
|
|
"color": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"enum": [
|
|
"primary",
|
|
"success",
|
|
"warning",
|
|
"destructive",
|
|
"secondary",
|
|
"info"
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"name"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PatchAgentLabel": {
|
|
"type": "object",
|
|
"properties": {
|
|
"name": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 64
|
|
},
|
|
"color": {
|
|
"nullable": true,
|
|
"type": "string",
|
|
"enum": [
|
|
"primary",
|
|
"success",
|
|
"warning",
|
|
"destructive",
|
|
"secondary",
|
|
"info"
|
|
]
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"PutAgentLabels": {
|
|
"type": "object",
|
|
"properties": {
|
|
"label_ids": {
|
|
"maxItems": 20,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"label_ids"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"PreviewLabelAssignment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"selector": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_ids": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"label_ids": {
|
|
"maxItems": 20,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"add",
|
|
"replace"
|
|
]
|
|
},
|
|
"set_ids": {
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"mode",
|
|
"set_ids"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"ApplyLabelAssignment": {
|
|
"type": "object",
|
|
"properties": {
|
|
"selector": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_ids": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"label_ids": {
|
|
"maxItems": 20,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
},
|
|
"additionalProperties": false
|
|
},
|
|
"mode": {
|
|
"type": "string",
|
|
"enum": [
|
|
"add",
|
|
"replace"
|
|
]
|
|
},
|
|
"set_ids": {
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
},
|
|
"expected": {
|
|
"minItems": 1,
|
|
"maxItems": 100,
|
|
"type": "array",
|
|
"items": {
|
|
"type": "object",
|
|
"properties": {
|
|
"agent_id": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
},
|
|
"generation": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"exclusiveMinimum": true,
|
|
"maximum": 9007199254740991
|
|
}
|
|
},
|
|
"required": [
|
|
"agent_id",
|
|
"generation"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"required": [
|
|
"selector",
|
|
"mode",
|
|
"set_ids",
|
|
"expected"
|
|
],
|
|
"additionalProperties": false
|
|
}
|
|
}
|
|
},
|
|
"paths": {
|
|
"/v1/agent/credentials": {
|
|
"get": {
|
|
"summary": "Agent credential status; no-store; approved current token only",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"agentToken": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Agent credential status; no-store; approved current token only",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CredentialStatus"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/v1/agent/token-rotation": {
|
|
"post": {
|
|
"summary": "Atomic token exchange; old-token retry only for exact completed exchange within 24 hours; no-store",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"agentToken": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenRotationExchange"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Atomic token exchange; old-token retry only for exact completed exchange within 24 hours; no-store",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/TokenRotationAck"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agents/{id}/token-rotation": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"summary": "Operator credential rotation status; agents read permission; no-store",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Operator credential rotation status; agents read permission; no-store",
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/AdminCredentialStatus"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
},
|
|
"post": {
|
|
"summary": "Request rotation for a supported approved client; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"202": {
|
|
"description": "Request rotation for a supported approved client; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/snapshots": {
|
|
"get": {
|
|
"summary": "List immutable snapshot metadata; policies read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List immutable snapshot metadata; policies read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 50,
|
|
"default": 20
|
|
}
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 10000,
|
|
"default": 0
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"summary": "Capture immutable effective policy for source agent; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePolicySnapshot"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Capture immutable effective policy for source agent; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/snapshots/{id}": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"summary": "Get immutable snapshot and payload; policies read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Get immutable snapshot and payload; policies read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete unreferenced snapshot; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Delete unreferenced snapshot; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/snapshots/{id}/diff": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"summary": "Read-only bounded diff for up to 100 agents; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PolicySnapshotDiffRequest"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Read-only bounded diff for up to 100 agents; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/rollouts": {
|
|
"get": {
|
|
"summary": "List rollout metadata; policies read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List rollout metadata; policies read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 50,
|
|
"default": 20
|
|
}
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 10000,
|
|
"default": 0
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"summary": "Start explicitly selected canary rollout with generation checks; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreatePolicyRollout"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Start explicitly selected canary rollout with generation checks; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/rollouts/{id}": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"summary": "Get rollout and per-target acknowledgement; policies read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Get rollout and per-target acknowledgement; policies read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete finished rollout after all pins released; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Delete finished rollout after all pins released; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/rollouts/{id}/confirm": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"summary": "Confirm rollout at expected version after fresh exact canary acknowledgement; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PolicyRolloutTransition"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Confirm rollout at expected version after fresh exact canary acknowledgement; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/policies/rollouts/{id}/rollback": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"summary": "Rollback to captured per-agent immutable policies; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PolicyRolloutTransition"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Rollback to captured per-agent immutable policies; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agents/{id}/policy-pin/release": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"post": {
|
|
"summary": "Release selected rollout pin with expected generation; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ReleasePolicyPin"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Release selected rollout pin with expected generation; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agent-labels": {
|
|
"get": {
|
|
"summary": "List labels; agents read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "List labels; agents read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
},
|
|
"parameters": [
|
|
{
|
|
"name": "limit",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 1,
|
|
"maximum": 50,
|
|
"default": 20
|
|
}
|
|
},
|
|
{
|
|
"name": "offset",
|
|
"in": "query",
|
|
"schema": {
|
|
"type": "integer",
|
|
"minimum": 0,
|
|
"maximum": 10000,
|
|
"default": 0
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"post": {
|
|
"summary": "Create unique agent label; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/CreateAgentLabel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"201": {
|
|
"description": "Create unique agent label; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agent-labels/{id}": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"patch": {
|
|
"summary": "Update label; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PatchAgentLabel"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Update label; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
},
|
|
"delete": {
|
|
"summary": "Delete label without deleting assigned agents; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Delete label without deleting assigned agents; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agents/{id}/labels": {
|
|
"parameters": [
|
|
{
|
|
"name": "id",
|
|
"in": "path",
|
|
"required": true,
|
|
"schema": {
|
|
"type": "string",
|
|
"minLength": 1,
|
|
"maxLength": 128
|
|
}
|
|
}
|
|
],
|
|
"get": {
|
|
"summary": "Read agent label IDs; agents read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"responses": {
|
|
"200": {
|
|
"description": "Read agent label IDs; agents read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
},
|
|
"put": {
|
|
"summary": "Replace agent labels atomically; agents write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PutAgentLabels"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Replace agent labels atomically; agents write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agent-labels/preview-assignment": {
|
|
"post": {
|
|
"summary": "Preview add/replace policy-set assignment from explicit agent IDs or labels; policies read permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/PreviewLabelAssignment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Preview add/replace policy-set assignment from explicit agent IDs or labels; policies read permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"/api/v1/agent-labels/assign-policy-sets": {
|
|
"post": {
|
|
"summary": "Apply previously reviewed assignment with exact per-agent generations; policies write permission",
|
|
"tags": [
|
|
"ops"
|
|
],
|
|
"security": [
|
|
{
|
|
"bearerAuth": []
|
|
}
|
|
],
|
|
"requestBody": {
|
|
"required": true,
|
|
"content": {
|
|
"application/json": {
|
|
"schema": {
|
|
"$ref": "#/components/schemas/ApplyLabelAssignment"
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"responses": {
|
|
"200": {
|
|
"description": "Apply previously reviewed assignment with exact per-agent generations; policies write permission"
|
|
},
|
|
"400": {
|
|
"description": "Invalid request"
|
|
},
|
|
"401": {
|
|
"description": "Authentication required"
|
|
},
|
|
"403": {
|
|
"description": "Insufficient permission"
|
|
},
|
|
"409": {
|
|
"description": "Stale revision, conflicting operation or resource still referenced"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|