Isovalent endpoint API
The endpoint API from Isovalent — 6 operation(s) for endpoint.
The endpoint API from Isovalent — 6 operation(s) for endpoint.
swagger: '2.0'
info:
title: Cilium bgp endpoint API
description: Cilium
version: v1beta1
basePath: /v1
consumes:
- application/json
produces:
- application/json
tags:
- name: endpoint
paths:
/endpoint/{id}:
get:
summary: Get endpoint by endpoint ID
description: 'Returns endpoint information
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/Endpoint'
'400':
description: Invalid endpoint ID format for specified type
x-go-name: Invalid
schema:
$ref: '#/definitions/Error'
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
put:
summary: Create endpoint
description: 'Creates a new endpoint
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
- $ref: '#/parameters/endpoint-change-request'
responses:
'201':
description: Created
schema:
$ref: '#/definitions/Endpoint'
'400':
description: Invalid endpoint in request
x-go-name: Invalid
schema:
$ref: '#/definitions/Error'
'403':
description: Forbidden
'409':
description: Endpoint already exists
x-go-name: Exists
'500':
description: Endpoint creation failed
x-go-name: Failed
schema:
$ref: '#/definitions/Error'
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
patch:
summary: Modify existing endpoint
deprecated: true
description: 'Applies the endpoint change request to an existing endpoint
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
- $ref: '#/parameters/endpoint-change-request'
responses:
'200':
description: Success
'400':
description: Invalid modify endpoint request
x-go-name: Invalid
schema:
$ref: '#/definitions/Error'
'403':
description: Forbidden
'404':
description: Endpoint does not exist
'500':
description: Endpoint update failed
x-go-name: Failed
schema:
$ref: '#/definitions/Error'
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
delete:
summary: Delete endpoint
description: 'Deletes the endpoint specified by the ID. Deletion is imminent and
atomic, if the deletion request is valid and the endpoint exists,
deletion will occur even if errors are encountered in the process. If
errors have been encountered, the code 202 will be returned, otherwise
200 on success.
All resources associated with the endpoint will be freed and the
workload represented by the endpoint will be disconnected.It will no
longer be able to initiate or receive communications of any sort.
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
'206':
description: Deleted with a number of errors encountered
x-go-name: Errors
schema:
type: integer
'400':
description: 'Invalid endpoint ID format for specified type. Details in error
message
'
x-go-name: Invalid
schema:
$ref: '#/definitions/Error'
'403':
description: Forbidden
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
/endpoint:
get:
summary: Retrieves a list of endpoints that have metadata matching the provided parameters.
description: 'Retrieves a list of endpoints that have metadata matching the provided parameters, or all endpoints if no parameters provided.
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/labels'
responses:
'200':
description: Success
schema:
type: array
items:
$ref: '#/definitions/Endpoint'
'404':
description: Endpoints with provided parameters not found
'429':
description: Rate-limiting too many requests in the given time frame
delete:
summary: Deletes a list of endpoints
description: 'Deletes a list of endpoints that have endpoints matching the provided properties
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-batch-delete-request'
responses:
'200':
description: Success
'206':
description: Deleted with a number of errors encountered
x-go-name: Errors
schema:
type: integer
'400':
description: Invalid endpoint delete request
x-go-name: Invalid
'404':
description: No endpoints with provided parameters found
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
/endpoint/{id}/config:
get:
summary: Retrieve endpoint configuration
description: 'Retrieves the configuration of the specified endpoint.
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/EndpointConfigurationStatus'
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
patch:
summary: Modify mutable endpoint configuration
description: 'Update the configuration of an existing endpoint and regenerates &
recompiles the corresponding programs automatically.
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
- name: endpoint-configuration
in: body
required: true
schema:
$ref: '#/definitions/EndpointConfigurationSpec'
responses:
'200':
description: Success
'400':
description: Invalid configuration request
x-go-name: Invalid
'403':
description: Forbidden
'404':
description: Endpoint not found
'500':
description: Update failed. Details in message.
x-go-name: Failed
schema:
$ref: '#/definitions/Error'
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
/endpoint/{id}/labels:
get:
summary: Retrieves the list of labels associated with an endpoint.
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/LabelConfiguration'
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
patch:
summary: Set label configuration of endpoint
description: 'Sets labels associated with an endpoint. These can be user provided or
derived from the orchestration system.
'
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
- name: configuration
in: body
required: true
schema:
$ref: '#/definitions/LabelConfigurationSpec'
responses:
'200':
description: Success
'403':
description: Forbidden
'404':
description: Endpoint not found
'500':
description: Error while updating labels
x-go-name: UpdateFailed
schema:
$ref: '#/definitions/Error'
'429':
description: Rate-limiting too many requests in the given time frame
'503':
description: Service Unavailable
/endpoint/{id}/log:
get:
summary: Retrieves the status logs associated with this endpoint.
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/EndpointStatusLog'
'400':
description: Invalid identity provided
x-go-name: Invalid
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
/endpoint/{id}/healthz:
get:
summary: Retrieves the status logs associated with this endpoint.
tags:
- endpoint
parameters:
- $ref: '#/parameters/endpoint-id'
responses:
'200':
description: Success
schema:
$ref: '#/definitions/EndpointHealth'
'400':
description: Invalid identity provided
x-go-name: Invalid
'404':
description: Endpoint not found
'429':
description: Rate-limiting too many requests in the given time frame
definitions:
EndpointPolicy:
description: Policy information of an endpoint
type: object
properties:
policy-revision:
description: The agent-local policy revision
type: integer
id:
description: Own identity of endpoint
type: integer
policy-enabled:
description: Whether policy enforcement is enabled (ingress, egress, both or none)
$ref: '#/definitions/EndpointPolicyEnabled'
build:
description: Build number of calculated policy in use
type: integer
allowed-ingress-identities:
description: 'List of identities allowed to communicate to this endpoint
'
type: array
items:
type: integer
denied-ingress-identities:
description: 'List of identities not allowed to communicate to this endpoint
'
type: array
items:
type: integer
allowed-egress-identities:
description: 'List of identities to which this endpoint is allowed to communicate
'
type: array
items:
type: integer
denied-egress-identities:
description: 'List of identities to which this endpoint is not allowed to communicate
'
type: array
items:
type: integer
l4:
$ref: '#/definitions/L4Policy'
cidr-policy:
$ref: '#/definitions/CIDRPolicy'
EndpointIdentifiers:
description: 'Unique identifiers for this endpoint from outside cilium
+deepequal-gen=true'
type: object
properties:
cni-attachment-id:
description: ID assigned to this attachment by container runtime
type: string
container-id:
description: ID assigned by container runtime (deprecated, may not be unique)
type: string
container-name:
description: Name assigned to container (deprecated, may not be unique)
type: string
docker-endpoint-id:
description: Docker endpoint ID
type: string
docker-network-id:
description: Docker network ID
type: string
pod-name:
description: K8s pod for this endpoint (deprecated, may not be unique)
type: string
k8s-pod-name:
description: K8s pod name for this endpoint (deprecated, may not be unique)
type: string
k8s-namespace:
description: K8s namespace for this endpoint (deprecated, may not be unique)
type: string
LabelConfigurationSpec:
description: User desired Label configuration of an endpoint
type: object
properties:
user:
description: Custom labels in addition to orchestration system labels.
$ref: '#/definitions/Labels'
EndpointPolicyEnabled:
description: Whether policy enforcement is enabled (ingress, egress, both or none)
type: string
enum:
- none
- ingress
- egress
- both
- audit-ingress
- audit-egress
- audit-both
AddressPair:
description: Addressing information of an endpoint
type: object
properties:
ipv4:
description: IPv4 address
type: string
ipv4-expiration-uuid:
description: UUID of IPv4 expiration timer
type: string
ipv4-pool-name:
description: IPAM pool from which this IPv4 address was allocated
type: string
ipv6:
description: IPv6 address
type: string
ipv6-expiration-uuid:
description: UUID of IPv6 expiration timer
type: string
ipv6-pool-name:
description: IPAM pool from which this IPv6 address was allocated
type: string
RequestResponseStatistics:
description: 'Statistics of a proxy redirect
+k8s:deepcopy-gen=true'
type: object
properties:
requests:
$ref: '#/definitions/MessageForwardingStatistics'
responses:
$ref: '#/definitions/MessageForwardingStatistics'
PolicyRule:
description: A policy rule including the rule labels it derives from
properties:
rule:
description: The policy rule as json
type: string
derived-from-rules:
description: The policy rule labels identifying the policy rules this rule derives from
type: array
items:
type: array
items:
type: string
rules-by-selector:
description: The policy rule labels identifying the policy rules this rule derives from, mapped by selector
type: object
additionalProperties:
type: array
items:
type: array
items:
type: string
NodeAddressing:
description: 'Addressing information of a node for all address families
+k8s:deepcopy-gen=true'
type: object
properties:
ipv6:
$ref: '#/definitions/NodeAddressingElement'
ipv4:
$ref: '#/definitions/NodeAddressingElement'
EndpointConfigurationSpec:
description: An endpoint's configuration
type: object
properties:
options:
description: Changeable configuration
$ref: '#/definitions/ConfigurationMap'
label-configuration:
description: the endpoint's labels
$ref: '#/definitions/LabelConfigurationSpec'
EndpointStatusLog:
description: Status log of endpoint
type: array
items:
$ref: '#/definitions/EndpointStatusChange'
Identity:
description: Security identity
type: object
properties:
id:
description: Unique identifier
type: integer
labels:
description: Labels describing the identity
$ref: '#/definitions/Labels'
labelsSHA256:
description: SHA256 of labels
type: string
EndpointHealth:
description: 'Health of the endpoint
+deepequal-gen=true'
type: object
properties:
overallHealth:
$ref: '#/definitions/EndpointHealthStatus'
bpf:
$ref: '#/definitions/EndpointHealthStatus'
policy:
$ref: '#/definitions/EndpointHealthStatus'
connected:
description: Is this endpoint reachable
type: boolean
NodeAddressingElement:
description: Addressing information
type: object
properties:
enabled:
description: True if address family is enabled
type: boolean
ip:
description: IP address of node
type: string
alloc-range:
description: Address pool to be used for local endpoints
type: string
address-type:
description: Node address type, one of HostName, ExternalIP or InternalIP
type: string
ConfigurationMap:
description: 'Map of configuration key/value pairs.
'
type: object
additionalProperties:
type: string
LabelConfigurationStatus:
description: Labels and label configuration of an endpoint
type: object
properties:
realized:
description: The current configuration
$ref: '#/definitions/LabelConfigurationSpec'
security-relevant:
description: Labels derived from orchestration system that are used in computing a security identity
$ref: '#/definitions/Labels'
derived:
description: All labels derived from the orchestration system
$ref: '#/definitions/Labels'
disabled:
description: Labels derived from orchestration system which have been disabled.
$ref: '#/definitions/Labels'
Labels:
description: Set of labels
type: array
items:
type: string
EndpointPolicyStatus:
description: Policy information of an endpoint
type: object
properties:
spec:
description: The policy that should apply to this endpoint
$ref: '#/definitions/EndpointPolicy'
realized:
description: The policy in the datapath for this endpoint
$ref: '#/definitions/EndpointPolicy'
proxy-policy-revision:
description: The policy revision currently enforced in the proxy for this endpoint
type: integer
proxy-statistics:
description: Statistics of the proxy redirects configured for this endpoint
type: array
items:
$ref: '#/definitions/ProxyStatistics'
NamedPorts:
description: 'List of named Layer 4 port and protocol pairs which will be used in Network
Policy specs.
+deepequal-gen=true
+k8s:deepcopy-gen=true'
type: array
items:
$ref: '#/definitions/Port'
CIDRPolicy:
description: CIDR endpoint policy
type: object
properties:
ingress:
description: List of CIDR ingress rules
type: array
items:
$ref: '#/definitions/PolicyRule'
egress:
description: List of CIDR egress rules
type: array
items:
$ref: '#/definitions/PolicyRule'
LabelConfiguration:
description: Label configuration of an endpoint
type: object
properties:
spec:
description: The user provided desired configuration
$ref: '#/definitions/LabelConfigurationSpec'
status:
description: The current configuration
$ref: '#/definitions/LabelConfigurationStatus'
EndpointHealthStatus:
description: 'A common set of statuses for endpoint health * ``OK`` = All components operational * ``Bootstrap`` = This component is being created * ``Pending`` = A change is being processed to be applied * ``Warning`` = This component is not applying up-to-date policies (but is still applying the previous version) * ``Failure`` = An error has occurred and no policy is being applied * ``Disabled`` = This endpoint is disabled and will not handle traffic
'
type: string
enum:
- OK
- Bootstrap
- Pending
- Warning
- Failure
- Disabled
EndpointNetworking:
description: Unique identifiers for this endpoint from outside cilium
type: object
properties:
addressing:
description: IP4/6 addresses assigned to this Endpoint
type: array
items:
$ref: '#/definitions/AddressPair'
host-addressing:
$ref: '#/definitions/NodeAddressing'
host-mac:
description: MAC address
type: string
mac:
description: MAC address
type: string
interface-name:
description: Name of network device in host netns
type: string
interface-index:
description: Index of network device in host netns
type: integer
container-interface-name:
description: Name of network device in container netns
type: string
EndpointDatapathConfiguration:
description: Datapath configuration to be used for the endpoint
type: object
properties:
require-arp-passthrough:
description: Enable ARP passthrough mode
type: boolean
require-egress-prog:
description: 'Endpoint requires a host-facing egress program to be attached to implement ingress policy and reverse NAT.
'
type: boolean
external-ipam:
description: 'Indicates that IPAM is done external to Cilium. This will prevent the IP from being released and re-allocation of the IP address is skipped on restore.
'
type: boolean
require-routing:
description: 'Endpoint requires BPF routing to be enabled, when disabled, routing is delegated to Linux routing.
'
type: boolean
default: true
install-endpoint-route:
description: 'Installs a route in the Linux routing table pointing to the device of the endpoint''s interface.
'
type: boolean
disable-sip-verification:
description: 'Disable source IP verification for the endpoint.
'
type: boolean
EndpointStatus:
description: The current state and configuration of the endpoint, its policy & datapath, and subcomponents
type: object
required:
- state
properties:
external-identifiers:
description: Unique identifiers for this endpoint from outside cilium
$ref: '#/definitions/EndpointIdentifiers'
identity:
description: The security identity for this endpoint
$ref: '#/definitions/Identity'
labels:
description: Labels applied to this endpoint
$ref: '#/definitions/LabelConfigurationStatus'
realized:
description: The configuration in effect on this endpoint
$ref: '#/definitions/EndpointConfigurationSpec'
networking:
description: Networking properties of the endpoint
$ref: '#/definitions/EndpointNetworking'
policy:
description: The policy applied to this endpoint from the policy repository
$ref: '#/definitions/EndpointPolicyStatus'
log:
description: Most recent status log. See endpoint/{id}/log for the complete log.
$ref: '#/definitions/EndpointStatusLog'
controllers:
description: Status of internal controllers attached to this endpoint
$ref: '#/definitions/ControllerStatuses'
state:
description: Current state of endpoint
$ref: '#/definitions/EndpointState'
health:
description: Summary overall endpoint & subcomponent health
$ref: '#/definitions/EndpointHealth'
namedPorts:
description: List of named ports that can be used in Network Policy
$ref: '#/definitions/NamedPorts'
ControllerStatus:
description: 'Status of a controller
+k8s:deepcopy-gen=true'
type: object
properties:
name:
description: Name of controller
type: string
uuid:
description: UUID of controller
type: string
format: uuid
configuration:
description: 'Configuration of controller
+deepequal-gen=true
+k8s:deepcopy-gen=true'
type: object
properties:
interval:
description: Regular synchronization interval
type: string
format: duration
error-retry-base:
description: Base error retry back-off time
type: string
format: duration
error-retry:
description: Retry on error
type: boolean
status:
description: 'Current status of controller
+k8s:deepcopy-gen=true'
type: object
properties:
success-count:
description: Total number of successful runs
type: integer
last-success-timestamp:
description: Timestamp of last success
type: string
format: date-time
failure-count:
description: Total number of failed runs
type: integer
last-failure-timestamp:
description: Timestamp of last error
type: string
format: date-time
consecutive-failure-count:
description: Number of consecutive errors since last success
type: integer
last-failure-msg:
description: Error message of last failed run
type: string
EndpointState:
description: State of endpoint
type: string
enum:
- waiting-for-identity
- not-ready
- waiting-to-regenerate
- regenerating
- restoring
- ready
- disconnecting
- disconnected
- invalid
ProxyStatistics:
description: 'Statistics of a set of proxy redirects for an endpoint
+k8s:deepcopy-gen=true'
type: object
properties:
protocol:
description: Name of the L7 protocol
type: string
port:
description: The port subject to the redirect
type: integer
allocated-proxy-port:
description: The port the proxy is listening on
type: integer
location:
description: Location of where the redirect is installed
type: string
enum:
- ingress
- egress
statistics:
description: Statistics of this set of proxy redirect
$ref: '#/definitions/RequestResponseStatistics'
EndpointChangeRequest:
description: 'Structure which contains the mutable elements of an Endpoint.
'
type: object
required:
- state
properties:
id:
description: Local endpoint ID
type: integer
container-id:
description: ID assigned by container runtime
type: string
container-netns-path:
description: Path of Container Netns
type: string
labels:
description: Labels describing the identity
$ref: '#/definitions/Labels'
interface-name:
description: Name of network device in host netns
type: string
interface-index:
description: Index of network device in host netns
type: integer
parent-interface-index:
description: Index of network device from which an IP was used as endpoint IP. Only relevant for ENI environments.
type: integer
container-interface-name:
description: Name of network device in container netns
type: string
state:
description: Current state of endpoint
$ref: '#/definitions/EndpointState'
mac:
description: MAC address
type: string
host-mac:
description: MAC address
type: string
addressing:
$ref: '#/definitions/AddressPair'
k8s-pod-name:
description: Kubernetes pod name
type: string
k8s-namespace:
description: Kubernetes namespace name
type: string
k8s-uid:
description: Kubernetes pod UID
type: string
datapath-map-id:
description: ID of datapath tail call map
type: integer
policy-enabled:
description: Whether policy enforcement is enabled or not
type: boolean
pid:
description: Process ID of the workload belonging to this endpoint
type: integer
sync-build-endpoint:
description: 'Whether to build an endpoint synchronously
'
type: boolean
is-secondary-interface:
description: Whether this is a secondary pod interface
type: boolean
netns-cookie:
description: Network namespace cookie
type: string
datapath-configuration:
$ref: '#/definitions/EndpointDatapathConfiguration'
properties:
description: Properties is used to store information about the endpoint at creation. Useful for tests.
additionalProperties:
type: object
EndpointBatchDeleteRequest:
description: 'Properties selecting a batch of endpoints to delete.
'
type: object
properties:
container-id:
description: ID assigned by container runtime
type: string
Port:
description: 'Layer 4 port / protocol pair
+deepequal-gen=true'
type: object
properties:
protocol:
description: Layer 4 protocol
type: string
enum:
- TCP
- UDP
- SCTP
- ICMP
- ICMPV6
- ANY
port:
description: Layer 4 port number
type: integer
format: uint16
name:
description: Optional layer 4 port name
type: string
Error:
type: string
MessageForwardingStatistics:
description: Statistics of a message forwarding entity
type: object
properties:
received:
description: Number of messages received
type: integer
denied:
description: Number of messages denied
type: integer
error:
description: Number of errors while parsing messages
type: integer
forwarded:
description: Number of messages forwarded
type: integer
Endpoint:
description: An endpoint is a namespaced network interface to which cilium applies policies
type: object
properties:
id:
description: The cilium-agent-local ID of the endpoint
type: integer
spec:
description: The desired configuration state of the endpoint
$ref: '#/definitions/EndpointConfigurationSpec'
status:
description: The desired and realized configuration state of the endpoint
$ref: '#/definitions/EndpointStatus'
L4Policy:
description: L4 endpoint policy
type: object
properties:
ingress:
description: List of L4 ingress rules
type: array
items:
$ref: '#/definitions/PolicyRule'
egress:
description: List of L4 egress rules
type: array
items:
$ref: '#/definitions/PolicyRule'
EndpointConfigurationStatus:
description: An endpoint's configuration
type: object
properties:
realized:
description: currently applied changeable configuration
$ref: '#/definitions/EndpointConfigurationSpec'
immutable:
description: Immutable configuration (read-only)
$ref: '#/definitions/ConfigurationMap'
error:
description: Most recent error, if applicable
$ref: '#/definitions/Error'
ControllerStatuses:
description: Collection of controller statuses
type: array
items:
$ref: '#/definitions/ControllerStatus'
EndpointStatusChange:
description: 'Indication of a change of status
+deepequal-gen=true'
type: object
properties:
timestamp:
description: Timestamp when status change occurred
type: string
code:
description: Code indicate type of status change
type: string
enum:
- ok
- failed
message:
description: Status message
type: string
state:
$ref: '#/definitions/EndpointState'
parameters:
endpoint-batch-delete-request:
name: endpoint
in: body
required: true
schema:
$ref: '#/definitions/EndpointBatchDeleteRequest'
labels:
name: labels
description: 'List of labels
'
in: body
required: false
schema:
$ref: '#/definitions/Labels'
endpoint-change-request:
name: endpoint
in: body
required: true
schema:
$ref: '#/definitions/EndpointChangeRequest'
endpoint-id:
name: id
description: "String describing an endpoint with the format ``[prefix:]id``. If no prefix\nis specified, a prefix of ``cilium-local:`` is assumed. Not all endpoints\nwill be addressable by all endpoint ID prefixes with the exception of the\nlocal Cilium UUID which is assigned to all endpoints.\n\nSupported endpoint id prefixes:\n - cilium-local: Local Cilium endpoint UUID, e.g. cilium-local:3389595\n - cilium-global: Global Cilium endpoint UUID, e.g. cilium-global:cluster1:nodeX:452343\n - cni-attachment-id: CNI attachment ID, e.g. cni-attachment-id:22222:eth0\n - cep-name: cep name for this container if K8s is enabled,
# --- truncated at 32 KB (32 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/isovalent/refs/heads/main/openapi/isovalent-endpoint-api-openapi.yml